260 lines
9.9 KiB
PHP
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)
|
||
|
|
?>
|