Files
crm.e5.pl/modules/EcmReports/optima/ExportOptima.php
2024-04-27 09:23:34 +02:00

1059 lines
39 KiB
PHP

<?php
require_once 'modules/EcmReports/optima/OptimaXML.php';
ini_set('display_errors',1);
Class SimpleXMLExtended extends SimpleXMLElement {
/**
* Adds a child with $value inside CDATA
* @param unknown $name
* @param unknown $value
*/
public function addCData($cdata_text){
$node= dom_import_simplexml($this);
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection($cdata_text));
}
}
class ExportOptima {
private $date_from;
private $date_to;
private $db;
private $optimaXML;
private $XMLObject;
public function __construct($date, OptimaXML $optimaXML) {
$date = new DateTime ( $date );
$this->date_from = $date->format ( "Y-m-01" );
$this->date_to = $date->format ( "Y-m-t" );
$this->db = $GLOBALS ['db'];
$this->optimaXML = $optimaXML;
}
public function loadXmlObject() {
$this->optimaXML->generateStartXMl ()->loadXml ();
}
public function addAccounts() {
global $app_list_strings;
$payment_methods = $app_list_strings ['payment_method_dom'];
$fpn = new SimpleXMLExtended ( '<KONTRAHENCI></KONTRAHENCI>' );
$fpn->addChild ( 'WERSJA', OptimaXMLConstant::WERSJA );
$fpn->addChild ( 'BAZA_ZRD_ID', OptimaXMLConstant::BAZA_ZRD_ID );
$fpn->addChild ( 'BAZA_DOC_ID', OptimaXMLConstant::BAZA_DOC_ID );
$i=0;
foreach ( $this->getAccounts() as $value ) {
$fpn = $this->addAccount ( $value, $fpn );
}
$this->xml_adopt ( $this->optimaXML->basicXML, $fpn );
}
public function addAccount($acc, $fpn) {
$header = new SimpleXMLExtended ( '<KONTRAHENT></KONTRAHENT>',LIBXML_NOEMPTYTAG);
$fpe = $header->addChild ( 'KONTRAHENT' );
global $app_list_strings;
$this->addIfNotEmpty ( $fpe, 'ID_ZRODLA', $acc->id );
$this->addIfNotEmpty ( $fpe, 'AKRONIM', $acc->number);
$this->addIfNotEmpty ( $fpe, 'RODZAJ', strtolower($app_list_strings['account_type2_dom'][$acc->account_type]) );
$this->addIfNotEmpty ( $fpe, 'CHRONIONY', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'MEDIALNY', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'ROLNIK', 'Nie' );
if ($acc->invoice_type== 'K') {
$export = 'krajowy';
} else if ($acc->invoice_type== 'U') {
$export = 'wewnątrzunijny';
} else if ($acc->invoice_type== 'E') {
$export = 'pozaunijny';
}
$this->addIfNotEmpty ( $fpe, 'EKSPORT', $export );
$this->addIfNotEmpty ( $fpe, 'FINALNY',($acc->natural_person==1 ? 'Tak' : 'Nie'));
$this->addIfNotEmpty ( $fpe, 'PLATNIK_VAT', ($acc->vat_payer==1 ? 'Tak' : 'Nie'));
$this->addIfNotEmpty ( $fpe, 'POWIAZANY_UOV', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'NIEAKTYWNY', 'Nie' );
$adresy = $fpe->addChild ( 'ADRESY' );
global $app_list_strings;
$header = new SimpleXMLExtended ( '<ADRES></ADRES>' );
$fpc = $header->addChild ( 'ADRES' );
$fpc->addChild ( 'STATUS','aktualny' );
$this->addIfNotEmpty ( $fpc, 'GLN', $acc->sic_code);
$acc_name = $acc->name;
if (strlen ( $acc_name ) > 50) {
$this->addIfNotEmpty ( $fpc, 'NAZWA1', mb_substr( $acc_name, 0, 50,'UTF-8' ) );
if (strlen ( $acc_name ) > 100) {
$this->addIfNotEmpty ( $fpc, 'NAZWA2', mb_substr( $acc_name, 50, 50,'UTF-8' ) );
$this->addIfNotEmpty ( $fpc, 'NAZWA3', mb_substr( $acc_name, 100,null,'UTF-8' ) );
} else {
$this->addIfNotEmpty ( $fpc, 'NAZWA2', mb_substr( $acc_name, 50,null,'UTF-8' ) );
}
} else {
$this->addIfNotEmpty ( $fpc, 'NAZWA1', $acc_name );
}
$acc->to_vatid=str_replace(" ","",str_replace("-","",$acc->to_vatid));
if ($acc->invoice_type == "K") {
$this->addIfNotEmpty ( $fpc, 'NIP_KRAJ', 'PL' );
$this->addIfNotEmpty ( $fpc, 'NIP', $acc->to_vatid );
} else {
$this->addIfNotEmpty ( $fpc, 'NIP_KRAJ', mb_substr( $acc->to_vatid, 0, 2,'UTF-8' ) );
$replace=mb_substr( $acc->to_vatid, 0, 2,'UTF-8' );
$this->addIfNotEmpty ( $fpc, 'NIP', str_replace($replace,'',$acc->to_vatid) );
}
if($acc->parent_id!=""){
$payer = new Account();
$payer->retrieve($acc->parent_id);
$this->addIfNotEmpty ( $fpc, 'TYP_PLATNIKA','kontrahent' );
# $this->addIfNotEmpty ( $fpc, 'PLATNIK', $acc->to_vatid );
$this->addIfNotEmpty ( $fpc, 'PLATNIK_ID', $payer->id );
$this->addIfNotEmpty ( $fpc, 'PLATNIK_NIP',$payer->to_vatid);
}
$acc->billing_address_street=str_replace("\r\n","",$acc->billing_address_street);
preg_match ( '/^([^\d]*[^\d\s]) *(\d.*)$/', $acc->billing_address_street, $matches );
$this->addIfNotEmpty ( $fpc, 'KRAJ', $acc->billing_address_country );
$this->addIfNotEmpty ( $fpc, 'WOJEWODZTWO', $acc->billing_address_state );
// $fpe->addChild('POWIAT',$acc->to_vatid);
$this->addIfNotEmpty ( $fpc, 'GMINA', $acc->billing_address_ecmcommune_name );
$this->addIfNotEmpty ( $fpc, 'ULICA', $matches [1] );
$numbers = $this->findHomeAndLocale ( $matches [2] );
$this->addIfNotEmpty ( $fpc, 'NR_DOMU', $numbers [0] );
$this->addIfNotEmpty ( $fpc, 'NR_LOKALU', $numbers [1] );
$this->addIfNotEmpty ( $fpc, 'MIASTO', $acc->billing_address_city );
$this->addIfNotEmpty ( $fpc, 'KOD_POCZTOWY', $acc->billing_address_postalcode );
$this->xml_adopt ( $adresy, $fpc );
$this->xml_adopt ( $fpn, $fpe );
return $fpn;
}
public function addInvoiceDocuments() {
global $app_list_strings;
$this->getInvoicesObject ();
$payment_methods = $app_list_strings ['payment_method_dom'];
$fpn = new SimpleXMLExtended ( '<REJESTRY_SPRZEDAZY_VAT></REJESTRY_SPRZEDAZY_VAT>' );
$fpn->addChild ( 'WERSJA', OptimaXMLConstant::WERSJA );
$fpn->addChild ( 'BAZA_ZRD_ID', OptimaXMLConstant::BAZA_ZRD_ID );
$fpn->addChild ( 'BAZA_DOC_ID', OptimaXMLConstant::BAZA_DOC_ID );
$i=0;
foreach ( $this->getInvoicesObject () as $value ) {
$fpn = $this->addInvoiceDocument ( $value, $fpn );
}
$this->xml_adopt ( $this->optimaXML->basicXML, $fpn );
}
public function addInvoiceDocument($value, $fpn) {
$header = new SimpleXMLExtended ( '<REJESTR_SPRZEDAZY_VAT></REJESTR_SPRZEDAZY_VAT>' );
$fpe = $header->addChild ( 'REJESTR_SPRZEDAZY_VAT' );
$this->addIfNotEmpty ( $fpe, 'ID_ZRODLA', $value->id );
$this->addIfNotEmpty ( $fpe, 'MODUL', 'HANDEL' );
$this->addIfNotEmpty ( $fpe, 'REJESTR', 'SPRZEDAŻ' );
$this->addIfNotEmpty ( $fpe, 'DATA_WYSTAWIENIA', date ( "Y-m-d", strtotime ( $value->register_date ) ) );
$this->addIfNotEmpty ( $fpe, 'DATA_SPRZEDAZY', date ( "Y-m-d", strtotime ( $value->sell_date ) ) );
$this->addIfNotEmpty ( $fpe, 'TERMIN', date ( "Y-m-d", strtotime ( $value->payment_date ) ) );
$this->addIfNotEmpty ( $fpe, 'NUMER', $value->document_no );
$this->addIfNotEmpty ( $fpe, 'KOREKTA', ($value->type == 'normal' ? 'Nie' : 'Tak') );
if ($value->type == 'correct') {
$cor = new EcmInvoiceOut ();
$cor->retrieve ( $value->ecminvoiceout_id );
$this->addIfNotEmpty ( $fpe, 'KOREKTA_NUMER', $cor->document_no );
$this->addIfNotEmpty ( $fpe, 'TYP', 'Faktura sprzedaży' );
} else {
$this->addIfNotEmpty ( $fpe, 'TYP', 'Faktura sprzedaży' );
}
$this->addIfNotEmpty ( $fpe, 'WEWNETRZNA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'METODA_KASOWA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'FISKALNA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'DETALICZNA', 'Nie' );
if ($value->pdf_type == 'K') {
$dek_7 = date ( "Ym", strtotime ( $value->register_date ) );
$dek_ue = "Nie";
$export = 'nie';
} else if ($value->pdf_type == 'U') {
$dek_7 = "";
$dek_ue = 'Tak';
$export = 'wewnątrzunijny';
} else if ($value->pdf_type == 'E') {
$export = 'tak';
$dek_7 = date ( "Ym", strtotime ( $value->register_date ) );
$dek_ue = 'Nie';
}
$this->addIfNotEmpty ( $fpe, 'EKSPORT', $export );
$acc = new Account ();
$acc->retrieve ( $value->parent_id );
$this->addIfNotEmpty ( $fpe, 'FINALNY', ($acc->natural_person ? 'Tak' : 'Nie') );
$this->addIfNotEmpty ( $fpe, 'PODATNIK_CZYNNY', ($acc->vat_payer ? 'Tak' : 'Nie') );
$this->addIfNotEmpty ( $fpe, 'TYP_PODMIOTU', 'kontrahent' );
$this->addIfNotEmpty ( $fpe, 'PODMIOT',trim(preg_replace('/\s+/', ' ', $acc->name)));
$this->addIfNotEmpty ( $fpe, 'PODMIOT_ID', $acc->id );
if ($acc->invoice_type == "K") {
$this->addIfNotEmpty ( $fpe, 'PODMIOT_NIP', $acc->to_vatid );
} else {
$replace= substr ( $acc->to_vatid, 0, 2 ) ;
$this->addIfNotEmpty ( $fpe, 'PODMIOT_NIP', str_replace($replace,"",$acc->to_vatid) );
}
$acc_name = trim(preg_replace('/\s+/', ' ', $acc->name));
if (strlen ( $acc_name ) > 50) {
$this->addIfNotEmpty ( $fpe, 'NAZWA1', mb_substr ( $acc_name, 0, 50,'UTF-8' ) );
if (strlen ( $acc_name ) > 100) {
$this->addIfNotEmpty ( $fpe, 'NAZWA2', mb_substr( $acc_name, 50, 50,'UTF-8' ) );
$this->addIfNotEmpty ( $fpe, 'NAZWA3', mb_substr( $acc_name, 100,null,'UTF-8' ) );
} else {
$this->addIfNotEmpty ( $fpe, 'NAZWA2', mb_substr( $acc_name, 50,null,'UTF-8' ) );
}
} else {
$this->addIfNotEmpty ( $fpe, 'NAZWA1', $acc_name );
}
if ($acc->invoice_type == "K") {
$this->addIfNotEmpty ( $fpe, 'NIP_KRAJ', 'PL' );
$this->addIfNotEmpty ( $fpe, 'NIP', $acc->to_vatid );
} else {
$this->addIfNotEmpty ( $fpe, 'NIP_KRAJ', substr ( $acc->to_vatid, 0, 2 ) );
$replace= substr ( $acc->to_vatid, 0, 2 ) ;
$this->addIfNotEmpty ( $fpe, 'NIP', str_replace($replace,"",$acc->to_vatid) );
}
$acc->billing_address_street=trim(preg_replace('/\s+/', ' ', $acc->billing_address_street));
preg_match ( '/^([^\d]*[^\d\s]) *(\d.*)$/', $acc->billing_address_street, $matches );
$this->addIfNotEmpty ( $fpe, 'KRAJ', $acc->billing_address_country );
$this->addIfNotEmpty ( $fpe, 'WOJEWÓDZTWO', $acc->billing_address_state );
// $fpe->addChild('POWIAT',$acc->to_vatid);
$this->addIfNotEmpty ( $fpe, 'GMINA', $acc->billing_address_ecmcommune_name );
$this->addIfNotEmpty ( $fpe, 'ULICA', $matches [1] );
$numbers = $this->findHomeAndLocale ( $matches [2] );
$this->addIfNotEmpty ( $fpe, 'NR_DOMU', $numbers [0] );
$this->addIfNotEmpty ( $fpe, 'NR_LOKALU', $numbers [1] );
$this->addIfNotEmpty ( $fpe, 'MIASTO', $acc->billing_address_city );
$this->addIfNotEmpty ( $fpe, 'KOD_POCZTOWY', $acc->billing_address_postalcode );
if($value->parent_payer_address_name!=""){
$obj= new Account();
$obj->retrieve_by_string_fields(['to_vatid'=>$value->parent_payer_address_nip]);
$this->addIfNotEmpty ( $fpe, 'PLATNIK_ID', $obj->id );
$this->addIfNotEmpty ( $fpe, 'PLATNIK_NIP',$value->parent_payer_address_nip);
} else {
$this->addIfNotEmpty ( $fpe, 'PLATNIK_ID', $value->parent_id );
$this->addIfNotEmpty ( $fpe, 'PLATNIK_NIP',$value->parent_nip);
}
$this->addIfNotEmpty ( $fpe, 'DEKLARACJA_VAT7', $dek_7 );
$this->addIfNotEmpty ( $fpe, 'DEKLARACJA_VATUE', $dek_ue );
if ($value->currency_id!='PLN') {
$cur = new Currency ();
$cur->retrieve ( $value->currency_id );
$date = $this->getCurrencyDate ( $value->currency_table, $cur->id );
$this->addIfNotEmpty ( $fpe, 'WALUTA', $cur->name );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY', '' . $value->currency_value_nbp );
$this->addIfNotEmpty ( $fpe, 'DATA_KURSU', date ( "Y-m-d", strtotime ( $date ) ) );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ILE', $value->currency_value_nbp );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE', $value->currency_value_nbp );
$this->addIfNotEmpty ( $fpe, 'KURS_DO_KSIEGOWANIA', 'Nie' );
} else {
$this->addIfNotEmpty ( $fpe, 'WALUTA', '' );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY', 'NBP' );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ILE', '1' );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE', '1' );
$this->addIfNotEmpty ( $fpe, 'KURS_DO_KSIEGOWANIA', "Nie" );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY_2', 'NBP' );
}
$this->addIfNotEmpty ( $fpe, 'PLATNOSC_VAT_W_PLN', "Nie" );
$this->addIfNotEmpty ( $fpe, 'JPK_FA', "Tak" );
$this->addIfNotEmpty ( $fpe, 'AKCYZA_NA_WEGIEL', "Nie" );
$this->addIfNotEmpty ( $fpe, 'DEKLARACJA_VAT27', "Nie" );
$this->addIfNotEmpty ( $fpe, 'WARTOSC_ZAKUPU', $value->purchase_price );
$this->addInvoicePositions ( $fpe, $value );
$platnosci = $fpe->addChild ( 'PLATNOSCI' );
$header = new SimpleXMLExtended ( '<PLATNOSC></PLATNOSC>', LIBXML_NOEMPTYTAG);
$platnosc = $header->addChild ( 'PLATNOSC' );
$platnosc->addChild ( 'ID_ZRODLA_PLAT',$value->id);
$platnosc->addChild ( 'TERMIN_PLAT',date("Y-m-d",strtotime($value->payment_date)));
if($value->payment_method=='PRZELEW'){
$forma='przelew';
}
if($value->payment_method=='GOTÓWKĄ'){
$forma='gotówka';
} else {
$forma='przelew';
}
$platnosc->addChild ( 'FORMA_PLATNOSCI_PLAT',$forma);
$platnosc->addChild ( 'FORMA_PLATNOSCI_ID_PLAT',$value->parent_id);
if($value->type=='correct'){
$platnosc->addChild ( 'KWOTA_PLAT',abs($value->total_brutto));
} else {
$platnosc->addChild ( 'KWOTA_PLAT',$value->total_brutto);
}
if ($value->currency_id!='PLN') {
$platnosc->addChild ('WALUTA_PLAT',$cur->name);
$platnosc->addChild ('WALUTA_DOK',$cur->name);
$platnosc->addChild ('KURS_WALUTY_PLAT','NBP');
$platnosc->addChild ('NOTOWANIE_WALUTY_ILE_PLAT',$value->currency_value_nbp);
$platnosc->addChild ('NOTOWANIE_WALUTY_ZA_ILE_PLAT',$value->currency_value_nbp);
if($value->type=='correct'){
$platnosc->addChild ( 'KWOTA_PLN_PLAT',abs(round($value->total_brutto*$value->currency_value_nbp,2)));
} else {
$platnosc->addChild ( 'KWOTA_PLN_PLAT',round($value->total_brutto*$value->currency_value_nbp,2));
}
$date = $this->getCurrencyDate ( $value->currency_table, $cur->id );
$this->addIfNotEmpty ( $platnosc, 'DATA_KURSU_PLAT', date ( "Y-m-d", strtotime ( $date ) ) );
} else {
$platnosc->WALUTA_PLAT='<![CDATA[]]>';
$platnosc->WALUTA_DOK='<![CDATA[]]>';
$platnosc->addChild ('KURS_WALUTY_PLAT','NBP');
$platnosc->addChild ('NOTOWANIE_WALUTY_ILE_PLAT','1');
$platnosc->addChild ('NOTOWANIE_WALUTY_ZA_ILE_PLAT','1');
if($value->type=='correct'){
$platnosc->addChild ( 'KWOTA_PLN_PLAT',abs($value->total_brutto));
} else {
$platnosc->addChild ( 'KWOTA_PLN_PLAT',$value->total_brutto);
}
}
$platnosc->addChild ( 'KIERUNEK','przychód');
$platnosc->addChild ( 'PODLEGA_ROZLICZENIU','tak');
//$platnosc->addChild ( 'KONTO','');
$platnosc->addChild ( 'NIE_NALICZAJ_ODSETEK','Nie');
$platnosc->addChild ( 'PRZELEW_SEPA','Nie');
// $platnosc->addChild ( 'DATA_KURSU_PLAT','przychód');
$platnosc->addChild ( 'PLATNOSC_TYP_PODMIOTU','kontrahent');
if($value->parent_payer_address_name!=""){
$obj= new Account();
$obj->retrieve_by_string_fields(['to_vatid'=>$value->parent_payer_address_nip]);
$platnosc->addChild ( 'PLATNOSC_PODMIOT',$obj->name);
$platnosc->addChild ( 'PLATNOSC_PODMIOT_ID',$obj->id );
$platnosc->addChild ( 'PLATNOSC_PODMIOT_NIP',$value->parent_payer_address_nip);
} else {
$platnosc->addChild ( 'PLATNOSC_PODMIOT',$value->parent_name);
$platnosc->addChild ( 'PLATNOSC_PODMIOT_ID',$value->parent_id);
$platnosc->addChild ( 'PLATNOSC_PODMIOT_NIP',$value->p);
}
/*
$platnosc->addChild ( 'PLAT_ELIXIR_O1','');
$platnosc->addChild ( 'PLAT_ELIXIR_O2','');
$platnosc->addChild ( 'PLAT_ELIXIR_O3','');
$platnosc->addChild ( 'PLAT_ELIXIR_O4','');
*/
$this->xml_adopt ( $platnosci, $platnosc);
//$this->xml_adopt ( $fpe, $platnosci);
$this->xml_adopt ( $fpn, $fpe );
return $fpn;
}
public function addInvoicePositions($node, $object) {
$pozycje = $node->addChild ( 'POZYCJE' );
$positions = $object->getPositionList ( true );
global $app_list_strings;
foreach ( $positions as $position ) {
$header = new SimpleXMLExtended ( '<POZYCJA></POZYCJA>' );
$fpe = $header->addChild ( 'POZYCJA' );
if($object->type=='correct'){
$fpe->addChild ( 'STAWKA_VAT', str_replace("%","",$position ['ecmvat_name'] ));
$fpe->addChild ( 'STATUS_VAT', 'opodatkowana' );
$fpe->addChild ( 'NETTO', $position ['total_netto_corrected'] );
$fpe->addChild ( 'VAT', $position ['total_vat_corrected'] );
$fpe->addChild ( 'NETTO_SYS', round ( $position ['total_netto_corrected'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
$fpe->addChild ( 'VAT_SYS', round ( $position ['total_vat_corrected'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
$fpe->addChild ( 'NETTO_SYS2', round ( $position ['total_netto_corrected'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
$fpe->addChild ( 'VAT_SYS2', round ( $position ['total_vat_corrected'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
if($position['product_ks_group']=='1'){
$typeP='towary';
}
if($position['product_ks_group']=='2'){
$typeP='towary';
}
if($position['product_ks_group']=='3'){
$typeP='towary';
}
if($position['product_ks_group']=='4'){
$typeP='środki transportu';
}
$cdata=$fpe->addChild( 'RODZAJ_SPRZEDAZY');
$cdata->addCData($typeP);
} else {
$fpe->addChild ( 'STAWKA_VAT', str_replace("%","",$position ['ecmvat_name'] ));
$fpe->addChild ( 'STATUS_VAT', 'opodatkowana' );
$fpe->addChild ( 'NETTO',round ( $position ['total_netto'], 2 ));
$fpe->addChild ( 'VAT', round ( $position ['total_vat'], 2 ) );
$fpe->addChild ( 'NETTO_SYS', round ( $position ['total_netto'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
$fpe->addChild ( 'VAT_SYS', round ( $position ['total_vat'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
$fpe->addChild ( 'NETTO_SYS2', round ( $position ['total_netto'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
$fpe->addChild ( 'VAT_SYS2', round ( $position ['total_vat'] * ($object->currency_value_nbp!="0" ? $object->currency_value_nbp : '1'), 2 ) );
if($position['product_ks_group']=='1'){
$typeP='towary';
}
if($position['product_ks_group']=='2'){
$typeP='towary';
}
if($position['product_ks_group']=='3'){
$typeP='towary';
}
if($position['product_ks_group']=='4'){
$typeP='środki transportu';
}
$cdata=$fpe->addChild( 'RODZAJ_SPRZEDAZY');
$cdata->addCData($typeP);
$fpe->addChild ( 'UWZ_W_PROPORCJI','TAK' );
}
$this->xml_adopt ( $pozycje, $fpe );
}
}
public function addPurchaseDocuments() {
global $app_list_strings;
$payment_methods = $app_list_strings ['payment_method_dom'];
$fpn = new SimpleXMLExtended ( '<REJESTRY_ZAKUPU_VAT></REJESTRY_ZAKUPU_VAT>' );
$fpn->addChild ( 'WERSJA', OptimaXMLConstant::WERSJA );
$fpn->addChild ( 'BAZA_ZRD_ID', OptimaXMLConstant::BAZA_ZRD_ID );
$fpn->addChild ( 'BAZA_DOC_ID', OptimaXMLConstant::BAZA_DOC_ID );
$i=0;
foreach ( $this->getDocumentsObiect() as $value ) {
$fpn = $this->addPurchaseDocument ( $value, $fpn );
}
$this->xml_adopt ( $this->optimaXML->basicXML, $fpn );
}
public function addPurchaseDocument($value, $fpn) {
$header = new SimpleXMLExtended ( '<REJESTR_ZAKUPU_VAT></REJESTR_ZAKUPU_VAT>' );
$fpe = $header->addChild ( 'REJESTR_ZAKUPU_VAT' );
$this->addIfNotEmpty ( $fpe, 'ID_ZRODLA', $value->id );
$this->addIfNotEmpty ( $fpe, 'MODUL', 'HANDEL' );
$this->addIfNotEmpty ( $fpe, 'DATA_WYSTAWIENIA', date ( "Y-m-d", strtotime ( $value->document_date) ) );
$this->addIfNotEmpty ( $fpe, 'DATA_ZAKUPU', date ( "Y-m-d", strtotime ( $value->document_date) ) );
$this->addIfNotEmpty ( $fpe, 'DATA_WPLYWU', date ( "Y-m-d", strtotime ( $value->document_date) ) );
$this->addIfNotEmpty ( $fpe, 'TERMIN', date ( "Y-m-d", strtotime ( $value->payment_date) ) );
$this->addIfNotEmpty ( $fpe, 'NUMER', $value->document_name);
$this->addIfNotEmpty ( $fpe, 'KOREKTA', ($value->corrected_document_name!=null ? 'Tak' : 'Nie') );
if ($value->corrected_document_name!=null) {
$this->addIfNotEmpty ( $fpe, 'KOREKTA_NUMER', $value->corrected_document_name);
}
$this->addIfNotEmpty ( $fpe, 'WEWNETRZNA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'METODA_KASOWA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'FISKALNA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'DETALICZNA', 'Nie' );
$dek_ue = "Nie";
$export = 'nie';
$rejestr='kraj';
if ($value->document_type == 'k') {
$dek_7 = date ( "Ym", strtotime ( $value->active_date ) );
$dek_ue = "Nie";
$export = 'nie';
$rejestr='kraj';
} else if ($value->document_type== 'u') {
$dek_7 = "";
$dek_ue = 'Tak';
$export = 'wewnątrzunijny';
$rejestr='WNT';
} else if ($value->document_type== 'e') {
$export = 'tak';
$dek_7 = date ( "Ym", strtotime ( $value->active_date ) );
$dek_ue = 'Nie';
$rejestr='eksport';
}
if( $value->category_id=='invoice'){
$nazwaRej='Koszty';
}
if( $value->category_id=='compain_note'){
$nazwaRej="Materiały";
}
if( $value->category_id=='return_note'){
$nazwaRej="Towary";
}
$this->addIfNotEmpty ( $fpe, 'REJESTR', $nazwaRej.' '.$rejestr);
$this->addIfNotEmpty ( $fpe, 'EKSPORT', $export );
$relations=$value->getParentList(true);
$acc = new Account ();
$acc->retrieve ( $relations[0]['parent_id']);
$this->addIfNotEmpty ( $fpe, 'FINALNY', ($acc->natural_person ? 'Tak' : 'Nie') );
$this->addIfNotEmpty ( $fpe, 'PODATNIK_CZYNNY', ($acc->vat_payer ? 'Tak' : 'Nie') );
$this->addIfNotEmpty ( $fpe, 'TYP_PODMIOTU', 'kontrahent' );
$acc->name=trim(preg_replace('/\s+/', ' ', $acc->name));
$this->addIfNotEmpty ( $fpe, 'PODMIOT', $acc->name);
$this->addIfNotEmpty ( $fpe, 'PODMIOT_ID', $acc->id );
$this->addIfNotEmpty ( $fpe, 'PODMIOT_NIP', $acc->to_vatid );
$acc_name = $acc->name;
if (strlen ( $acc_name ) > 50) {
$this->addIfNotEmpty ( $fpe, 'NAZWA1', mb_substr( $acc_name, 0, 50,'UTF-8') );
if (strlen ( $acc_name ) > 100) {
$this->addIfNotEmpty ( $fpe, 'NAZWA2', mb_substr( $acc_name, 50, 50,'UTF-8') );
$this->addIfNotEmpty ( $fpe, 'NAZWA3', mb_substr( $acc_name, 100,null,'UTF-8') );
} else {
$this->addIfNotEmpty ( $fpe, 'NAZWA2', mb_substr( $acc_name, 50,null,'UTF-8') );
}
} else {
$this->addIfNotEmpty ( $fpe, 'NAZWA1', $acc_name );
}
if ($acc->invoice_type == "K") {
$this->addIfNotEmpty ( $fpe, 'NIP_KRAJ', 'PL' );
$this->addIfNotEmpty ( $fpe, 'NIP', $acc->to_vatid );
} else {
$this->addIfNotEmpty ( $fpe, 'NIP_KRAJ', substr ( $acc->to_vatid, 0, 2 ) );
$replace= substr ( $acc->to_vatid, 0, 2 ) ;
$this->addIfNotEmpty ( $fpe, 'NIP', str_replace($replace,"",$acc->to_vatid) );
}
$acc->billing_address_street=trim(preg_replace('/\s+/', ' ', $acc->billing_address_street));
preg_match ( '/^([^\d]*[^\d\s]) *(\d.*)$/', $acc->billing_address_street, $matches );
$this->addIfNotEmpty ( $fpe, 'KRAJ', $acc->billing_address_country );
$this->addIfNotEmpty ( $fpe, 'WOJEWÓDZTWO', $acc->billing_address_state );
// $fpe->addChild('POWIAT',$acc->to_vatid);
$this->addIfNotEmpty ( $fpe, 'GMINA', $acc->billing_address_ecmcommune_name );
$this->addIfNotEmpty ( $fpe, 'ULICA', $matches [1] );
$numbers = $this->findHomeAndLocale ( $matches [2] );
$this->addIfNotEmpty ( $fpe, 'NR_DOMU', $numbers [0] );
$this->addIfNotEmpty ( $fpe, 'NR_LOKALU', $numbers [1] );
$this->addIfNotEmpty ( $fpe, 'MIASTO', $acc->billing_address_city );
$this->addIfNotEmpty ( $fpe, 'KOD_POCZTOWY', $acc->billing_address_postalcode );
$this->addIfNotEmpty ( $fpe, 'ROLNIK', 'NIE' );
$this->addIfNotEmpty ( $fpe, 'DEKLARACJA_VAT7', $dek_7 );
$this->addIfNotEmpty ( $fpe, 'DEKLARACJA_VATUE', $dek_ue );
if ($value->currency_id!='PLN') {
$cur = new Currency ();
$cur->retrieve ( $value->currency_id );
$date = $this->getCurrencyDate ( $value->currency_table, $cur->id );
$this->addIfNotEmpty ( $fpe, 'WALUTA', $cur->name );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY', '--' . $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ILE', $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE', $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'KURS_DO_KSIEGOWANIA', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY_2', '--' . $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE_2', $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE_2', $value->currency_value);
$date = new DateTime( $value->document_date);
$date->modify("-1 day");
$this->addIfNotEmpty ( $fpe, 'DATA_KURSU_2',$date->format("Y-m-d"));
$this->addIfNotEmpty ( $fpe, 'DATA_KURSU', $date->format("Y-m-d"));
$this->addIfNotEmpty ( $fpe, 'PLATNOSC_VAT_W_PLN', "Nie" );
} else {
$fpe->WALUTA='<![CDATA[]]>';
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY', 'NBP' );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ILE', '1' );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE', '1' );
$this->addIfNotEmpty ( $fpe, 'KURS_DO_KSIEGOWANIA', "Nie" );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY_2', "NBP" );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE_2', "1" );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE_2', "1" );
$date = new DateTime( $value->document_date);
$date->modify("-1 day");
$this->addIfNotEmpty ( $fpe, 'DATA_KURSU_2',$date->format("Y-m-d"));
$this->addIfNotEmpty ( $fpe, 'DATA_KURSU',$date->format("Y-m-d"));
$this->addIfNotEmpty ( $fpe, 'PLATNOSC_VAT_W_PLN', "Nie" );
}
$this->addIfNotEmpty ( $fpe, 'JPK_FA', "Tak" );
$this->addIfNotEmpty ( $fpe, 'DEKLARACJA_VAT27', "Nie" );
$this->addPurchasePositions ( $fpe, $value );
$platnosci = $fpe->addChild ( 'PLATNOSCI' );
$header = new SimpleXMLExtended ( '<PLATNOSC></PLATNOSC>', LIBXML_NOEMPTYTAG);
$platnosc = $header->addChild ( 'PLATNOSC' );
$platnosc->addChild ( 'ID_ZRODLA_PLAT',$value->id);
$platnosc->addChild ( 'TERMIN_PLAT',date("Y-m-d",strtotime($value->payment_date)));
if($value->left_paid!=""){
$forma='przelew';
}
if($value->payment_method=='GOTÓWKĄ'){
$forma='gotówka';
} else {
$forma='przelew';
}
$platnosc->addChild ( 'FORMA_PLATNOSCI_PLAT',$forma);
$platnosc->addChild ( 'FORMA_PLATNOSCI_ID_PLAT',$acc->id);
if ($value->currency_id!='PLN') {
$platnosc->addChild ('WALUTA_PLAT',$cur->name);
$platnosc->addChild ('WALUTA_DOK',$cur->name);
$platnosc->addChild ('KURS_WALUTY_PLAT','NBP');
$platnosc->addChild ('NOTOWANIE_WALUTY_ILE_PLAT',$value->currency_value);
$platnosc->addChild ('NOTOWANIE_WALUTY_ZA_ILE_PLAT',$value->currency_value);
if($value->corrected_document_name!=null){
$platnosc->addChild ( 'KWOTA_PLAT',abs($value->value));
$platnosc->addChild ( 'KWOTA_PLN_PLAT',round(abs($value->value*$value->currency_value),2));
} else {
$platnosc->addChild ( 'KWOTA_PLAT',$value->value);
$platnosc->addChild ( 'KWOTA_PLN_PLAT',round($value->value*$value->currency_value,2));
}
$date = $this->getCurrencyDate ( $value->currency_table, $cur->id );
$date = new DateTime( $value->document_date);
$date->modify("-1 day");
$this->addIfNotEmpty ( $platnosc, 'DATA_KURSU_PLAT',$date->format("Y-m-d"));
} else {
$platnosc->WALUTA_PLAT='<![CDATA[]]>';
$platnosc->WALUTA_DOK='<![CDATA[]]>';
$platnosc->addChild ('KURS_WALUTY_PLAT','NBP');
$platnosc->addChild ('NOTOWANIE_WALUTY_ILE_PLAT','1');
$platnosc->addChild ('NOTOWANIE_WALUTY_ZA_ILE_PLAT','1');
if($value->corrected_document_name!=null){
$platnosc->addChild ( 'KWOTA_PLAT',abs($value->value));
$platnosc->addChild ( 'KWOTA_PLN_PLAT',abs($value->value));
}
else {
$platnosc->addChild ( 'KWOTA_PLAT',$value->value);
$platnosc->addChild ( 'KWOTA_PLN_PLAT',$value->value);
}
}
$platnosc->addChild ( 'KIERUNEK','rozchód');
$platnosc->addChild ( 'PODLEGA_ROZLICZENIU','tak');
//$platnosc->addChild ( 'KONTO','');
$platnosc->addChild ( 'NIE_NALICZAJ_ODSETEK','Nie');
$platnosc->addChild ( 'PRZELEW_SEPA','Nie');
// $platnosc->addChild ( 'DATA_KURSU_PLAT','przychód');
$platnosc->addChild ( 'PLATNOSC_TYP_PODMIOTU','kontrahent');
if($value->parent_payer_address_name!=""){
$obj= new Account();
$value->parent_payer_address_nip=str_replace("-","",str_replace(" ","",$value->parent_payer_address_nip));
$obj->retrieve_by_string_fields(['to_vatid'=>$value->parent_payer_address_nip]);
$platnosc->addChild ( 'PLATNOSC_PODMIOT',$obj->name);
$platnosc->addChild ( 'PLATNOSC_PODMIOT_ID',$obj->id );
$platnosc->addChild ( 'PLATNOSC_PODMIOT_NIP',$value->parent_payer_address_nip);
} else {
$platnosc->addChild ( 'PLATNOSC_PODMIOT',$acc->name);
$platnosc->addChild ( 'PLATNOSC_PODMIOT_ID',$acc->name);
$platnosc->addChild ( 'PLATNOSC_PODMIOT_NIP',$acc->to_vatid);
}
/*
$platnosc->addChild ( 'PLAT_ELIXIR_O1','');
$platnosc->addChild ( 'PLAT_ELIXIR_O2','');
$platnosc->addChild ( 'PLAT_ELIXIR_O3','');
$platnosc->addChild ( 'PLAT_ELIXIR_O4','');
*/
$this->xml_adopt ( $platnosci, $platnosc);
$this->xml_adopt ( $fpn, $fpe );
return $fpn;
}
#showVatList
public function addPurchasePositions($node, $object) {
$pozycje = $node->addChild ( 'POZYCJE' );
$positions = $object->showVatList( true );
global $app_list_strings;
foreach ( $positions as $position ) {
if($position['netto']=='NaN' || $position['vat']=='NaN')continue;
if($position['netto']=='0')continue;
$header = new SimpleXMLExtended ( '<POZYCJA></POZYCJA>' );
$fpe = $header->addChild ( 'POZYCJA' );
$fpe->addChild ( 'STAWKA_VAT', str_replace("%","",$position ['vat_id'] ));
$fpe->addChild ( 'STATUS_VAT', 'opodatkowana' );
$fpe->addChild ( 'NETTO', $position ['netto'] );
$fpe->addChild ( 'VAT', $position ['vat'] );
$fpe->addChild ( 'NETTO_SYS', round ( $position ['netto'] * ($object->currency_value!="" ? $object->currency_value : 1), 2 ) );
$fpe->addChild ( 'VAT_SYS', round ( $position ['vat'] * ($object->currency_value!="" ? $object->currency_value : 1), 2 ) );
$fpe->addChild ( 'NETTO_SYS2', round ( $position ['netto'] * ($object->currency_value!="" ? $object->currency_value : 1), 2 ) );
$fpe->addChild ( 'VAT_SYS2', round ( $position ['vat'] * ($object->currency_value!="" ? $object->currency_value : 1), 2 ) );
$fpe->addChild ( 'RODZAJ_ZAKUPU','towary' );
$this->xml_adopt ( $pozycje, $fpe );
}
}
public function getCurrencyDate($nbp, $cur_id) {
$res = $this->db->query ( "select date from currency_nbp_archive where currency_id='" . $cur_id . "' and nbp_table_name='" . $nbp . "'" );
$dane = $this->db->fetchByAssoc ( $res );
return $dane ['date'];
}
public function addIfNotEmpty(&$object, $key, $value) {
if ($value) {
if ($value != "") {
$object->addChild ( $key, $value );
}
}
}
public function findHomeAndLocale($numbers) {
$numbers = str_replace ( " ", "", $numbers );
$pos = strpos ( $numbers, '/' );
if ($pos !== false) {
return implode ( '/', $numbers );
}
return [$numbers];
}
public function xml_adopt($root, $new) {
$node = $root->addChild ( $new->getName (), ( string ) $new );
foreach ( $new->attributes () as $attr => $value ) {
$node->addAttribute ( $attr, $value );
}
foreach ( $new->children () as $ch ) {
self::xml_adopt ( $node, $ch );
}
}
public function getInvoicesObject() {
$invoices = new EcmInvoiceOut ();
$invoices = $invoices->get_full_list ( null, "register_date>='" . $this->date_from . "' and register_date<='" . $this->date_to . "'" );
#$invoices = $invoices->get_full_list ( null, "ecminvoiceouts.id='104e0cd3-1aac-2927-e76f-599d1ce26b60'" );
return $invoices;
}
public function getAccounts() {
$invoices = new Account();
$invoices = $invoices->get_full_list ( null, "" );
return $invoices;
}
public function getDocumentsObiect() {
$documents = new Document ();
$documents= $documents->get_full_list ( null, "document_date>='" . $this->date_from . "' and document_date<='" . $this->date_to . "' and category_id in ('invoice','compain_note','return_note')" );
return $documents;
}
public function getPzObiect() {
$documents = new EcmStockDocIn ();
$documents= $documents->get_full_list ( null, "register_date>='" . $this->date_from . "' and register_date<='" . $this->date_to . "'" );
return $documents;
}
public function getPwObiect() {
$documents = new EcmStockDocInsideIn ();
$documents= $documents->get_full_list ( null, "register_date>='" . $this->date_from . "' and register_date<='" . $this->date_to . "'" );
return $documents;
}
public function adPzDocuments() {
global $app_list_strings;
$payment_methods = $app_list_strings ['payment_method_dom'];
$fpn = new SimpleXMLExtended ( '<DOKUMENTY_INNE_PRZYCHOD></DOKUMENTY_INNE_PRZYCHOD>' );
$fpn->addChild ( 'WERSJA', OptimaXMLConstant::WERSJA );
$fpn->addChild ( 'BAZA_ZRD_ID', OptimaXMLConstant::BAZA_ZRD_ID );
$fpn->addChild ( 'BAZA_DOC_ID', OptimaXMLConstant::BAZA_DOC_ID );
foreach ( $this->getPzObiect() as $value ) {
$fpn = $this->adPzDocument( $value, $fpn );
}
$this->xml_adopt ( $this->optimaXML->basicXML, $fpn );
echo $this->optimaXML->basicXML->asXml();
}
public function adPzDocument($value, $fpn) {
$header = new SimpleXMLExtended ( '<DOKUMENT_INNY_PRZYCHOD></DOKUMENT_INNY_PRZYCHOD>' );
$fpe = $header->addChild ( 'DOKUMENT_INNY_PRZYCHOD' );
$this->addIfNotEmpty ( $fpe, 'ID_ZRODLA', $value->id );
$this->addIfNotEmpty ( $fpe, 'SYMBOL_DOKUMENTU', '777D9054-1C7D-4B4D-970D-4FFFF7EA84E1' );
$this->addIfNotEmpty ( $fpe, 'REJESTR', 'PRZYCHODY' );
$this->addIfNotEmpty ( $fpe, 'DATA_WYSTAWIENIA', date ( "Y-m-d", strtotime ( $value->register_date) ) );
$this->addIfNotEmpty ( $fpe, 'DATA_OPERACJI', date ( "Y-m-d", strtotime ( $value->register_date) ) );
$this->addIfNotEmpty ( $fpe, 'DATA_WPLYWU', date ( "Y-m-d", strtotime ( $value->data_fk) ) );
$fpe->addChildWithCDATA('NUMER', $value->document_no);
$acc = new Account ();
$acc->retrieve($value->parent_id);
$this->addIfNotEmpty ( $fpe, 'TYP_PODMIOTU', 'kontrahent' );
$this->addIfNotEmpty ( $fpe, 'PODMIOT', $acc->index_dbf );
$this->addIfNotEmpty ( $fpe, 'PODMIOT_ID', $acc->id );
$this->addIfNotEmpty ( $fpe, 'PODMIOT_NIP', $acc->to_vatid );
$acc_name = $acc->name;
if (strlen ( $acc_name ) > 50) {
$this->addIfNotEmpty ( $fpe, 'NAZWA1', mb_substr ( $acc_name, 0, 50,'UTF-8' ) );
if (strlen ( $acc_name ) > 100) {
$this->addIfNotEmpty ( $fpe, 'NAZWA2', mb_substr( $acc_name, 50, 50,'UTF-8') );
$this->addIfNotEmpty ( $fpe, 'NAZWA3', mb_substr( $acc_name, 100,null,'UTF-8') );
} else {
$this->addIfNotEmpty ( $fpe, 'NAZWA2', mb_substr( $acc_name, 50,null,'UTF-8') );
}
} else {
$this->addIfNotEmpty ( $fpe, 'NAZWA1', $acc_name );
}
if ($acc->invoice_type == "K") {
$this->addIfNotEmpty ( $fpe, 'NIP_KRAJ', 'PL' );
} else {
$this->addIfNotEmpty ( $fpe, 'NIP_KRAJ', substr ( $acc->to_vatid, 0, 2 ) );
}
$this->addIfNotEmpty ( $fpe, 'NIP', $acc->to_vatid );
preg_match ( '/^([^\d]*[^\d\s]) *(\d.*)$/', $acc->billing_address_street, $matches );
$this->addIfNotEmpty ( $fpe, 'KRAJ', $acc->billing_address_country );
$this->addIfNotEmpty ( $fpe, 'WOJEWÓDZTWO', $acc->billing_address_state );
// $fpe->addChild('POWIAT',$acc->to_vatid);
$this->addIfNotEmpty ( $fpe, 'GMINA', $acc->billing_address_ecmcommune_name );
$this->addIfNotEmpty ( $fpe, 'ULICA', $matches [1] );
$numbers = $this->findHomeAndLocale ( $matches [2] );
$this->addIfNotEmpty ( $fpe, 'NR_DOMU', $numbers [0] );
$this->addIfNotEmpty ( $fpe, 'NR_LOKALU', $numbers [1] );
$this->addIfNotEmpty ( $fpe, 'MIASTO', $acc->billing_address_city );
$this->addIfNotEmpty ( $fpe, 'KOD_POCZTOWY', $acc->billing_address_postalcode );
$this->addIfNotEmpty ( $fpe, 'MAGAZYN_ZRODLOWY', $value->stock_name );
$this->addIfNotEmpty ( $fpe, 'KWOTA_RAZEM', $value->total );
$this->addIfNotEmpty ( $fpe, 'GENERACJA_PLATNOSCI', 'Nie' );
if ($value->currency_id!='PLN') {
$cur = new Currency ();
$cur->retrieve ( $value->currency_id );
$date = $this->getCurrencyDate ( $value->currency_table, $cur->id );
$this->addIfNotEmpty ( $fpe, 'WALUTA', $cur->name );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY', '--' . $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'DATA_KURSU', date ( "Y-m-d", strtotime ( $date ) ) );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ILE', $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE', $value->currency_value);
$this->addIfNotEmpty ( $fpe, 'KURS_DO_KSIEGOWANIA', 'Nie' );
} else {
$this->addIfNotEmpty ( $fpe, 'WALUTA', 'PLN' );
$this->addIfNotEmpty ( $fpe, 'KURS_WALUTY', 'Nie' );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ILE', '1' );
$this->addIfNotEmpty ( $fpe, 'NOTOWANIE_WALUTY_ZA_ILE', '1' );
$this->addIfNotEmpty ( $fpe, 'KURS_DO_KSIEGOWANIA', "Nie" );
}
$this->addPzPositions ( $fpe, $value );
$this->xml_adopt ( $fpn, $fpe );
return $fpn;
}
public function addPzPositions($node, $object) {
$pozycje = $node->addChild ( 'POZYCJE' );
$positions = $object->getPositionList( true );
global $app_list_strings;
foreach ( $positions as $position ) {
$header = new SimpleXMLExtended ( '<POZYCJA></POZYCJA>' );
$fpe = $header->addChild ( 'POZYCJA' );
$fpe->addChild ( 'KWOTA_SYS', $position ['total'] );
$this->xml_adopt ( $pozycje, $fpe );
}
}
function xml_entities($string) {
return strtr(
$string,
array(
"&lt;"=>"<",
"&gt;" => ">",
)
);
}
public function saveFile(){
$dom=new DOMDocument("1.0","UTF-8");
unlink('2.xml');
file_put_contents("2.xml",$this->optimaXML->basicXML->asXML ());
$dom->loadXML(file_get_contents("2.xml"));
// $dom->loadXML(mb_convert_encoding(str_replace('"',"'",$this->optimaXML->basicXML->asXML ()), 'HTML-ENTITIES', 'UTF-8'));
$dom->formatOutput=false;
$content= $dom->saveXML(null,LIBXML_NOEMPTYTAG);
unlink('xx.xml');
file_put_contents('xx.xml',$this->xml_entities($content));
}
}
$exportOptima = new ExportOptima ( '04.08.2017', new OptimaXML () );
$exportOptima->loadXmlObject ();
$exportOptima->addAccounts();
$exportOptima->addInvoiceDocuments ();
$exportOptima->addPurchaseDocuments ();
#$exportOptima->adPzDocuments();
#$exportOptima->adPwDocuments();
$exportOptima->saveFile();
?>