<?php 

class PzCreator{
	
	private $db;
	public $kontrahenci;
	
	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 getDocuments(){
		$query="select * from ecmstockdocins where deleted=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();

			$dokument->typ_dokumentu=(string)'PZ';
			
			$dokument->status_dokumentu=1;
			$dokument->status_rejestracji_fiskalnej=0;
			$dokument->numer_dokumentu=0;
			$dokument->numer_dokumentu_dostawcy=$dane['document_no'];
			$dokument->rozszerzenie_numeru=(string)"PZ";	
			$dokument->pelny_numer_dokumentu=$dane['document_no'];
			
			$dokument->numer_dokumentu_korygowanego=null;
			$dokument->data_wystawienia_korekty=null;
			$dane['parent_nip']=$kontrahent->to_vatid;
			$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="";
			$dokument->magazyn_docelowy=null;
			$a = new Account();
			$a->retrieve($dane['parent_id']);
			$a->name=str_replace("\r\n","",$a->name);
			$dane['parent_name']=str_replace("\r\n","",$dane['parent_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=str_replace("\n","",str_replace("\r\n","",$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=$a->billing_address_street;
			$dokument->nip=$dane['parent_nip'];
			
			$s = new EcmStock();
			$s->retrieve($dane['stock_id']);
			$dokument->kategoria=$s->name;
			$dokument->podtytul='';
			
			$dokument->data_wystawienia=date("Ymd000000",strtotime($dane['register_date']));
			$dokument->data_sprzedazy=date("Ymd000000",strtotime($dane['data_fk']));
			$dokument->data_otrzymania=date("Ymd000000",strtotime($dane['register_date']));
			
			$dokument->czy_dokumenty_wystawian_wg_ceny_netto=0;
			$dokument->wartosc_netto=(float)$dane['subtotal'];
			$dokument->wartosc_vat=(float)$dane['total_vat'];
			$dokument->wartosc_brutto=(float)$dane['subtotal'];
			$dokument->koszt=(float)$dane['subtotal'];
			$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)0;
			$dokument->wartosc_do_zaplaty=(float)0;
			
			$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;
			
				$dokument->waluta='PLN';
			
			
			$dokument->uwagi=str_replace("\r\n","",$dane['pdf_text']);
			$dokument->import_dokumentu=0;
		
			$dokument->rodzaj_transakcji=0;
		
			
			//$dokument->panstwo_kontrahenta=$a->billing_address_country;
			
	
			
			//$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;
		
	}
}
?>