first commit
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
App. Name : INVENTORY AND SALES SYSTEMS
|
||||
Module : /apps/php/repo/nota.php
|
||||
Desc. : PHP - Cetak Struk / Nota POS
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : April 12th, 2011.
|
||||
Last Modified : September 26th, 2025.
|
||||
|
||||
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
||||
require_once(__DIR__."/../func.iss.php");
|
||||
|
||||
use siaupheng\fonia3\DB\MySQL;
|
||||
use siaupheng\fonia3\Web\Param;
|
||||
use siaupheng\fonia3\Printer\PrintPOS;
|
||||
|
||||
function nota_pos($db, $nota="", $op_cash=1) {
|
||||
if (trim($nota)=="") return;
|
||||
|
||||
$ncetak = 1; $is_orig = ($op_cash > 0) ? true : false;
|
||||
$ainfo = []; $apromo = []; $anotapromo = [];
|
||||
$db->Query("SELECT J.*,UCASE(O.Nama) Nama_User,UCASE(LEFT(B.Nama_Kartu,23)) Kode_Kartu2,UCASE(J.Nama_Kartu) Nama_Kartu2,RIGHT(J.No_Kartu,4) No_Kartu2 FROM (SELECT *,DATE_FORMAT(Tgl_Jual,'%d-%m-%Y') Tgl_Jual2,DATE_FORMAT(DateStamp,'%H:%i:%s') Jam_Jual,(Total_Bayar-Total_Kartu) Total_Tunai,(Total_Bayar-Total_Jual+Total_Diskon+Total_Potong) Total_Sisa FROM inv_jual WHERE No_Jual='".$nota."') J LEFT JOIN app_operator O ON (J.UserID=O.UserID) LEFT JOIN para_rek_pos B ON (J.KartuID=B.KartuID)");
|
||||
if ($db->Next()) $ainfo = $db->AllRow();
|
||||
if ($ainfo['KartuID'] > 0) $ncetak++;
|
||||
if ($ainfo['PromoNotaID'] > 0) {
|
||||
$db->Query("SELECT * FROM inv_promo_nota WHERE PromoNotaID='".$ainfo['PromoNotaID']."' LIMIT 1");
|
||||
if ($db->Next()) {
|
||||
$anotapromo = explode("\n", wordwrap("".$db->Row("Promo_Iklan"), 38, "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
$db->Query("SELECT D.*,P.Kode_SKU,IF(ISNULL(O.Ket),P.Nama_Produk,O.Ket) Nama_Produk,P.Nama_Satuan FROM (SELECT No_Ref,ID,InvID,SatuanID,Harga_Jual,Disk_Rupiah Harga_Diskon,SUM(-Qty) Qty,SUM(-Qty*Harga_Jual) Jumlah,SUM(-Qty*Disk_Rupiah) JumlahD,Promo,Total_Diskon FROM inv_detail WHERE No_Ref='".$nota."' AND Qty<>0 GROUP BY InvID,SatuanID,Harga_Jual,Promo) D LEFT JOIN (SELECT * FROM inv_detail_lain WHERE No_Ref='".$nota."') O ON (D.No_Ref=O.No_Ref AND D.ID=O.ID) LEFT JOIN vi_inv_produk P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID) ORDER BY P.Nama_Produk");
|
||||
if ($db->RecordCount()==0) return;
|
||||
|
||||
$pre = new PrintPOS();
|
||||
$pre->set_fontsize(2);
|
||||
$pre->set_header_logo("logo-nota.png");
|
||||
if ($_SESSION['__APP_INV']['PRINT_OPENCD']==1 && $op_cash==1) $pre->set_opendrawer();
|
||||
if ($_SESSION['__APP_INV']['PRINT_AUTOCUT']==1) $pre->set_cutpaper();
|
||||
$pre->add(array($ainfo['No_Jual'],20), array($ainfo['Tgl_Jual2'],20,"R"));
|
||||
$pre->add(array($ainfo['Nama_User'],20), array($ainfo['Jam_Jual'],20,"R"));
|
||||
$pre->add_line();
|
||||
|
||||
$items = 0; $qty = 0;
|
||||
while ($db->Next()) {
|
||||
if ($db->Row("Promo",0)>1) {
|
||||
$apromo[] = rupiah($db->Row("Qty"))." ".$db->Row("Nama_Satuan")." ".$db->Row("Nama_Produk");
|
||||
continue;
|
||||
}
|
||||
$pre->add($db->Row("Nama_Produk"));
|
||||
$pre->add(array($db->Row("Kode_SKU"),8), array(rupiah2($db->Row("Qty")),8,"R"), array(" @",2), array(rupiah($db->Row("Harga_Jual")),9,"R"), array(rupiah($db->Row("Jumlah")),13,"R"));
|
||||
if ($db->Row("Harga_Diskon") > 0) {
|
||||
if ($db->Row("Promo") == 1) {
|
||||
$pre->add(array(" DISKON PROMO",27), array(rupiah($db->Row("Total_Diskon")*-1),13,"R"));
|
||||
} else {
|
||||
$pre->add(array(" DISC",8), array(rupiah2($db->Row("Qty")),8,"R"), array(" @",2), array(rupiah($db->Row("Harga_Diskon")*-1),9,"R"), array(rupiah($db->Row("JumlahD")*-1),13,"R"));
|
||||
}
|
||||
}
|
||||
$qty += $db->RowFloat("Qty");
|
||||
$items++;
|
||||
}
|
||||
|
||||
$pre->add_line();
|
||||
$pre->add(array($items."I/".$qty."Q",14), array("JUMLAH Rp.",13,"R"), array(rupiah($ainfo['Total_Jual']-$ainfo['Total_Diskon']),13,"R"));
|
||||
if ($ainfo['Total_Tunai']>0) $pre->add(array("TUNAI Rp.",27,"R"), array(rupiah($ainfo['Total_Tunai']),13,"R"));
|
||||
if ($ainfo['Total_Kartu']>0) $pre->add(array("NON TUNAI Rp.",27,"R"), array(rupiah($ainfo['Total_Kartu']),13,"R"));
|
||||
if ($ainfo['Total_Potong']>0) {
|
||||
$pre->add(array(" ",14), array("PROMO Rp.",13,"R"), array(rupiah($ainfo['Total_Potong']),13,"R"));
|
||||
$apromo[] = "Potongan Promo Rp. ".rupiah($ainfo['Total_Potong']);
|
||||
}
|
||||
|
||||
if ($ainfo['KartuID']==0) {
|
||||
$pre->add(array("KEMBALI Rp.",27,"R"), array(rupiah($ainfo['Total_Sisa']),13,"R"));
|
||||
} else {
|
||||
$pre->add_empty();
|
||||
$pre->add("* ".$ainfo['Kode_Kartu2']." - ".($ainfo['No_Kartu2'] ?: "XXXX"));
|
||||
if ($ainfo['Nama_Kartu2']<>"") $pre->add(" ".$ainfo['Nama_Kartu2']);
|
||||
}
|
||||
if (count($apromo)>0) {
|
||||
$pre->add_line();
|
||||
$pre->add("HADIAH PROMO :");
|
||||
for ($i=0; $i<count($apromo); $i++) {
|
||||
$pre->add($apromo[$i]);
|
||||
}
|
||||
}
|
||||
$pre->add_empty();
|
||||
$_afoo = explode("[br]", stripslashes($_SESSION['__APP_INV']['TITLE_END']));
|
||||
foreach($_afoo as $_key => $val) {
|
||||
$pre->addc($val);
|
||||
}
|
||||
if ($is_orig==false) $pre->addc("-- SALINAN / COPY --");
|
||||
|
||||
// promo nota
|
||||
if (count($anotapromo)>0) {
|
||||
$pre->add_line();
|
||||
foreach($anotapromo as $_key => $val) {
|
||||
$pre->add($val);
|
||||
}
|
||||
}
|
||||
|
||||
$pre->add_empty($_SESSION['__APP_INV']['PRINT_ROW']);
|
||||
$pre->show($ncetak);
|
||||
}
|
||||
|
||||
function nota_opname($db, $nota="") {
|
||||
if (trim($nota)=="") return;
|
||||
|
||||
$ainfo = [];
|
||||
$db->Query("SELECT *,DATE_FORMAT(Tgl_Opname,'%d-%m-%Y') Tgl_Opname2 FROM inv_opname WHERE No_Opname='".$nota."' LIMIT 1");
|
||||
if ($db->Next()) $ainfo = $db->AllRow();
|
||||
$ainfo['Catatan'] = str_replace("\n", "<br>", $ainfo['Catatan']);
|
||||
|
||||
$db->Query("SELECT D.*,P.Nama_Produk,P.Nama_Satuan FROM (SELECT InvID,SatuanID,SUM(Qty) Qty FROM inv_detail WHERE No_Ref='".$nota."' GROUP BY InvID,SatuanID,Harga_Beli) D LEFT JOIN vi_inv_produk P ON (P.InvID=D.InvID AND P.SatuanID=D.SatuanID) ORDER BY P.Nama_Produk");
|
||||
|
||||
// menampilkan judul dibagian atas laporan
|
||||
$kop = '<div class="text-center"><span class="fs-6 fw-bold">'.$_SESSION['__WEB_APP']['REG_NAME'].'</span><br>STOK OPNAME</div>';
|
||||
$kop .= '<table class="notaHeader"><tbody>';
|
||||
$kop .= '<tr><td width="15%">No. Opname</td><td width="35%" class="ttkdua">'.$ainfo['No_Opname'].'</td><td width="15%"> </td><td width="35%" class=""> </td></tr>';
|
||||
$kop .= '<tr><td>Tanggal Opname</td><td class="ttkdua">'.$ainfo['Tgl_Opname2'].'</td><td> </td><td class=""> </td></tr>';
|
||||
$kop .= '</tbody></table>';
|
||||
|
||||
$header = '<table class="garis"><thead><tr><th style="width:1cm">No.</th><th>Nama Barang</th><th style="width:2.2cm">Qty</th><th>Satuan</th></tr></thead><tbody>';
|
||||
$_line = '<tr><td class="c">%s</td><td>%s</td><td class="r">%s</td><td>%s</td></tr>';
|
||||
|
||||
$body = $kop.$header; $no_urut = 1;
|
||||
while ($db->Next()) {
|
||||
$body .= sprintf($_line, $no_urut++, $db->Row("Nama_Produk"), rupiah2($db->Row("Qty")), $db->Row("Nama_Satuan"));
|
||||
}
|
||||
|
||||
$t_catat = ($ainfo['Catatan']<>"") ? 'Catatan : <i>'.$ainfo['Catatan'].'</i>.' : ' ';
|
||||
$body .= '</tbody></table><table class="notaFooter"><tr><td colspan="2">'.$t_catat.'</td></tr><tr><td width="50%" class="stamp"> </td><td class="r stamp">'.Report_Stamp(1,true).'</td></tr></table>';
|
||||
|
||||
echo '<div>' . $body . '</div>';
|
||||
}
|
||||
|
||||
function open_cash() {
|
||||
$pre = new PrintPOS();
|
||||
if ($_SESSION['__APP_INV']['PRINT_OPENCD']==1) $pre->set_opendrawer();
|
||||
$pre->show();
|
||||
}
|
||||
|
||||
$db = (is_resource($db)) ? $db : new MySQL();
|
||||
$data = Param::Get("data");
|
||||
$nomor = Param::Get("Nomor_Cetak");
|
||||
|
||||
if ( $data == "opencash" ) {
|
||||
open_cash();
|
||||
|
||||
} else if ( $data == "nota-pos" ) {
|
||||
$op_cash = Param::Get("Open_Cash", 0);
|
||||
nota_pos($db, $nomor, $op_cash);
|
||||
|
||||
} else if ( $data == "nota-opname" ) {
|
||||
nota_opname($db, $nomor);
|
||||
|
||||
} else if ( $data == "default") {}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user