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(){ $query="select * from ecminvoiceouts where deleted=0 and canceled=0 and register_date >='".$this->date_from."' and register_date <='".$this->date_to."' order by document_no ASC"; $rs = $this->db->query($query); global $app_list_strings; $documents=array(); while($dane = $this->db->fetchByAssoc($rs)){ $dokument = new Dokument(); $kontrahent = new Kontrahent(); if($dane['type']=='correct'){ $dokument->typ_dokumentu=(string)'KFS'; } else { $dokument->typ_dokumentu=(string)'FS'; } $dokument->status_dokumentu=($dane['canceled']==true? 2 :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']; if($dane['type']=='correct'){ $ii = new EcmInvoiceOut(); $ii->retrieve($dane['ecminvoiceout_id']); $dokument->numer_dokumentu_korygowanego=$ii->document_no; $dokument->data_wystawienia_korekty=date("Ymd000000",strtotime($dane['register_date'])); $dokument->wartosc_wydanych_opakowan=0; $dokument->wartosc_zwroconych_opakowan=0; if($dokument->numer_dokumentu_korygowanego==""){ $dokument->numer_dokumentu_korygowanego='Korekta zbiorcza'; } } else { $dokument->numer_dokumentu_korygowanego=null; $dokument->data_wystawienia_korekty=null; } $letters = substr($dane['parent_nip'],0,2); if(ctype_alpha ($letters)){ $rest = substr($dane['parent_nip'],2); $dane['parent_nip']=$letters.' '.$rest; } $dokument->numer_zamowienia=$dane['order_no']; $dokument->magazyn_docelowy=null; $a = new Account(); $a->retrieve($dane['parent_id']); $a->name=str_replace("\r\n","",$a->name); $kontrahent->typ_kontrahenta=(float)0; $kontrahent->kod_identyfikacyjny=$a->number; $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']; $kontrahent->kod_pocztowy=$a->billing_address_postalcode; $kontrahent->ulica_i_adres=$dane['parent_address_street']; $kontrahent->nip=$dane['parent_nip']; if($a->invoice_type=='U'){ $kontrahent->prefix=mb_substr($a->to_vatid,0,2,'UTF-8'); $kontrahent->czy_unijny=1; } else { $kontrahent->czy_unijny=0; } $this->kontrahenci[$a->id]=$kontrahent; $dokument->kod_identyfikacyjny_kontrahenta=$a->number; $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']; $dokument->kod_pocztowy=$a->billing_address_postalcode; $dokument->ulica_i_numer=$dane['parent_address_street']; $dokument->nip=$dane['parent_nip']; $dokument->kategoria="Sprzedaż"; $dokument->podtytul=null; $dokument->data_wystawienia=date("Ymd000000",strtotime($dane['register_date'])); $dokument->data_sprzedazy=date("Ymd000000",strtotime($dane['sell_date'])); $dokument->data_otrzymania=date("Ymd000000",strtotime($dane['register_date'])); $dokument->czy_dokumenty_wystawian_wg_ceny_netto=0; $dokument->wartosc_netto=(float)$dane['total_netto']; $dokument->wartosc_vat=(float)$dane['total_vat']; $dokument->wartosc_brutto=(float)$dane['total_brutto']; $dokument->koszt=(float)$dane['purchase_price']; $dokument->rabat_format_platnosci=$app_list_strings['payment_method'][$dane['payment_method']]; $dokument->rabat_termin_platnosci=date("Ymd000000",strtotime($dane['payment_date'])); $dokument->kwota_zaplacona_przy_odbiorze=(float)$dane['paid_val']; $dokument->wartosc_do_zaplaty=(float)round($dane['total_brutto'],2); $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; 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']; } $dokument->uwagi=str_replace("\r\n","",$dane['pdf_text']); $dokument->import_dokumentu=0; 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; 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; } return $documents; } public function getDocumentPositions($id,&$doc){ $query="select * from ecminvoiceoutitems where ecminvoiceout_id='".$id."' and deleted=0"; $rr=$this->db->query($query); $pozycje=[]; while($dane=$this->db->fetchByAssoc($rr)){ if($pozycje[$dane ['ecmvat_value']]!=""){ $obiekt = $pozycje[$dane ['ecmvat_value']]; if ($doc->typ_dokumentu!= 'FS') { $obiekt->wartosc_netto+= $dane ['total_netto_corrected']; $obiekt->wartosc_vat+= $dane ['total_vat_corrected']; $obiekt->wartosc_brutto+= $dane ['total_brutto_corrected']; } else { $obiekt->wartosc_netto+= $dane ['total_netto']; $obiekt->wartosc_vat+= $dane ['total_vat']; $obiekt->wartosc_brutto+= $dane ['total_brutto']; } $obiekt->wartosc_nabycia+= round ( $dane ['price_purchase'] * $dane ['quantity'], 2 ); $pozycje[$dane ['ecmvat_value']]=$obiekt; } else { $pozycja = new Pozycja; $pozycja->symbol_stawki_vat = $dane ['ecmvat_value']; $pozycja->wysokosc_stawki_vat_w_procentach = floatval ($dane ['ecmvat_value'] . '.00'); if ($doc->typ_dokumentu!= 'FS') { $pozycja->wartosc_netto =floatval($dane ['total_netto_corrected']); $pozycja->wartosc_vat = floatval($dane ['total_vat_corrected']); $pozycja->wartosc_brutto =floatval($dane ['total_brutto_corrected']); } else { $pozycja->wartosc_netto = floatval($dane ['total_netto']); $pozycja->wartosc_vat = floatval($dane ['total_vat']); $pozycja->wartosc_brutto = floatval($dane ['total_brutto']); } $pozycja->wartosc_nabycia = round ( $dane ['price_purchase'] * $dane ['quantity'], 2 ); $pozycje[$dane ['ecmvat_value']]=$pozycja; } } $doc->pozycje=count($pozycja); return $pozycje; } } ?>