"", 'html'=>""]; $atabel = ['No_Opname'=>$nomor, 'CabID'=>0]; if ($mode == "add") { $atabel['No_Opname'] = "TO-BARU#".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3); $atabel['Tgl_Opname'] = tgl_ymd(); $atabel['CabID'] = $id_cab; $nomor = ""; } else if ($mode == "edit") { Detail_Copy($nomor); } else if ($mode == "save") { $no_lama = $nomor; $b_baru = (strpos($no_lama,"BARU")===false) ? false : true; if ($b_baru) $nomor = Nomor_Baru("O", Param::Get("Tgl_Opname"), true); Detail_Save($nomor, 1, $id_cab, Param::Get("Tgl_Opname"), $b_baru, $no_lama); $sql = new SQL($db); $sql->set_table("inv_opname"); $sql->add_param_date("Tgl_Opname"); $sql->add_param("CabID"); $sql->add_param("Catatan"); $sql->add_param_userid(); $sql->add_where("No_Opname", $nomor); $sql->UpdateDB(); $mode = "view"; } else if ($mode == "cancel") { Detail_Cancel($nomor); $mode = "view"; $nomor = ""; $atabel['No_Opname'] = ""; } if ($nomor <> "" && $mode <> "cancel") { $db->Query("SELECT * FROM inv_opname WHERE No_Opname='".$nomor."'"); if (!$db->Next()) { $ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !"; } else $atabel = array_merge($atabel, $db->AllRow()); } $enable = in_array($mode, ["add","edit"]) ? true : false; $form = new Form($db); $tnota = $form->textbox("_", "No_Opname", $atabel['No_Opname'], !$enable, false, "text", "nomor transaksi"); $ttgl = $form->datebox("_", "Tgl_Opname", $atabel['Tgl_Opname'], $enable, false); $tcab = $form->option_db("_", "CabID", $atabel['CabID'], $enable, false, "para_cabang", ["CabID","Nama_Cab"], "Aktif=1 ORDER BY CabID", [0," "]); $tcatat = $form->textbox("_", "Catatan", $atabel['Catatan'], $enable, false, "text"); $ajson['html'] = '
'.$tnota.'
'.$ttgl.'
'.$tcab.'
'.$tcatat.'

'; } else if ( $data == "delete" ) { $db->Query("DELETE FROM inv_opname WHERE No_Opname='".$nomor."'"); $db->Query("DELETE FROM inv_detail WHERE No_Ref='".$nomor."'"); $ajson['status'] = true; } else if ( $data == "tabel-detail" ) { if (in_array($mode_detail, ["insert","update","delete"])) { $iqty = doubleval(Param::Get("Qty", 0)); $istok = $iqty; $db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'"); if ($db->Next()) $istok = $db->RowFloat("Qty", 1) * $iqty; $sql = new SQL($db); $sql->set_table("tmp_inv_detail"); $sql->add_param("InvID"); $sql->add_param("SatuanID"); $sql->add_param("Qty", $iqty); $sql->add_param("Stok", $istok); $sql->add_param("Harga_Beli"); $sql->add_param("Harga_Jual", Param::Get("Harga_Beli", 0)); $sql->add_param_unix(); $sql->add_param_userid(); $sql->add_where("ID"); $sql->add_where("No_Ref", $nomor); if ( $mode_detail == "insert" ) { $sql->add_param("No_Ref", $nomor); $sql->InsertDB(); } else if ( $mode_detail == "update" ) { $sql->UpdateDB(); } else if ( $mode_detail == "delete" ) { $sql->DeleteDB(); } } $qview = ""; $qtabel = "inv_detail"; if (in_array($mode, ["add","edit"])) { if ($mode=="add") $qview = " AND Unix=".user_unix(); $qtabel = "tmp_inv_detail"; } $obj = new Table($db); $obj->set_query("SELECT D.*,P.Kode_SKU,P.Nama_Produk,P.Nama_Satuan FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D LEFT JOIN vi_inv_produk P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID)"); $obj->add_field("ID", "ID", "hid"); $obj->add_field("Kode_SKU", "SKU", "c"); $obj->add_field("Nama_Produk", "Nama Barang", "awr"); $obj->add_field("Qty", "Qty", "r", "rupiah2"); $obj->add_field("Nama_Satuan", "Satuan", "l"); $obj->set_field_order("Kode_SKU", "A"); if (in_array($mode, ["add","edit"])) { $obj->add_row_btn("clipboard", "Ubah", "OpnameJS.detail_ubah"); $obj->add_row_btn("trash", "Hapus", "OpnameJS.detail_hapus", "Unix", user_unix()); $obj->set_func_btn("OpnameJS.detail_tambah", ' Barang'); $obj->set_func_btn("OpnameJS.produk_brow", ' Browse'); } $obj->set_func_navi("OpnameJS.data_query('tabel-detail')"); $ajson[] = $obj->json_table("divDetailTabel"); } else if ( $data == "brow-tx" ) { $tcari = trim(Param::Get("Cari_TX")); $tsql = ($tcari=="") ? "" : " WHERE CONCAT(No_Opname,DATE_FORMAT(Tgl_Opname,'%d-%m-%Y')) LIKE '%".$tcari."%'"; $obj = new Table($db); $obj->set_table("(SELECT * FROM inv_opname".$tsql.") O LEFT JOIN para_cabang C ON (C.CabID=O.CabID)", "O.*,C.Kode_Cab", ""); $obj->add_field("No_Opname", "No. Transaksi", "c"); $obj->add_field("Tgl_Opname", "Tgl. Transaksi", "c", "sqltgl", null, "val-tgl"); $obj->add_field("Kode_Cab", "Cab", "c"); $obj->add_field("Catatan", "Catatan", "awr"); $obj->set_field_order("No_Opname", "D"); $obj->add_row_btn("save", "Pilih", "OpnameJS.tx_select"); $obj->set_func_navi("OpnameJS.data_query('brow-tx')"); $ajson[] = $obj->db_table("divBrowTX"); } else if ( $data == "brow-produk" ) { $tcari = trim(Param::Get("Cari_Produk")); $ttgl = Param::Get("Tgl_Opname"); $tsql = ($tcari=="") ? "" : " AND CONCAT(P.Kode_Barcode,P.Nama_Produk) LIKE '%".$tcari."%'"; $obj = new Table($db); $obj->set_table("(SELECT InvID,SatuanID,SUM(Stok) Stok FROM inv_detail WHERE Tgl_Ref<='".$ttgl."' AND CabID='".$id_cab."' GROUP BY InvID) D LEFT JOIN vi_inv_produk P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID)", "D.InvID,P.StokID,D.Stok,P.Kode_SKU,P.Nama_Produk,P.Harga_Pokok", "P.Aktif=1".$tsql); $obj->add_field("InvID", "InvID", "hid"); $obj->add_field("StokID", "StokID", "hid"); $obj->add_field("Harga_Pokok", "HPP", "hid"); $obj->add_field("Kode_SKU", "SKU", "c"); $obj->add_field("Nama_Produk", "Nama Barang", "l"); $obj->add_field("Stok", "Stok", "r"); $obj->set_field_order("Kode_SKU", "A"); $obj->add_row_btn("save", "Pilih", "OpnameJS.produk_select"); $obj->set_func_navi("OpnameJS.data_query('brow-produk')"); $ajson[] = $obj->db_table("divBrowProduk"); } else if ( $data == "auto-produk" ) { $tcari = Param::Get("Auto_Query"); $ttgl = Param::Get("Tgl_Opname"); $ajson['autodata'] = []; $bcode = 0; $arec = []; // Cari by SKU $db->Query("SELECT P.*,CONCAT(K.Kode_SKU,' / ',K.Kode_Barcode,':',P.Nama_Produk,':',S.Nama_Satuan,':',K.SatuanID,':',CONVERT(FORMAT(P.Harga_Pokok/K.Qty,2) USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_kemasan WHERE Kode_SKU='".$tcari."' LIMIT 1) K LEFT JOIN inv_produk P ON (P.InvID=K.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=K.SatuanID) WHERE P.Aktif=1"); if ($db->Next()) { $bcode = 1; $arec = $db->AllRow(); } // Cari by Barcode if ($bcode == 0) { $db->Query("SELECT P.*,CONCAT(K.Kode_SKU,' / ',K.Kode_Barcode,':',P.Nama_Produk,':',S.Nama_Satuan,':',K.SatuanID,':',CONVERT(FORMAT(P.Harga_Pokok/K.Qty,2) USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_kemasan WHERE Kode_Barcode='".$tcari."' LIMIT 1) K LEFT JOIN inv_produk P ON (P.InvID=K.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=K.SatuanID) WHERE P.Aktif=1"); if ($db->Next()) { $bcode = 1; $arec = $db->AllRow(); } } if ($bcode == 1) { $ajson['autodata'][] = ['value'=>$arec['InvID'], 'text'=>$arec['Nama_Produk'], 'data'=>$arec['Data2'], 'bc'=>1]; } else { $db->Query("SELECT P.*,IF(IFNULL(X.Stok,0)=0,'KOSONG',ROUND(X.Stok/K.Qty,2)) Sisa_Stok,K.Kode_SKU,S.Nama_Satuan,CONCAT(K.Kode_SKU,' / ',K.Kode_Barcode,':',P.Nama_Produk,':',S.Nama_Satuan,':',K.SatuanID,':',CONVERT(FORMAT(P.Harga_Pokok/K.Qty,2) USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_kemasan WHERE InvID IN (SELECT InvID FROM inv_produk WHERE Aktif=1 AND Nama_Produk LIKE '%".$tcari."%' ORDER BY InvID) ORDER BY InvID) K LEFT JOIN (SELECT * FROM inv_produk WHERE Aktif=1 AND Nama_Produk LIKE '%".$tcari."%' ORDER BY InvID) P ON (K.InvID=P.InvID) LEFT JOIN (SELECT InvID,SUM(Stok) Stok FROM inv_detail WHERE Tgl_Ref<='".tgl_sql2str($ttgl)."' AND CabID='".$id_cab."' GROUP BY InvID) X ON (K.InvID=X.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=K.SatuanID) ORDER BY P.Nama_Produk,K.Qty DESC LIMIT 50"); while ($db->Next()) { $ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Produk"), 'html'=>''.$db->Row("Kode_SKU").' '.$db->Row("Nama_Produk")." ".$db->Row("Nama_Satuan").' ('.$db->Row("Sisa_Stok").')', 'data'=>$db->Row("Data2"), 'bc'=>0]; } } } else if ($data == "detail-produk") { $id = Param::Get("ID", 0); $atabel = ['ID'=>$id, 'InvID'=>Param::Get("InvID"), 'SatuanID'=>Param::Get("SatuanID"), 'HPP'=>Param::Get("HPP")]; if ($id > 0) { $db->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND ID='".$id."' LIMIT 1"); if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow()); } if ($atabel['InvID']>0 && $atabel['SatuanID']>0) { $db->Query("SELECT Kode_SKU,Kode_Barcode,Nama_Produk,Nama_Satuan FROM vi_inv_produk WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1"); if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow()); } $form = new Form($db); $tnama = $form->textauto("_", "Nama_Produk", ['value'=>$atabel['InvID'],'text'=>$atabel['Nama_Produk']], true, true, "ketik sku / barcode / nama barang"); $tkode = $form->textbox("_", "Kode_Barang", $atabel['Kode_SKU']." / ".$atabel['Kode_Barcode'], false, false, "text"); $tqty = $form->textbox("_", "Qty", $atabel['Qty'], true, true, "double"); $tstok = $form->textbox("_", "Stok_Sistem", 0, false, false, "double"); $tsat = $form->textbox("_", "Nama_Satuan", $atabel['Nama_Satuan'], false, false, "text"); $ajson['html'] = '
'.$tkode.'
'.$tnama.'
'.$tsat.'
'.$tstok.'
'.$tqty.'
'; } else if ( $data == "cek_stok") { $id_inv = Param::Get("InvID", 0); $stok = 0; $db->Query("SELECT SUM(Stok) Stok FROM inv_detail WHERE Tgl_Ref<='".tgl_sql2str(Param::Get("Tgl_Opname"))."' AND CabID='".$id_cab."' AND InvID='".$id_inv."'"); if ($db->Next()) $stok = $db->RowFloat("Stok", 2); $ajson[] = ['type'=>"form", 'id'=>"Stok_Sistem", 'value'=>rupiah2($stok)]; } else if ( $data == "default") { echo '
 
 
'; } send_json($ajson); ?>