first commit

This commit is contained in:
2026-10-29 13:34:31 +07:00
commit 45e4595c57
255 changed files with 35457 additions and 0 deletions
+128
View File
@@ -0,0 +1,128 @@
<?php
/*******************************************************************
PHP Class : /Controller/System/PrinterController
Description : Printer POS
Created By : Siau Pheng ([email protected]).
Created Date : August 4th, 2013.
Last Modified : October 12th, 2026.
(c) 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
declare(strict_types=1);
namespace App\Controller\System;
use flight\Engine;
use flight\Session;
use flight\database\SimplePdo;
use Webapp\DB\SQL;
use Webapp\Web\Form;
use Webapp\Web\Param;
use Webapp\Web\Table;
use App\Utils\Invesa;
class PrinterController {
private string $mode;
private string $id_reg;
private string $curr_id_reg;
protected Engine $app;
protected SimplePdo $db;
protected Session $session;
public function __construct(Engine $app, SimplePdo $db, Session $session) {
$this->app = $app;
$this->db = $db;
$this->session = $session;
$this->mode = Param::Get("mode", "");
$this->curr_id_reg = (string) $session->get('WEB_APP')['REG_ID'];
$this->id_reg = Param::Get("REG_ID", $this->curr_id_reg);
}
public function form_printer() {
if ( $this->mode === "save" ) {
$sql = new SQL($this->app);
$sql->set_table("inv_config");
$sql->add_param("PRINT_AUTO");
$sql->add_param("PRINT_OPENCD");
$sql->add_param("PRINT_AUTOCUT");
$sql->add_param("PRINT_ROW");
$sql->add_param("TITLE_BEGIN");
$sql->add_param("TITLE_END");
$sql->add_where("REG_ID");
$sql->UpdateDB();
if ($this->id_reg === $this->curr_id_reg) {
$_sess = $this->session->get('APP_INV', []);
$_sess['PRINT_AUTO'] = Param::Get("PRINT_AUTO", 1);
$_sess['PRINT_OPENCD'] = Param::Get("PRINT_OPENCD", 1);
$_sess['PRINT_AUTOCUT'] = Param::Get("PRINT_AUTOCUT", 1);
$_sess['PRINT_ROW'] = Param::Get("PRINT_ROW", 0);
$_sess['TITLE_BEGIN'] = Param::Get("TITLE_BEGIN", "");
$_sess['TITLE_END'] = Param::Get("TITLE_END", "");
$this->session->set('APP_INV', $_sess);
}
$ajson['sukses'] = true;
$this->mode = "view";
}
$para = [];
if ($this->id_reg > 0) {
$para = $this->db->fetchRow("SELECT * FROM inv_config WHERE REG_ID=?", [$this->id_reg]);
$para['Nama_Cab'] = $this->db->fetchField("SELECT Nama_Cab FROM para_cabang WHERE CabID=?", [$para['CABANGID']]) ?? '';
}
$benable = ($this->mode === "edit") ? true : false;
$form = new Form($this->app);
$fautoprint = $form->checkbox("_", "PRINT_AUTO", $para['PRINT_AUTO'], $benable, false, [1,0]);
$fopencd = $form->checkbox("_", "PRINT_OPENCD", $para['PRINT_OPENCD'], $benable, false, [1,0]);
$fautocut = $form->checkbox("_", "PRINT_AUTOCUT", $para['PRINT_AUTOCUT'], $benable, false, [1,0]);
$ftitlebegin = $form->textbox("_", "TITLE_BEGIN", $para['TITLE_BEGIN'], $benable, false, "text", "catatan atas struk");
$ftitleend = $form->textbox("_", "TITLE_END", $para['TITLE_END'], $benable, false, "text", "catatan bawah struk");
$fprintrow = $form->textbox("_", "PRINT_ROW", $para['PRINT_ROW'], $benable, false, "number");
$ajson['html'] = '
<div class="row mb-1">
<div class="col">
<div class="input-group mb-1"><div class="input-group-text">'.$fautoprint.'</div><span class="input-group-text col">Otomatis Cetak Struk ?</span></div>
<div class="input-group mb-1"><div class="input-group-text">'.$fopencd.'</div><span class="input-group-text col">Otomatis Buka Laci Kasir ?</span></div>
<div class="input-group mb-1"><div class="input-group-text">'.$fautocut.'</div><span class="input-group-text col">Otomatis Potong Struk ?</span></div>
</div>
</div>
<div class="row mb-1"><hr class="my-1"></div>
<div class="row mb-1">
<div class="col"><div class="input-group"><span class="input-group-text" style="width:180px;">Header Struk</span>'.$ftitlebegin.Invesa::Form_Info("Gunakan [br] untuk header yang terdiri dari beberapa baris.").'</div></div>
</div>
<div class="row mb-1">
<div class="col"><div class="input-group"><span class="input-group-text" style="width:180px;">Footer Struk</span>'.$ftitleend.Invesa::Form_Info("Gunakan [br] untuk footer yang terdiri dari beberapa baris.").'</div></div>
</div>
<div class="row mb-1">
<div class="col-6"><div class="input-group"><span class="input-group-text" style="width:180px;">Baris Cetak Kosong</span>'.$fprintrow.Invesa::Form_Info("Jumlah baris kosong dibawah struk/nota sebelum potong.").'</div></div>
</div>
<input type="hidden" id="mode" value="'.$this->mode.'" >';
$ajson['Nama_Cab'] = $para['Nama_Cab'];
$this->app->json($ajson);
}
public function brow_cabang() {
$obj = new Table($this->app);
$obj->set_table("(SELECT * FROM para_cabang WHERE Aktif=1) C LEFT JOIN inv_config G ON (G.CABANGID=C.CabID)", "C.*,G.REG_ID");
$obj->add_field("REG_ID", "ID", "hid");
$obj->add_field("Kode_Cab", "Kode", "c");
$obj->add_field("Nama_Cab", "Nama Cabang", "awr");
$obj->set_field_order("Kode_Cab", "A");
$obj->set_func_select("PrinterJS.cab_select");
$this->app->json([ $obj->json_table("divBrowCab") ]);
}
public function index() {
$this->app->json(['html' =>
'<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Nama_Cabang" type="text" disabled readonly><button id="butBrow" class="btn btn-info" type="button"><i class="bi-search"></i></button></div></div></div><div class="card"><div class="card-body"><div id="divPrinter">&nbsp;</div><input type="hidden" id="REG_ID" value="'.$this->id_reg.'"></div></div>'
]);
}
}