Files
crm.e5.pl/modules/EcmInvoiceOutOlds/createDecree.php
2024-04-27 09:23:34 +02:00

260 lines
9.9 KiB
PHP

<?php
function createDecree($year, $month) {
$xml = '<?xml version="1.0" encoding="utf-8" ?>';
$xml .= '<paczka miesiac="' . $year . '-' . $month . '" firma="E5" opis="FVS ' . $year . '-' . $month . '" wersja="1.0">';
// normal
$db = $GLOBALS ['db'];
$w = $db->query ( "select pdf_type,currency_id,id,name,number,document_no,wz_id,register_date,payment_date,sell_date,to_nip,parent_id,parent_name,parent_address_street,parent_address_postalcode,parent_address_country,parent_address_city,currency_value, subtotal, total from ecminvoiceoutolds where type='normal' and register_date like '" . $year . "-" . $month . "%' and deleted='0' and canceled='0' order by date_entered asc" );
while ( $r = $db->fetchByAssoc ( $w ) ) {
if ($r ['currency_value']) {
$c = new Currency ();
$c->retrieve ( $r ['currency_id'] );
$waluta = $c->name;
unset ( $c );
$kurs = $r ['currency_value'];
} else {
$waluta = "PLN";
$kurs = 1;
}
if (! isset ( $r ['pdf_type'] ))
$r ['pdf_type'] = 'K';
$nip = str_replace ( "-", "", $r ['to_nip'] );
$r_wz = $db->fetchByAssoc ( $db->query ( "select id,number,document_no, register_date from ecmstockdocouts where id='" . $r ['wz_id'] . "'" ) );
$xml .= '<dokument rodzaj="FVS' . $r ['pdf_type'] . '" id="' . $r ['number'] . '">
<data>' . $r ['register_date'] . '</data>
<dataWplywu>' . $r ['register_date'] . '</dataWplywu>
<dataOperacji>' . $r ['register_date'] . '</dataOperacji>
<dataDostawy></dataDostawy>
<numer>' . $r ['document_no'] . '</numer>
<idMagazynu>0</idMagazynu>
<kontrahent id="' . $r ['parent_id'] . '" kod="' . $nip . '">
<NIP>' . $nip . '</NIP>
<nazwa>' . str_replace ( "<", "", str_replace ( ">", "", $r ['parent_name'] ) ) . '</nazwa>
<adres>' . $r ['parent_address_street'] . '</adres>
<kodPocztowy>' . $r ['parent_address_postalcode'] . '</kodPocztowy>
<miasto>' . $r ['parent_address_city'] . '</miasto>
</kontrahent>
<dokumentyMagazynowe>
<dokumentMagazynowy rodzaj="WZ" id="' . $r_wz ['number'] . '">
<numer>' . $r_wz ['document_no'] . '</numer>
</dokumentMagazynowy>
</dokumentyMagazynowe>
<opis>' . $r ['name'] . '</opis>
<dataPlatnosci>' . $r ['payment_date'] . '</dataPlatnosci>
<formaPlatnosci>0</formaPlatnosci>
<waluta>' . $waluta . '</waluta>';
$xml .= '
<sumaNetto>' . round ( $r ['subtotal'] * $kurs, 2 ) . '</sumaNetto>
<sumaBrutto>' . round ( $r ['total'] * $kurs, 2 ) . '</sumaBrutto>
<sumaVAT>' . round ( ($r ['total'] - $r ['subtotal']) * $kurs, 2 ) . '</sumaVAT>
<sumaWalNetto>' . round ( $r ['subtotal'], 2 ) . '</sumaWalNetto>
<sumaWalBrutto>' . round ( $r ['total'], 2 ) . '</sumaWalBrutto>
<sumaWalVAT>' . round ( ($r ['total'] - $r ['subtotal']), 2 ) . '</sumaWalVAT>
';
if ($r ['pdf_type'] != 'K') {
$xml.= '<kursy>
<kurs waluta="'.$waluta.'" zastosowanie="dataTransakcji" rodzaj="NBP">
<symbol></symbol>
<naDzien></naDzien>
<wartosc>'.$kurs.'</wartosc>
</kurs>
</kursy>
';
}
// rozbicie
$xml.='<rejestr>
';
$rozbicie = $db->query("
select sum(i.subtotal) as subtotal, sum(i.total) as total, v.name, v.value from ecminvoiceoutolditems as i
inner join ecmvats as v
on v.id = i.ecmvat_id
where
i.ecminvoiceoutold_id='".$r['id']."'
group by v.id;
");
while ($roz = $db->fetchByAssoc($rozbicie)) {
$xml .= '
<rozbicie stawka="' .$roz['name']. '">
<netto>' . round($roz['subtotal'],2) . '</netto>
<brutto>' . round($roz['total'],2) . '</brutto>
<VAT>' . round ($roz['total'] - $roz['subtotal'], 2 ) . '</VAT>
</rozbicie>
';
}
$xml .= '</rejestr>
';
//pozycje dokumentu
$xml.='<pozycjeDokumentu>
';
$pozycje = $db->query("
select sum(i.subtotal) as subtotal, p.group_ks, sum(i.quantity) as qty from ecminvoiceoutolditems as i
inner join ecmproducts as p
on p.id=i.ecmproduct_id
where i.ecminvoiceoutold_id='".$r['id']."'
group by p.group_ks;
");
$pp = 0;
global $app_list_strings;
while ($poz = $db->fetchByAssoc($pozycje)) {
$pp++;
if ($poz['group_ks']=='1')
$rodzaj = 'T';
else $rodzaj = 'P';
$xml.='
<pozycjaDokumentu lp="'.$pp.'" rodzaj="'.$rodzaj.'" id="" stawka="">
<kodAsortymentu>'.$app_list_strings['ecmproducts_group_ks_dom'][$poz['group_ks']].'</kodAsortymentu>
<grupaAsortymentu>'.$app_list_strings['ecmproducts_group_ks_dom'][$poz['group_ks']].'</grupaAsortymentu>
<tresc>'.$app_list_strings['ecmproducts_group_ks_dom'][$poz['group_ks']].'</tresc>
<ilosc>1</ilosc>
<jednostkaMiary>szt.</jednostkaMiary>
<cenaNetto>'.round($poz['subtotal'],2).'</cenaNetto>
<cenaBrutto></cenaBrutto>
<wartoscNetto>'.round($poz['subtotal'],2).'</wartoscNetto>
<wartoscBrutto></wartoscBrutto>
<wartoscVat></wartoscVat>
</pozycjaDokumentu>
';
}
$xml.='</pozycjeDokumentu>
';
$xml.='</dokument>
';
}
// corrects
$w = $db->query ( "selectt currency_id, currency_value,id,name,document_no,name,register_date,payment_date,sell_date,to_nip,parent_id,parent_name,parent_address_street,parent_address_postalcode,parent_address_country,parent_address_city,ecminvoiceoutold_id,ecminvoiceoutold_name from ecminvoiceoutolds where type='correct' and register_date like '" . $year . "-" . $month . "%' and deleted='0' and canceled='0' order by date_entered asc" );
while ( $r = $db->fetchByAssoc ( $w ) ) {
if ($r ['currency_value']) {
$c = new Currency ();
$c->retrieve ( $r ['currency_id'] );
$waluta = $c->name;
unset ( $c );
$kurs = $r ['currency_value'];
} else {
$waluta = "PLN";
$kurs = 1;
}
if (! isset ( $r ['pdf_type'] ))
$r ['pdf_type'] = 'K';
$nip = str_replace ( "-", "", $r ['to_nip'] );
$r_wz = $db->fetchByAssoc ( $db->query ( "select id,number,document_no, register_date from ecmstockdocouts where id='" . $r ['wz_id'] . "'" ) );
$xml .= '<dokument rodzaj="FVS' . $r ['pdf_type'] . '" id="' . $r ['number'] . '">
<data>' . $r ['register_date'] . '</data>
<dataWplywu>' . $r ['register_date'] . '</dataWplywu>
<dataOperacji>' . $r ['register_date'] . '</dataOperacji>
<dataDostawy></dataDostawy>
<numer>' . $r ['document_no'] . '</numer>
<idMagazynu>0</idMagazynu>
<kontrahent id="' . $r ['parent_id'] . '" kod="' . $nip . '">
<NIP>' . $nip . '</NIP>
<nazwa>' . str_replace ( "<", "", str_replace ( ">", "", $r ['parent_name'] ) ) . '</nazwa>
<adres>' . $r ['parent_address_street'] . '</adres>
<kodPocztowy>' . $r ['parent_address_postalcode'] . '</kodPocztowy>
<miasto>' . $r ['parent_address_city'] . '</miasto>
</kontrahent>
<dokumentyMagazynowe>
<dokumentMagazynowy rodzaj="WZ" id="' . $r_wz ['number'] . '">
<numer>' . $r_wz ['document_no'] . '</numer>
</dokumentMagazynowy>
</dokumentyMagazynowe>
<opis>' . $r ['name'] . '</opis>
<dataPlatnosci>' . $r ['payment_date'] . '</dataPlatnosci>
<formaPlatnosci>0</formaPlatnosci>
<waluta>' . $waluta . '</waluta>';
$xml .= '
<sumaNetto>' . round ( $r ['subtotal'] * $kurs, 2 ) . '</sumaNetto>
<sumaBrutto>' . round ( $r ['total'] * $kurs, 2 ) . '</sumaBrutto>
<sumaVAT>' . round ( ($r ['total'] - $r ['subtotal']) * $kurs, 2 ) . '</sumaVAT>
<sumaWalNetto>' . round ( $r ['subtotal'], 2 ) . '</sumaWalNetto>
<sumaWalBrutto>' . round ( $r ['total'], 2 ) . '</sumaWalBrutto>
<sumaWalVAT>' . round ( ($r ['total'] - $r ['subtotal']), 2 ) . '</sumaWalVAT>
';
if ($r ['pdf_type'] != 'K') {
$xml.= '<kursy>
<kurs waluta="'.$waluta.'" zastosowanie="dataTransakcji" rodzaj="NBP">
<symbol></symbol>
<naDzien></naDzien>
<wartosc>'.$kurs.'</wartosc>
</kurs>
</kursy>
';
}
// rozbicie
$xml.='<rejestr>
';
$rozbicie = $db->query("
select sum(i.subtotal) as subtotal, sum(i.total) as total, v.name, v.value from ecminvoiceoutolditems as i
inner join ecmvats as v
on v.id = i.ecmvat_id
where
i.ecminvoiceoutold_id='".$r['id']."'
group by v.id;
");
while ($roz = $db->fetchByAssoc($rozbicie)) {
$xml .= '
<rozbicie stawka="' .$roz['name']. '">
<netto>' . round($roz['subtotal'],2) . '</netto>
<brutto>' . round($roz['total'],2) . '</brutto>
<VAT>' . round ($roz['total'] - $roz['subtotal'], 2 ) . '</VAT>
</rozbicie>
';
}
$xml .= '</rejestr>
';
//pozycje dokumentu
$xml.='<pozycjeDokumentu>
';
$pozycje = $db->query("
select sum(i.subtotal) as subtotal, p.group_ks, sum(i.quantity) as qty from ecminvoiceoutolditems as i
inner join ecmproducts as p
on p.id=i.ecmproduct_id
where i.ecminvoiceoutold_id='".$r['id']."'
group by p.group_ks;
");
$pp = 0;
global $app_list_strings;
while ($poz = $db->fetchByAssoc($pozycje)) {
$pp++;
if ($poz['group_ks']=='1')
$rodzaj = 'T';
else $rodzaj = 'P';
$xml.='
<pozycjaDokumentu lp="'.$pp.'" rodzaj="'.$rodzaj.'" id="" stawka="">
<kodAsortymentu>'.$app_list_strings['ecmproducts_group_ks_dom'][$poz['group_ks']].'</kodAsortymentu>
<grupaAsortymentu>'.$app_list_strings['ecmproducts_group_ks_dom'][$poz['group_ks']].'</grupaAsortymentu>
<tresc>'.$app_list_strings['ecmproducts_group_ks_dom'][$poz['group_ks']].'</tresc>
<ilosc>1</ilosc>
<jednostkaMiary>szt.</jednostkaMiary>
<cenaNetto>'.round($poz['subtotal'],2).'</cenaNetto>
<cenaBrutto></cenaBrutto>
<wartoscNetto>'.round($poz['subtotal'],2).'</wartoscNetto>
<wartoscBrutto></wartoscBrutto>
<wartoscVat></wartoscVat>
</pozycjaDokumentu>
';
}
$xml.='</pozycjeDokumentu>
';
$xml.='</dokument>
';
}
return $xml;
}
// echo createDecree(2009,12)
?>