168 lines
6.1 KiB
PHP
168 lines
6.1 KiB
PHP
<?php
|
|
|
|
class AmazonInvoiceCreator{
|
|
|
|
private $db;
|
|
public $kontrahenci;
|
|
private $date_from;
|
|
private $date_to;
|
|
|
|
public function __construct($date){
|
|
$this->db=$GLOBALS['db'];
|
|
$date = new DateTime($date);
|
|
$this->date_from = $date->format("Y-m-01");
|
|
$this->date_to=$date->format("Y-m-t");
|
|
$this->kontrahenci=[];
|
|
}
|
|
|
|
public function getInvoices(){
|
|
global $app_list_strings;
|
|
|
|
$query="select * from amazon_invoices where register_date >='".$this->date_from."' and register_date <='".$this->date_to."' order by register_date ASC LIMIT 0,1";
|
|
$rs = $this->db->query($query);
|
|
$documents=array();
|
|
while($dane = $this->db->fetchByAssoc($rs)){
|
|
$dokument = new Dokument();
|
|
$kontrahent = new Kontrahent();
|
|
|
|
$dokument->typ_dokumentu=(string)'FS';
|
|
$dokument->status_dokumentu=1;
|
|
$dokument->status_rejestracji_fiskalnej=0;
|
|
$dokument->numer_dokumentu=0;
|
|
$dokument->numer_dokumentu_dostawcy=$dane['document_no'];
|
|
$dokument->rozszerzenie_numeru=(string)"FS"; // ??
|
|
$dokument->pelny_numer_dokumentu=$dane['document_no']; // OK
|
|
$dokument->numer_dokumentu_korygowanego=null;
|
|
$dokument->data_wystawienia_korekty=null;
|
|
|
|
|
|
$letters = substr($dane['parent_nip'],0,2); // OK
|
|
if(ctype_alpha ($letters)){
|
|
$rest = substr($dane['parent_nip'],2);
|
|
$dane['parent_nip']=$letters.' '.$rest;
|
|
}
|
|
$dokument->numer_zamowienia=$dane['order_no']; // OK
|
|
$dokument->magazyn_docelowy=null;
|
|
|
|
$kontrahent->typ_kontrahenta=(float)0;
|
|
$kontrahent->kod_identyfikacyjny=(string)''; // ??? Imię+Nazwisko ??
|
|
$kontrahent->nazwa_skrocona=mb_substr($dane['parent_name'],0,40,'UTF-8'); // ??!!
|
|
$kontrahent->nazwa_pelna=str_replace("\r\n","",$dane['parent_name']); // ??!!
|
|
$kontrahent->miasto=$dane['parent_address_city']; // OK
|
|
$kontrahent->kod_pocztowy=mb_substr($dane['parent_address_postalcode'],0,6,'UTF-8'); // OK
|
|
$kontrahent->ulica_i_adres=$dane['parent_address_street']; // ?????
|
|
$kontrahent->nip=$dane['parent_nip']; // OK
|
|
|
|
if($dane['parent_address_country_code']=='PL'){ // TYLKO UNIA????
|
|
$kontrahent->czy_unijny=0;
|
|
} else {
|
|
$kontrahent->czy_unijny=1;
|
|
}
|
|
$this->kontrahenci[]=$kontrahent;
|
|
$dokument->kod_identyfikacyjny_kontrahenta=mb_substr($dane['parent_name'],0,40,'UTF-8');
|
|
$dokument->nazwa_skrocona=mb_substr($dane['parent_name'],0,40,'UTF-8');
|
|
$dokument->nazwa_pelna=str_replace("\r\n","",$dane['parent_name']);
|
|
$dokument->miasto=$dane['parent_address_city']; //OK
|
|
$dokument->kod_pocztowy=mb_substr($dane['parent_address_postalcode'],0,6,'UTF-8'); //OK
|
|
$dokument->ulica_i_numer=$dane['parent_address_street']; // ?????
|
|
$dokument->nip=$dane['parent_nip']; // OK
|
|
|
|
$dokument->kategoria="Sprzedaż";
|
|
$dokument->podtytul=null;
|
|
|
|
$dokument->data_wystawienia=date("Ymd000000",strtotime($dane['register_date'])); // OK
|
|
$dokument->data_sprzedazy=date("Ymd000000",strtotime($dane['sell_date'])); // OK
|
|
$dokument->data_otrzymania=date("Ymd000000",strtotime($dane['register_date'])); // OK
|
|
|
|
$dokument->czy_dokumenty_wystawian_wg_ceny_netto=0;
|
|
$dokument->wartosc_netto=(float)$dane['total_netto']; // OK
|
|
$dokument->wartosc_vat=(float)$dane['total_vat'];
|
|
$dokument->wartosc_brutto=(float)$dane['total_brutto']; // OK
|
|
$dokument->koszt=(float)$dane['purchase_price']; // niepotrzebne
|
|
|
|
//$dokument->rabat_format_platnosci=$app_list_strings['payment_method'][$dane['payment_method']]; // KONIECZNE??
|
|
//$dokument->rabat_termin_platnosci=date("Ymd000000",strtotime($dane['payment_date'])); // J/W
|
|
|
|
$dokument->kwota_zaplacona_przy_odbiorze=(float)$dane['paid_val']; // CHYBA 0
|
|
$dokument->wartosc_do_zaplaty=(float)round($dane['total_brutto'],2); // OK
|
|
|
|
$dokument->zaokraglenie_wartosci_do_zaplaty=0;
|
|
$dokument->zaokraglenie_wartosci_vat=0;
|
|
|
|
$dokument->automatyczne_zaokgraglanie=0;
|
|
$dokument->statusy_rozszerzone_i_specjalne=0;
|
|
$u = new User();
|
|
$u->retrieve($dane['assigned_user_id']);
|
|
$dokument->nazwisko_i_imie_wystawcy=$u->full_name; // nie potrzebne
|
|
|
|
if($dane['currency_id']=="PLN"){
|
|
$dokument->waluta='PLN';
|
|
|
|
} else {
|
|
$cur = new Currency();
|
|
$cur->retrieve($dane['currency_id']);
|
|
|
|
$dokument->waluta=$cur->name;
|
|
$dokument->kurs_waluty=(float)$dane['currency_value_nbp']; // POBIERAMY Z NBP ?? REWIZOR SAM UZUPEŁNI??
|
|
}
|
|
|
|
$dokument->uwagi=null;
|
|
$dokument->import_dokumentu=0;
|
|
|
|
// czy będą inne niz unia ?
|
|
if($dane['pdf_type']=='K'){
|
|
$dokument->rodzaj_transakcji=0;
|
|
} else {
|
|
if($dane['pdf_type']=='U'){
|
|
$dokument->rodzaj_transakcji=2;
|
|
} else {
|
|
$dokument->rodzaj_transakcji=1;
|
|
}
|
|
}
|
|
|
|
$dokument->panstwo_kontrahenta=$a->billing_address_country; // tutaj państwo konsumpcji
|
|
|
|
if($a->invoice_type=='U'){
|
|
$dokument->prefix_panstwa_ue=mb_substr($a->to_vatid,0,2,'UTF-8');
|
|
$dokument->czy_kontrahent_unijny=1;
|
|
}
|
|
|
|
$dokument->setPozycjeObiekt($this->getDocumentPositions($dane['id'],$dokument));
|
|
|
|
$documents[]=$dokument;
|
|
|
|
}
|
|
print_r(count($documents));
|
|
return $documents;
|
|
}
|
|
|
|
public function getDocumentPositions($id,&$doc){
|
|
$query="select * from amazon_invoices_products where amazon_invoice_id='".$id."'";
|
|
|
|
$rr=$this->db->query($query);
|
|
|
|
$pozycje=[];
|
|
while($dane=$this->db->fetchByAssoc($rr)){
|
|
|
|
$pozycja = new Pozycja;
|
|
$pozycja->symbol_stawki_vat = str_replace(".00","",$dane ['ecmvat_value']);
|
|
$pozycja->wysokosc_stawki_vat_w_procentach = floatval ($dane ['ecmvat_value'] . '.00');
|
|
|
|
$pozycja->wartosc_netto = floatval($dane ['total_netto']);
|
|
$pozycja->wartosc_vat = floatval($dane ['total_vat']);
|
|
$pozycja->wartosc_brutto = floatval($dane ['total_netto'])+floatval($dane ['total_vat']);
|
|
|
|
$pozycja->wartosc_nabycia = round ( $dane ['price_purchase'] * $dane ['quantity'], 2 ); // ?????
|
|
$pozycje[$dane ['ecmvat_value']]=$pozycja;
|
|
|
|
}
|
|
$pozycja->wartosc_brutto=round((($pozycja->wartosc_netto*$pozycja->wysokosc_stawki_vat_w_procentach)/100)+$pozycja->wartosc_netto,2);
|
|
$pozycja->wartosc_vat=round((($pozycja->wartosc_netto*$pozycja->wysokosc_stawki_vat_w_procentach)/100),2);
|
|
|
|
$doc->pozycje=count($pozycja);
|
|
|
|
return $pozycje;
|
|
|
|
}
|
|
}
|
|
?>
|