156 lines
6.5 KiB
PHP
156 lines
6.5 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
App. Name : Inventory Advanced Systems
|
|
Module : /apps/php/xml/fp_jual.php
|
|
Desc. : PHP - Export XML Faktur Pajak Invoice Biaya
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : April 2rd, 2011.
|
|
Last Modified : January 20th, 2025.
|
|
|
|
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
|
require_once(__DIR__."/../func/ias.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\DB\SQL;
|
|
use siaupheng\fonia3\Web\Param;
|
|
use siaupheng\fonia3\Web\Table;
|
|
use siaupheng\fonia3\Web\Form;
|
|
|
|
$db = (is_resource($db)) ? $db : new MySQL();
|
|
$ajson = [];
|
|
$data = Param::Get("data");
|
|
$tgl_from = tgl_sql2str(Param::Get("Tgl_From"));
|
|
$tgl_to = tgl_sql2str(Param::Get("Tgl_To"));
|
|
|
|
if ( $data == "download" ) {
|
|
$a_xml = '<?xml version="1.0" encoding="utf-8"?>
|
|
<TaxInvoiceBulk xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<TIN>'.$_SESSION['__WEB_APP']['REG_NPWP'].'</TIN>
|
|
<ListOfTaxInvoice>';
|
|
$a_tax = '
|
|
<TaxInvoice>
|
|
<TaxInvoiceDate>%s</TaxInvoiceDate>
|
|
<TaxInvoiceOpt>Normal</TaxInvoiceOpt>
|
|
<TrxCode>04</TrxCode>
|
|
<AddInfo/>
|
|
<CustomDoc/>
|
|
<RefDesc/>
|
|
<FacilityStamp/>
|
|
<SellerIDTKU>'.$_SESSION['__WEB_APP']['REG_NPWP'].$_SESSION['__WEB_APP']['REG_NITKU'].'</SellerIDTKU>
|
|
<BuyerTin>%s</BuyerTin>
|
|
<BuyerDocument>%s</BuyerDocument>
|
|
<BuyerCountry>IDN</BuyerCountry>
|
|
<BuyerDocumentNumber>%s</BuyerDocumentNumber>
|
|
<BuyerName>%s</BuyerName>
|
|
<BuyerAdress>%s</BuyerAdress>
|
|
<BuyerEmail>-</BuyerEmail>
|
|
<BuyerIDTKU>%s</BuyerIDTKU>
|
|
<ListOfGoodService>';
|
|
$x_item = '
|
|
<GoodService>
|
|
<Opt>B</Opt>
|
|
<Code>000000</Code>
|
|
<Name>%s</Name>
|
|
<Unit>%s</Unit>
|
|
<Price>%s</Price>
|
|
<Qty>%s</Qty>
|
|
<TotalDiscount>%s</TotalDiscount>
|
|
<TaxBase>%s</TaxBase>
|
|
<OtherTaxBase>%s</OtherTaxBase>
|
|
<VATRate>%s</VATRate>
|
|
<VAT>%s</VAT>
|
|
<STLGRate>0</STLGRate>
|
|
<STLG>0</STLG>
|
|
</GoodService>';
|
|
$z_tax = '
|
|
</ListOfGoodService>
|
|
</TaxInvoice>';
|
|
$z_xml = '
|
|
</ListOfTaxInvoice>
|
|
</TaxInvoiceBulk>';
|
|
}
|
|
|
|
if ( $data == "download" ) {
|
|
$xml = $a_xml;
|
|
$alist = Param::Get_ArrayCBOX();
|
|
foreach ($alist as $_key => $_val) {
|
|
if ($_val!=="Y") continue;
|
|
$no_pajak = str_replace("_",".",$_key);
|
|
$afp = [];
|
|
|
|
//pajak per invoice biaya
|
|
$db->Query("SELECT P.*,IF(P.SupID=0,P.Alamat_NPWP,CONCAT(S.Alamat_Sup,' ',S.Kota_Sup)) Alamat_NPWP2 FROM (SELECT * FROM biaya_pajak WHERE No_Biaya='".$no_pajak."' LIMIT 1) P LEFT JOIN para_supplier S ON (S.SupID=P.SupID)");
|
|
if ($db->Next()) $afp = $db->AllRow();
|
|
|
|
if (count($afp) > 0) {
|
|
$buy_id = "TIN"; $buy_doc = $afp['No_Biaya']; $buy_name = "-"; $buy_addr = "-"; $buy_nitku = $afp['No_NPWP'].$afp['No_NITKU'];
|
|
if ($afp['No_NPWP']==0) {
|
|
if (($afp['No_NIK']?:0)==0) {
|
|
$buy_id = "Other ID";
|
|
$buy_nitku = "0";
|
|
} else {
|
|
$buy_id = "National ID";
|
|
$buy_doc = $afp['No_NIK'];
|
|
$buy_nitku = "000000";
|
|
}
|
|
$buy_name = $afp['Nama_NPWP'];
|
|
$buy_addr = $afp['Alamat_NPWP2'];
|
|
}
|
|
$xml .= sprintf($a_tax, $afp['Tgl_Biaya'], $afp['No_NPWP'], $buy_id, $buy_doc, $buy_name, $buy_addr, $buy_nitku);
|
|
|
|
$db->Query("SELECT *,(Qty*Harga_Jual) Total_Jual FROM biaya_pajak_detail WHERE No_Biaya='".$no_pajak."' ORDER BY ID");
|
|
while ($db->Next()) {
|
|
$n_dpp = $db->Row("Total_Jual");
|
|
$n_dpp_lain = $n_dpp * 11/12;
|
|
$n_ppn = $n_dpp_lain * 12/100;//ppn = 12%
|
|
$xml .= sprintf($x_item, $db->Row("Uraian_Biaya"), "UM.0030", $db->RowFloat("Harga_Jual"), $db->RowFloat("Qty"), 0.00, round($n_dpp,2), round($n_dpp_lain,2), 12, round($n_ppn,2));
|
|
}
|
|
$xml .= $z_tax;
|
|
$db->Query("UPDATE biaya_pajak SET XFP=XFP+1 WHERE No_Biaya='".$no_pajak."' LIMIT 1");
|
|
}
|
|
}
|
|
$xml .= $z_xml;
|
|
|
|
header("Content-type: application/octet-stream");
|
|
header("Content-Disposition: attachment; filename=\"FPB-".Param::Get("Tgl_From").".xml\"");
|
|
echo $xml;
|
|
|
|
} else if ( $data == "detail" ) {
|
|
$tcari = trim(Param::Get("Cari_FP"));
|
|
$tsql = ($tcari=="") ? "" : " AND CONCAT(No_Biaya,No_NPWP,Nama_NPWP,DATE_FORMAT(Tgl_Biaya,'%d-%m-%Y')) LIKE '%".$tcari."%'";
|
|
|
|
$tot_fp = 50;
|
|
$db->Query("SELECT COUNT(*) FP FROM biaya_pajak WHERE Tgl_Biaya BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql."");
|
|
if ($db->Next()) $tot_fp = $db->RowFloat("FP", 50);
|
|
|
|
$obj = new Table($db);
|
|
$obj->set_query("SELECT *,'N' Nota FROM biaya_pajak WHERE Tgl_Biaya BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
|
|
$obj->add_field("No_Biaya", "No. TX", "c");
|
|
$obj->add_field("Tgl_Biaya", "Tgl. Pajak", "c", "sqltgl");
|
|
$obj->add_field("No_NPWP", "NPWP", "l");
|
|
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
|
|
$obj->add_field("Jumlah_DPP", "Jumlah DPP", "r", "rupiah");
|
|
$obj->add_field("Jumlah_PPN", "Jumlah PPN", "r", "rupiah");
|
|
$obj->add_field("XFP", "XML", "c");
|
|
$obj->set_field_order("No_Biaya", "A");
|
|
$obj->add_row_checkbox("No_Biaya", "Nota", ["Y","N"]);
|
|
$obj->set_func_navi("XMLFPBJS.data_query('detail')");
|
|
$ajson[] = $obj->json_table("divDetail", $tot_fp);
|
|
|
|
} else if ( $data == "default") {
|
|
$form = new Form($db);
|
|
$tdari = $form->datebox("_", "Tgl_From", tgl_ymd(), true, false);
|
|
$tsamp = $form->datebox("_", "Tgl_To", tgl_ymd(), true, false);
|
|
echo '
|
|
<div class="card"><div class="card-header custom-style">Export Data FP XML Penjualan 2025</div><div class="card-body"><div class="row mb-1"><div class="col d-flex justify-content-between"><div class="d-flex">'.$tdari.'<div><input type="text" class="form-control-plaintext text-center px-2" value="S / D"></div>'.$tsamp.'</div><div class="ms-2 input-group"><input class="form-control" id="Cari_FP" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button></div><button class="btn btn-info shadow-none ms-2 text-nowrap" id="butXML" type="button"><i class="bi-cloud-download me-2"></i>Export XML</button></div></div><div id="divDetail"> </div></div></div>';
|
|
}
|
|
|
|
send_json($ajson);
|
|
?>
|