Advertisement
jamboljack

Penjualan

Apr 22nd, 2020
1,014
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 65.44 KB | None | 0 0
  1. <link href="<?=base_url('backend/js/sweetalert2.css');?>" rel="stylesheet" type="text/css" />
  2. <script src="<?=base_url('backend/js/sweetalert2.min.js');?>"></script>
  3. <script src="<?=base_url('backend/js/jquery.maskMoney.min.js');?>"></script>
  4.  
  5. <div class="page-content-wrapper">
  6.     <div class="page-content">
  7.         <h3 class="page-title">Penjualan Barang</h3>
  8.         <div class="page-bar">
  9.             <ul class="page-breadcrumb">
  10.                 <li>
  11.                     <i class="fa fa-home"></i>
  12.                     <a href="<?=site_url('admin/home');?>">Dashboard</a>
  13.                     <i class="fa fa-angle-right"></i>
  14.                 </li>
  15.                 <li>
  16.                     <a href="#">Menu Transaksi</a>
  17.                     <i class="fa fa-angle-right"></i>
  18.                 </li>
  19.                 <li>
  20.                     <a href="<?=site_url('admin/penjualan');?>">Penjualan Barang</a>
  21.                     <i class="fa fa-angle-right"></i>
  22.                 </li>
  23.                 <li>
  24.                     <a href="#">Tambah Penjualan Barang</a>
  25.                 </li>
  26.             </ul>
  27.             <div class="page-toolbar">
  28.                 <div id="dashboard-report-range" class="pull-right tooltips btn btn-fit-height blue-madison">
  29.                     <i class="icon-calendar">&nbsp; </i><span class="uppercase visible-lg-inline-block"><?=tgl_indo(date('Y-m-d'));?></span>
  30.                 </div>
  31.             </div>
  32.         </div>
  33.  
  34.         <div class="row">
  35.             <div class="col-md-12">
  36.                 <div class="row">
  37.                     <div class="col-md-6">
  38.                         <div class="portlet box blue-madison">
  39.                             <div class="portlet-title">
  40.                                 <div class="caption">
  41.                                     <i class="fa fa-plus-circle"></i> Form Penjualan
  42.                                 </div>
  43.                             </div>
  44.  
  45.                             <div class="portlet-body form">
  46.                                 <form role="form" class="form-horizontal form" method="post" id="formInput" name="formInput">
  47.                                 <input type="hidden" name="pelanggan_id" id="pelanggan_id" value="<?=$detailPelanggan->pelanggan_id;?>">
  48.                                 <input type="hidden" name="disc_pelanggan" id="disc_pelanggan">
  49.  
  50.                                     <div class="form-body">
  51.                                         <div class="form-group form-md-line-input">
  52.                                             <label class="col-md-3 control-label">Tanggal/Hari</label>
  53.                                             <div class="col-md-4">
  54.                                                 <input type="text" class="form-control" name="tanggal" id="tanggal" value="<?=date('d-m-Y');?>" readonly>
  55.                                             </div>
  56.                                             <div class="col-md-4">
  57.                                                 <input type="text" class="form-control" name="hari" id="hari" value="<?=getDay(date('Y-m-d'));?>" readonly>
  58.                                             </div>
  59.                                         </div>
  60.                                         <div class="form-group">
  61.                                             <label class="col-md-3 control-label">Nama Pelanggan</label>
  62.                                             <div class="col-md-8">
  63.                                                 <div class="input-icon right">
  64.                                                     <i class="fa"></i>
  65.                                                     <input type="text" class="form-control" name="nama_pelanggan" id="nama_pelanggan" autocomplete="off" placeholder="Cari Nama Pelanggan" value="<?=$detailPelanggan->pelanggan_nama;?>" autofocus>
  66.                                                 </div>
  67.                                             </div>
  68.                                             <div class="col-md-1">
  69.                                                 <a data-toggle="modal" data-target="#formCariPelanggan" title="Cari Data Pelanggan"><i class="fa fa-search"></i></a>
  70.                                                 <a data-toggle="modal" data-target="#formModalPelanggan" title="Tambah Pelanggan"><i class="fa fa-plus-circle"></i></a>
  71.                                             </div>
  72.                                         </div>
  73.                                         <div class="form-group form-md-line-input">
  74.                                             <label class="col-md-3 control-label">Alamat</label>
  75.                                             <div class="col-md-9">
  76.                                                 <input type="text" class="form-control" name="alamat" id="alamat" value="<?=$detailPelanggan->pelanggan_alamat;?>" autocomplete="off" readonly>
  77.                                             </div>
  78.                                         </div>
  79.                                         <div class="form-group">
  80.                                             <label class="col-md-3 control-label">No. Meja</label>
  81.                                             <div class="col-md-8">
  82.                                                 <div class="input-icon right">
  83.                                                     <i class="fa"></i>
  84.                                                     <select class="form-control" name="lstMeja" id="lstMeja">
  85.                                                         <option value="">- Pilih No. Meja -</option>
  86.                                                         <?php foreach($listMeja as $r) { ?>
  87.                                                         <option value="<?=$r->meja_id;?>"><?=$r->meja_nama;?></option>
  88.                                                         <?php } ?>
  89.                                                     </select>
  90.                                                 </div>
  91.                                             </div>
  92.                                         </div>
  93.                                     </div>
  94.                                 </form>
  95.                             </div>
  96.                         </div>
  97.                     </div>
  98.                     <div class="col-md-6">
  99.                         <div class="portlet box blue-madison">
  100.                             <div class="portlet-title">
  101.                                 <div class="caption">
  102.                                     <i class="fa fa-plus-circle"></i> Total Transaksi : <?=$this->session->userdata('nama');?>
  103.                                 </div>
  104.                             </div>
  105.                             <div class="portlet-body form">
  106.                                 <form role="form" class="form-horizontal form" method="post" id="formTotal" name="formTotal">
  107.                                     <div class="form-body">
  108.                                         <div class="row static-info align-reverse">
  109.                                             <div class="col-md-12 value" id="totalinvoice"></div>
  110.                                         </div>
  111.                                     </div>
  112.                                     <br><br>
  113.                                 </form>
  114.                             </div>
  115.                         </div>
  116.                     </div>
  117.                 </div>  
  118.             </div>
  119.         </div>
  120.  
  121.         <div class="row">
  122.             <div class="col-md-12">
  123.                 <div class="portlet box blue-madison">
  124.                     <div class="portlet-title">
  125.                         <div class="caption">
  126.                             <i class="fa fa-list"></i> Daftar Penjualan Barang
  127.                         </div>
  128.                     </div>
  129.  
  130.                     <div class="portlet-body form">
  131.                         <form method="post" id="formBarang" role="form" name="formBarang" class="form">
  132.                         <input type="hidden" name="barang_id" id="barang_id">
  133.                         <input type="hidden" name="disc_rupiah" id="disc_rupiah">
  134.                         <input type="hidden" name="penjualan_temp_id" id="penjualan_temp_id">
  135.  
  136.                             <div class="form-body">
  137.                                 <div class="row">
  138.                                     <div class="col-md-2">
  139.                                         <div class="form-group">
  140.                                             <label>Kode Barang</label>
  141.                                             <div class="input-group">
  142.                                                 <input type="text" class="form-control" name="kode_barang" id="kode_barang" placeholder="Cari Kode Barang" autocomplete="off">
  143.                                                 <span class="input-group-addon">
  144.                                                     <a data-toggle="modal" data-target="#formDataBarang" title="Cari Data Barang">
  145.                                                         <i class="fa fa-search"></i>
  146.                                                     </a>
  147.                                                 </span>
  148.                                             </div>
  149.                                         </div>
  150.                                     </div>
  151.                                     <div class="col-md-2">
  152.                                         <div class="form-group">
  153.                                             <label>Nama Barang</label>
  154.                                             <input type="text" class="form-control" name="nama_barang" id="nama_barang" readonly>
  155.                                         </div>
  156.                                     </div>
  157.                                     <div class="col-md-1">
  158.                                         <div class="form-group">
  159.                                             <label>Jumlah</label>
  160.                                             <div class="input-icon right">
  161.                                                 <i class="fa"></i>
  162.                                                 <input type="text" class="form-control number" name="qty" id="qty" autocomplete="off" placeholder="0" onkeyup="hitungSubTotal()" disabled>
  163.                                             </div>
  164.                                         </div>
  165.                                     </div>                                  
  166.                                     <div class="col-md-2">
  167.                                         <div class="form-group">
  168.                                             <label>Harga</label>
  169.                                             <input type="text" class="form-control" name="harga" id="harga" autocomplete="off" placeholder="0" readonly>
  170.                                         </div>
  171.                                     </div>
  172.                                     <div class="col-md-1">
  173.                                         <div class="form-group">
  174.                                             <label>Disc (%)</label>
  175.                                             <input type="text" placeholder="0.00" class="form-control digit" name="disc" id="disc" onkeyup="hitungSubTotal()" disabled>
  176.                                         </div>
  177.                                     </div>
  178.                                     <div class="col-md-2">
  179.                                         <div class="form-group">
  180.                                             <label>Sub Total</label>
  181.                                             <input type="text" placeholder="0" class="form-control" name="total" id="total" readonly>
  182.                                         </div>
  183.                                     </div>
  184.                                     <div class="col-md-2">
  185.                                         <div class="form-group">
  186.                                             <label>Keterangan</label>
  187.                                             <input type="text" placeholder="Keterangan" autocomplete="off" class="form-control" name="keterangan" id="keterangan">
  188.                                         </div>
  189.                                     </div>
  190.                                 </div>
  191.                             </div>
  192.                             <div class="form-actions" align="center">
  193.                                 <button class="btn btn-primary" id="btn_item" name="btn_item" disabled><i class="fa fa-floppy-o"></i> Simpan</button>
  194.                                 <a onclick="resetForm()" class="btn btn-danger" id="btn_reset" name="btn_reset" disabled><i class="fa fa-refresh"></i> Reset</a>
  195.                                 <a class="btn btn-primary" id="btn_bayar" data-toggle="modal" data-target="#formModalBayar" disabled><i class="fa fa-credit-card"></i> Bayar</a>
  196.                                 <a href="<?=site_url('admin/penjualan');?>" type="button" class="btn btn-warning"><i class="fa fa-times"></i> Batal</a>
  197.                             </div>
  198.                         </form>
  199.                     </div>
  200.  
  201.                     <div class="portlet-body">
  202.                         <table class="table table-striped table-hover" id="tableData">
  203.                             <thead>
  204.                                 <tr>
  205.                                     <th width="5%"></th>
  206.                                     <th width="5%">No</th>
  207.                                     <th width="10%">Kode</th>
  208.                                     <th>Nama Barang</th>
  209.                                     <th width="5%">Jumlah</th>
  210.                                     <th width="10%">Harga</th>
  211.                                     <th width="5%">Disc (%)</th>
  212.                                     <th width="10%">Sub Total</th>
  213.                                     <th width="25%">Keterangan</th>
  214.                                 </tr>
  215.                             </thead>
  216.                             <tbody>
  217.                             </tbody>
  218.                         </table>
  219.                     </div>
  220.                 </div>
  221.             </div>
  222.         </div>
  223.     </div>
  224. </div>
  225.  
  226. <script type="text/javascript" src="<?=base_url('backend/assets/global/plugins/datatables/media/js/jquery.dataTables.min.js');?>"></script>
  227. <script type="text/javascript" src="<?=base_url('backend/assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.js');?>"></script>
  228. <script type="text/javascript" src="<?=base_url('backend/assets/global/plugins/jquery-validation/js/jquery.validate.min.js');?>"></script>
  229. <script type="text/javascript">
  230. var statusinput;
  231. statusinput = 'Tambah';
  232.  
  233. $(document).ready(function() {
  234.     $('.number').maskMoney({thousands:',', precision:0});
  235.     $('.digit').maskMoney({thousands:'', precision:2});
  236.     hitungTotal();
  237.     dataBarang();
  238.     dataPelanggan();
  239.     document.getElementById("btn_bayar").style.pointerEvents = "none";
  240. });
  241.  
  242. function reload_table() {
  243.     table.ajax.reload(null,false);
  244. }
  245.  
  246. var table;
  247. $(document).ready(function() {
  248.     table = $('#tableData').DataTable({
  249.         "paging": false,
  250.         "info": false,
  251.         "searching": false,
  252.         "destoy": true,
  253.         "responsive": true,
  254.         "processing": false,
  255.         "serverSide": true,
  256.         "order": [],
  257.         "ajax": {
  258.             "url": "<?=site_url('admin/penjualan/data_temp_list')?>",
  259.             "type": "POST"
  260.         },
  261.         "columnDefs": [
  262.             {
  263.                 "targets": [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ],
  264.                 "orderable": false,
  265.             },
  266.             {
  267.                 "targets": [ 0, 1 ],
  268.                 "className": "text-center",
  269.             },
  270.             {
  271.                 "targets": [ 4, 5, 6, 7 ],
  272.                 "className": "text-right",
  273.             }
  274.         ],
  275.     });    
  276. });
  277.  
  278. function dataPelanggan() {
  279.     var tablePelanggan;
  280.     tablePelanggan = $('#tableDataPelanggan').DataTable({
  281.         "destroy": true,
  282.         "responsive": true,
  283.         "processing": false,
  284.         "serverSide": true,
  285.         "order": [],
  286.         "ajax": {
  287.             "url": "<?=site_url('admin/penjualan/data_pelanggan_list'); ?>",
  288.             "type": "POST"
  289.         },
  290.         "columnDefs": [
  291.             {
  292.                 "targets": [0, 1 ],
  293.                 "orderable": false,
  294.             },
  295.             {
  296.                 "targets": [ 0, 1 ],
  297.                 "className": "text-center",
  298.             }
  299.         ],
  300.     });
  301. }
  302.  
  303. function dataBarang() {
  304.     var tableBarang;
  305.     tableBarang = $('#tableDataBarang').DataTable({
  306.         "destroy": true,
  307.         "responsive": true,
  308.         "processing": false,
  309.         "serverSide": true,
  310.         "order": [],
  311.         "ajax": {
  312.             "url": "<?=site_url('admin/penjualan/data_barang_list'); ?>",
  313.             "type": "POST"
  314.         },
  315.         "columnDefs": [
  316.             {
  317.                 "targets": [ 0, 1 ],
  318.                 "orderable": false,
  319.             },
  320.             {
  321.                 "targets": [ 0, 1, 5 ],
  322.                 "className": "text-center",
  323.             },
  324.             {
  325.                 "targets": [ 6 ],
  326.                 "className": "text-right",
  327.             }
  328.         ],
  329.     });
  330. }
  331.  
  332. function pilihPelanggan(id) {
  333.     $.ajax({
  334.         url : "<?=site_url('admin/penjualan/get_data_pelanggan/'); ?>" + id,
  335.         type: "GET",
  336.         dataType: "JSON",
  337.         success: function(data) {
  338.             $('#pelanggan_id').val(data.pelanggan_id);
  339.             $('#nama_pelanggan').val(data.pelanggan_nama);
  340.             $('#alamat').val(data.pelanggan_alamat);
  341.             $('#disc_pelanggan').val(data.pelanggan_disc);
  342.             $('#poin').val(data.pelanggan_poin);
  343.             if (data.pelanggan_poin != 0) {
  344.                 document.formBayar.tukar_poin.disabled=false;
  345.             } else {
  346.                 document.formBayar.tukar_poin.disabled=true;
  347.             }
  348.             $("#btn_bayar").attr("disabled", false);
  349.             document.getElementById("btn_bayar").style.pointerEvents = "auto";
  350.             $('#formCariPelanggan').modal('hide');
  351.         },
  352.         error: function (jqXHR, textStatus, errorThrown) {
  353.             alert('Error get data from ajax');
  354.         }
  355.     });
  356. }
  357.  
  358. function pilihData(id) {
  359.     $.ajax({
  360.         url : "<?=site_url('admin/penjualan/get_data_barang/'); ?>" + id,
  361.         type: "GET",
  362.         dataType: "JSON",
  363.         success: function(data) {
  364.             var locale          = 'en';
  365.             var options         = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  366.             var formatter       = new Intl.NumberFormat(locale, options);
  367.             var disc_pelanggan  = document.getElementById("disc_pelanggan").value;
  368.             $('#barang_id').val(data.barang_id);
  369.             $('#kode_barang').val(data.barang_kode);
  370.             $('#nama_barang').val(data.barang_nama);
  371.             $('#kategori').val(data.kategori_nama);
  372.             $('#harga').val(formatter.format(data.barang_total));
  373.             $('#qty').val(1);
  374.             $('#disc').val(disc_pelanggan);
  375.             $('#total').val(formatter.format(data.barang_total));
  376.             document.formBarang.qty.disabled=false;
  377.             document.formBarang.disc.disabled=false;
  378.             document.formBarang.btn_item.disabled=false;
  379.             $("#btn_reset").attr("disabled", false);
  380.             $('#formDataBarang').modal('hide');
  381.             hitungSubTotal();
  382.             $('#qty').focus();
  383.         },
  384.         error: function (jqXHR, textStatus, errorThrown) {
  385.             alert('Error get data from ajax');
  386.         }
  387.     });
  388. }
  389.  
  390. function hitungSubTotal() {
  391.     var locale      = 'en';
  392.     var options     = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  393.     var formatter   = new Intl.NumberFormat(locale, options);
  394.     var myForm      = document.formBarang;
  395.     var Qty         = myForm.qty.value;
  396.     Qty             = Qty.replace(/[,]/g, ''); // Ini String
  397.     Qty             = parseInt(Qty); // Ini Integer
  398.     var Harga       = myForm.harga.value;
  399.     Harga           = Harga.replace(/[,]/g, ''); // Ini String
  400.     Harga           = parseInt(Harga); // Ini Integer
  401.     var Disc        = myForm.disc.value;
  402.     var SubTotal;
  403.     if (Disc == '') {
  404.         Disc        = 0;
  405.         SubTotal    = (Qty*Harga);
  406.     } else {
  407.         Disc        = parseFloat(Disc); // Ini Float
  408.         Disc        = (((Qty*Harga)*Disc)/100);
  409.         SubTotal    = ((Qty*Harga)-Disc);
  410.     }
  411.  
  412.     myForm.disc_rupiah.value = Disc;
  413.  
  414.     if (SubTotal > 0) {
  415.         myForm.total.value = formatter.format(SubTotal);
  416.     } else {
  417.         myForm.total.value = 0;
  418.     }
  419. }
  420.  
  421. function resetForm() {
  422.     statusinput = 'Tambah';
  423.     $('#barang_id').val('');
  424.     $('#kode_barang').val('');
  425.     $('#nama_barang').val('');
  426.     $('#qty').val('');
  427.     $('#disc').val('');
  428.     $('#disc_rupiah').val('');
  429.     $('#harga').val('');
  430.     $('#total').val('');
  431.     $('#keterangan').val('');
  432.     document.formBarang.qty.disabled=true;
  433.     document.formBarang.disc.disabled=true;
  434.     $("#btn_item").attr("disabled", true);
  435.     $("#btn_reset").attr("disabled", true);
  436.     $("#btn_bayar").attr("disabled", false);
  437.     document.getElementById("btn_bayar").style.pointerEvents = "auto";
  438.     dataBarang();
  439.     $('#kode_barang').focus();
  440.  
  441.     var MValid = $("#formBarang");
  442.     MValid.validate().resetForm();
  443. }
  444.  
  445. $(document).ready(function() {
  446.     var form    = $('form');
  447.     var error   = $('.alert-danger', form);
  448.     var success = $('.alert-success', form);
  449.  
  450.     $("form").validate({
  451.         errorElement: 'span',
  452.         errorClass: 'help-block help-block-error',
  453.         focusInvalid: false,
  454.         ignore: "",
  455.         rules: {
  456.             nama_pelanggan: { required: true },
  457.             lstMeja: { required: true },
  458.             kode_barang: { required: true },
  459.             qty: { required: true }
  460.         },
  461.         messages: {
  462.             nama_pelanggan: { required :'Nama Pelanggan required' },
  463.             lstMeja: { required :'No. Meja required' },
  464.             kode_barang: { required :'Kode Barang required' },
  465.             qty: { required :'Jumlah required' }
  466.         },
  467.         invalidHandler: function (event, validator) {
  468.             success.hide();
  469.             error.show();
  470.             Metronic.scrollTo(error, -200);
  471.         },
  472.         errorPlacement: function (error, element) {
  473.             var icon = $(element).parent('.input-icon').children('i');
  474.             icon.removeClass('fa-check').addClass("fa-warning");
  475.             icon.attr("data-original-title", error.text()).tooltip({'container': 'body'});
  476.         },
  477.         highlight: function (element) {
  478.             $(element)
  479.             .closest('.form-group').removeClass("has-success").addClass('has-error');
  480.         },
  481.         unhighlight: function (element) {
  482.         },
  483.         success: function (label, element) {
  484.             var icon = $(element).parent('.input-icon').children('i');
  485.             $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
  486.             icon.removeClass("fa-warning").addClass("fa-check");
  487.         },
  488.         submitHandler: function(form) {
  489.             if (statusinput == 'Tambah') {
  490.                 dataString = $(".form").serialize();
  491.                 $.ajax({
  492.                     url: '<?=site_url('admin/penjualan/saveitem');?>',
  493.                     type: "POST",
  494.                     data: dataString,
  495.                     success: function(data) {
  496.                         resetForm();
  497.                         reload_table();
  498.                         hitungTotal();
  499.                     },
  500.                     error: function() {
  501.                         swal({
  502.                             title:"Error",
  503.                             text: "Simpan Item Gagal",
  504.                             timer: 2000,
  505.                             showConfirmButton: false,
  506.                             type: "error"
  507.                         });
  508.                     }
  509.                 });
  510.             } else {
  511.                 dataString = $(".form").serialize();
  512.                 $.ajax({
  513.                     url: '<?=site_url('admin/penjualan/updateitem');?>',
  514.                     type: "POST",
  515.                     data: dataString,
  516.                     success: function(data) {
  517.                         resetForm();
  518.                         reload_table();
  519.                         hitungTotal();
  520.                     },
  521.                     error: function() {
  522.                         swal({
  523.                             title:"Error",
  524.                             text: "Update Item Gagal",
  525.                             timer: 2000,
  526.                             showConfirmButton: false,
  527.                             type: "error"
  528.                         });
  529.                     }
  530.                 });
  531.             }
  532.         }
  533.     });
  534. });
  535.  
  536. function hitungTotal() {
  537.     $.ajax({
  538.         url : "<?=site_url('admin/penjualan/get_data_total_temp');?>",
  539.         type: "GET",
  540.         dataType: "JSON",
  541.         success: function(data) {
  542.             var locale      = 'en';
  543.             var options     = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  544.             var formatter   = new Intl.NumberFormat(locale, options);
  545.  
  546.             var Total = 0;
  547.             var TotalJual = 0;
  548.             if (data == null) {
  549.                 Total        = 0;
  550.                 TotalJual    = 0;
  551.             } else if (data.total == null) {
  552.                 Total        = 0;
  553.                 TotalJual    = 0;
  554.             } else {
  555.                 TotalJual       = data.total;
  556.                 Total           = formatter.format(TotalJual);
  557.             }
  558.  
  559.             $('#totalpenjualan').val(TotalJual);
  560.             $('#bayar_subtotal').val(Total);
  561.             $('#totalinvoice').text('Rp. '+Total);
  562.             // $('#totalpenjualan').val(TotalJual);
  563.             // $('#bayar_total').val(formatter.format(TotalJual));
  564.  
  565.             var PPNJual     = '<?=$dataMeta->meta_ppn;?>';
  566.             var PPN         = 0;
  567.             var Bayar_Total = 0;
  568.             if (PPNJual === 0) {
  569.                 PPN             = 0;
  570.                 var Bayar_Total = TotalJual;
  571.             } else {
  572.                 PPN             = parseInt(((PPNJual*TotalJual)/100));
  573.                 var Bayar_Total = (parseInt(TotalJual)+PPN);
  574.             }
  575.  
  576.             console.log(PPN, Bayar_Total);
  577.  
  578.             $('#ppn_rupiah').val(PPN);
  579.             $('#totalpenjualan').val(Bayar_Total);
  580.             $('#bayar_total').val(formatter.format(Bayar_Total));
  581.         },
  582.         error: function (jqXHR, textStatus, errorThrown) {
  583.             alert('Error get Total');
  584.         }
  585.     });
  586. }
  587.  
  588. function editData(id) {
  589.     statusinput = 'Edit';
  590.     $.ajax({
  591.         url : "<?=site_url('admin/penjualan/get_data_item/');?>"+id,
  592.         type: "GET",
  593.         dataType: "JSON",
  594.         success: function(data) {
  595.             var locale      = 'en';
  596.             var options     = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  597.             var formatter   = new Intl.NumberFormat(locale, options);
  598.             var options1    = {minimumFractionDigits: 2, maximumFractionDigits: 2};
  599.             var formatter1  = new Intl.NumberFormat(locale, options1);
  600.             $('#penjualan_temp_id').val(data.penjualan_temp_id);
  601.             $('#barang_id').val(data.barang_id);
  602.             $('#kode_barang').val(data.penjualan_temp_kode);
  603.             $('#nama_barang').val(data.penjualan_temp_nama);
  604.             $('#qty').val(formatter.format(data.penjualan_temp_qty));
  605.             $('#disc').val(formatter1.format(data.penjualan_temp_disc));
  606.             $('#disc_rupiah').val(data.penjualan_temp_disc_rp);
  607.             $('#harga').val(formatter.format(data.penjualan_temp_harga));
  608.             $('#total').val(formatter.format(data.penjualan_temp_subtotal));
  609.             $('#keterangan').val(data.penjualan_temp_keterangan);
  610.             document.formBarang.qty.disabled=false;
  611.             document.formBarang.disc.disabled=false;
  612.             document.formBarang.harga.disabled=false;
  613.             document.formBarang.btn_item.disabled=false;
  614.             $("#btn_reset").attr("disabled", false);
  615.             $('#kode_barang').focus();
  616.         },
  617.         error: function (jqXHR, textStatus, errorThrown) {
  618.             alert('Error get data from ajax');
  619.         }
  620.     });
  621. }
  622.  
  623. function hapusData(penjualan_temp_id) {
  624.     var id = penjualan_temp_id;
  625.     swal({
  626.         title: 'Anda Yakin ?',
  627.         text: 'Item ini akan di Hapus !',
  628.         type: 'warning',
  629.         showCancelButton: true,
  630.         confirmButtonColor: '#3085d6',
  631.         cancelButtonColor: '#d33',
  632.         confirmButtonText: 'Ya',
  633.         cancelButtonText: 'Batal',
  634.         closeOnConfirm: true
  635.     }, function(isConfirm) {
  636.         if (!isConfirm) return;
  637.         $.ajax({
  638.             url : "<?=site_url('admin/penjualan/deleteitem')?>/"+id,
  639.             type: "POST",
  640.             success: function(data) {
  641.                 resetForm();
  642.                 reload_table();
  643.                 hitungTotal();
  644.             },
  645.             error: function (jqXHR, textStatus, errorThrown) {
  646.                 alert('Hapus Item Gagal');
  647.             }
  648.         });
  649.     });
  650. }
  651.  
  652. function resetFormJual() {
  653.     statusinput = 'Tambah';
  654.     $('#pelanggan_id').val('');
  655.     $('#nama_pelanggan').val('');
  656.     $('#alamat').val('');
  657.     $('#lstMeja').val('');
  658.     $('#barang_id').val('');
  659.     $('#barang_kode').val('');
  660.     $('#nama_barang').val('');
  661.     $('#qty').val('');
  662.     $('#disc').val('');
  663.     $('#disc_rupiah').val('');
  664.     $('#harga').val('');
  665.     $('#total').val('');
  666.     $('#keterangan').val('');
  667.     $('#totalpenjualan').val('');
  668.     $('#ppn_rupiah').val('');
  669.     $('#poin').val('');
  670.     $('#tukar_poin').val('');
  671.     $('#tukar_poin_rp').val('');
  672.     $('#bayar_subtotal').val('');
  673.     $('#diskon').val('');
  674.     $('#bayar_total').val('');
  675.     $('#lstTipe').val('');
  676.     $('#bayar').val('');
  677.     $('#kembali').val('');
  678.  
  679.     document.formBarang.qty.disabled=true;
  680.     document.formBarang.disc.disabled=true;
  681.     document.formBarang.harga.disabled=true;
  682.     document.formBarang.btn_item.disabled=false;
  683.     $("#btn_bayar").attr("disabled", true);
  684.     $("#btn_reset").attr("disabled", true);
  685.     document.getElementById("btn_bayar").style.pointerEvents = "none";
  686.     dataBarang();
  687.     dataPelanggan();
  688.     hitungTotal();
  689.  
  690.     var MValid = $("form");
  691.     MValid.validate().resetForm();
  692.     MValid.find(".has-success, .has-warning, .fa-warning, .fa-check").removeClass("has-success has-warning fa-warning fa-check");
  693.     MValid.find("i.fa[data-original-title]").removeAttr('data-original-title');
  694.     document.getElementById("nama_pelanggan").focus();
  695. }
  696.  
  697. function resetformPelanggan() {
  698.     $("#nomor").val('');
  699.     $("#nama").val('');
  700.     $("#alamat_pelanggan").val('');
  701.     $("#kota").val('');
  702.     $("#telp").val('');
  703.     $("#tgl_expired").val('');
  704.     $("#disc_plg").val('');
  705.  
  706.     var MValid = $("#formPelanggan");
  707.     MValid.validate().resetForm();
  708.     MValid.find(".has-error").removeClass("has-error");
  709.     MValid.removeAttr('aria-describedby');
  710.     MValid.removeAttr('aria-invalid');
  711. }
  712.  
  713. $(document).ready(function() {
  714.     var form        = $('#formPelanggan');
  715.     var error       = $('.alert-danger', form);
  716.     var success     = $('.alert-success', form);
  717.  
  718.     $("#formPelanggan").validate({
  719.         errorElement: 'span',
  720.         errorClass: 'help-block help-block-error',
  721.         focusInvalid: false,
  722.         ignore: "",
  723.         rules: {
  724.             nomor: { required: true,
  725.                 remote: {
  726.                     url: "<?=site_url('admin/penjualan/register_nomor_exists'); ?>",
  727.                     type: "post",
  728.                     data: {
  729.                         nomor: function() {
  730.                             return $("#nomor").val();
  731.                         }
  732.                     }
  733.                 }
  734.             },
  735.             nama: { required: true },
  736.             alamat_pelanggan: { required: true },
  737.             kota: { required: true },
  738.             telp: { required: true },
  739.             tgl_expired: { required: true }
  740.         },
  741.         messages: {
  742.             nomor: { required :'Nomor ID required', remote:'Nomor ID sudah Ada' },
  743.             nama: { required :'Nama Pelanggan required' },
  744.             alamat_pelanggan: { required :'Alamat required' },
  745.             kota: { required :'Kota required' },
  746.             telp: { required :'No. Telp required' },
  747.             tgl_expired: { required :'Tgl. Expired required' }
  748.         },
  749.         invalidHandler: function (event, validator) {
  750.             success.hide();
  751.             error.show();
  752.             Metronic.scrollTo(error, -200);
  753.         },
  754.         highlight: function (element) {
  755.             $(element).closest('.form-group').addClass('has-error');
  756.         },
  757.         unhighlight: function (element) {
  758.             $(element).closest('.form-group').removeClass('has-error');
  759.         },
  760.         success: function (label) {
  761.             label.closest('.form-group').removeClass('has-error');
  762.         }
  763.     });
  764.  
  765.     $("#btn_pelanggan").click(function() {
  766.         if($('#formPelanggan').valid()) {
  767.             simpanPelanggan();
  768.         }
  769.     });
  770. });
  771.  
  772. function simpanPelanggan() {
  773.     dataString = $("#formPelanggan").serialize();
  774.     $.ajax({
  775.         url: '<?=site_url('admin/penjualan/savedatapelanggan');?>',
  776.         type: "POST",
  777.         data: dataString,
  778.         success: function(data) {
  779.             swal({
  780.                 title:"Sukses",
  781.                 text: "Simpan Data Pelanggan Sukses",
  782.                 timer: 2000,
  783.                 showConfirmButton: false,
  784.                 type: "success"
  785.             });
  786.             $('#formModalPelanggan').modal('hide');
  787.             resetformPelanggan();
  788.             dataPelanggan();
  789.         },
  790.         error: function() {
  791.             swal({
  792.                 title:"Error",
  793.                 text: "Simpan Data Pelanggan Gagal",
  794.                 timer: 2000,
  795.                 showConfirmButton: false,
  796.                 type: "error"
  797.             });
  798.             $('#formModalPelanggan').modal('hide');
  799.             resetformPelanggan();
  800.         }
  801.     });
  802.     return false;
  803. }
  804.  
  805. function hitungDiskon() {
  806.     var locale              = 'en';
  807.     var options             = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  808.     var formatter           = new Intl.NumberFormat(locale, options);
  809.     var myForm              = document.formBayar;
  810.     var Subtotal            = myForm.bayar_subtotal.value;
  811.     Subtotal                = Subtotal.replace(/[,]/g, '');
  812.     Subtotal                = parseInt(Subtotal);
  813.     var DiskonPOIN          = myForm.tukar_poin_rp.value;
  814.     DiskonPOIN              = DiskonPOIN.replace(/[,]/g, '');
  815.     DiskonPOIN              = parseInt(DiskonPOIN);
  816.     var Diskon              = myForm.diskon.value;
  817.     Diskon                  = Diskon.replace(/[,]/g, '');
  818.     Diskon                  = parseInt(Diskon);
  819.     var Ppn                 = myForm.bayar_ppn.value;
  820.     Ppn                     = Ppn.replace(/[,]/g, '');
  821.     Ppn                     = parseFloat(Ppn);
  822.     var Total               = myForm.bayar_total.value;
  823.     Total                   = Total.replace(/[,]/g, '');
  824.     Total                   = parseInt(Total);
  825.  
  826.     if (Ppn === 0 || isNaN(Ppn)) {
  827.         var Pajak = 0;
  828.     } else {
  829.         var Pajak = Ppn;
  830.     }
  831.  
  832.     if (isNaN(DiskonPOIN)) {
  833.         DiskonPOIN = 0
  834.     } else {
  835.         DiskonPOIN = DiskonPOIN;
  836.     }
  837.  
  838.     // console.log(Subtotal, Pajak, DiskonPOIN, Diskon, Total);
  839.  
  840.     if (Diskon === 0 || isNaN(Diskon)) {
  841.         var SubTotalAkhir   = (Subtotal-DiskonPOIN);
  842.         var PPN             = ((Pajak*SubTotalAkhir)/100);
  843.         var TotalAkhir      = (SubTotalAkhir+PPN);
  844.         // var TotalAkhir      = SubTotalAkhir;
  845.     } else {
  846.         var SubTotalAkhir   = (Subtotal-(Diskon+DiskonPOIN));
  847.         var PPN             = ((Pajak*SubTotalAkhir)/100);
  848.         var TotalAkhir      = (SubTotalAkhir+PPN);
  849.         // var TotalAkhir      = SubTotalAkhir;
  850.     }
  851.  
  852.     if (isNaN(TotalAkhir)) {
  853.         myForm.bayar_total.value = 0;
  854.         $('#totalpenjualan').val(0);
  855.     } else {
  856.         myForm.bayar_total.value = formatter.format(TotalAkhir);
  857.         $('#totalpenjualan').val(TotalAkhir);
  858.     }
  859. }
  860.  
  861. function tukarPOIN() {
  862.     var Nominal    = '<?=$dataMeta->meta_tukar_poin;?>';
  863.     var locale     = 'en';
  864.     var options    = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  865.     var formatter  = new Intl.NumberFormat(locale, options);
  866.     var myForm     = document.formBayar;
  867.     var POIN       = myForm.poin.value;
  868.     POIN           = POIN.replace(/[,]/g, '');
  869.     POIN           = parseInt(POIN);
  870.     var Tukar      = myForm.tukar_poin.value;
  871.     Tukar          = Tukar.replace(/[,]/g, '');
  872.     Tukar          = parseInt(Tukar);
  873.  
  874.     if (Tukar === 0 || isNaN(Tukar)) {
  875.         var DiskonPOIN = 0;
  876.     } else {
  877.         var DiskonPOIN = (Tukar*Nominal);
  878.     }
  879.  
  880.     if (isNaN(DiskonPOIN)) {
  881.         myForm.tukar_poin_rp.value = 0;
  882.     } else {
  883.         myForm.tukar_poin_rp.value = formatter.format(DiskonPOIN);
  884.     }
  885.     hitungDiskon();
  886. }
  887.  
  888. function hitungKembalian() {
  889.     var locale              = 'en';
  890.     var options             = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  891.     var formatter           = new Intl.NumberFormat(locale, options);
  892.     var myForm              = document.formBayar;
  893.     var Total               = myForm.bayar_total.value;
  894.     Total                   = Total.replace(/[,]/g, '');
  895.     Total                   = parseInt(Total);
  896.     var Bayar               = myForm.bayar.value;
  897.     Bayar                   = Bayar.replace(/[,]/g, '');
  898.     Bayar                   = parseInt(Bayar);
  899.     var Kembali;
  900.     if (Bayar < Total) {
  901.         Kembali = 0;
  902.     } else {
  903.         Kembali = (Bayar-Total);
  904.     }
  905.  
  906.     if (isNaN(Kembali)) {
  907.         myForm.kembali.value     = 0;
  908.     } else {
  909.         myForm.kembali.value     = formatter.format(Kembali);
  910.     }
  911. }
  912.  
  913. $.validator.addMethod("moreEqualthan", function(value, element, param) {
  914.     return this.optional(element) || value >= $(param).val();
  915. }, "Pembayaran Kurang");
  916.  
  917.  
  918. $(document).ready(function() {
  919.     var form        = $('#formBayar');
  920.     var error       = $('.alert-danger', form);
  921.     var success     = $('.alert-success', form);
  922.  
  923.     $("#formBayar").validate({
  924.         errorElement: 'span',
  925.         errorClass: 'help-block help-block-error',
  926.         focusInvalid: false,
  927.         ignore: "",
  928.         rules: {
  929.             lstTipe: { required: true },
  930.             bayar: { required: true, number: true, moreEqualthan:'input[name="totalpenjualan"]' }
  931.         },
  932.         messages: {
  933.             lstTipe: { required :'Tipe Bayar required' },
  934.             bayar: { required :'Bayar required', number:'Harus Angka' }
  935.         },
  936.         invalidHandler: function (event, validator) {
  937.             success.hide();
  938.             error.show();
  939.             Metronic.scrollTo(error, -200);
  940.         },
  941.         highlight: function (element) {
  942.             $(element).closest('.form-group').addClass('has-error');
  943.         },
  944.         unhighlight: function (element) {
  945.             $(element).closest('.form-group').removeClass('has-error');
  946.         },
  947.         success: function (label) {
  948.             label.closest('.form-group').removeClass('has-error');
  949.         }
  950.     });
  951.  
  952.     $("#btn_simpan").click(function() {
  953.         if($('#formBayar').valid()) {
  954.             simpanTransaksi();
  955.         }
  956.     });
  957. });
  958.  
  959.  
  960. var printer = new Recta('2785262214', '1811');
  961. function simpanTransaksi() {
  962.     dataString = $(".form").serialize();
  963.     $.ajax({
  964.         url: '<?=site_url('admin/penjualan/savedata');?>',
  965.         type: "POST",
  966.         data: dataString,
  967.         dataType: 'JSON',
  968.         success: function(data) {
  969.             // swal({
  970.             //     title:"Sukses",
  971.             //     text: "Simpan Transaksi Sukses",
  972.             //     timer: 2000,
  973.             //     showConfirmButton: false,
  974.             //     type: "success"
  975.             // });
  976.            
  977.             if (data.id != '') {
  978.                 swal({
  979.                     title:"Sukses",
  980.                     text: "Simpan Transaksi Sukses",
  981.                     timer: 2000,
  982.                     showConfirmButton: false,
  983.                     type: "success"
  984.                 });
  985.                
  986.                 // Cari Data by ID Penjualan Baru untuk Cetak Nota
  987.                 var penjualan_id = data.id;
  988.                 for(var x = 0; x <= 2; x++) {
  989.                     console.log(x);
  990.                     if (x < 2) {
  991.                         $.ajax({
  992.                             url: '<?=site_url('admin/penjualan/get_data/');?>'+penjualan_id,
  993.                             type: "POST",
  994.                             dataType: 'JSON',
  995.                             success: function(datap) {
  996.                                 var locale        = 'en';
  997.                                 var options       = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  998.                                 var formatter     = new Intl.NumberFormat(locale, options);
  999.                                 var NoOrder       = datap.penjualan_no;
  1000.                                 var Tanggal       = datap.penjualan_tanggal;
  1001.                                 var Jam           = datap.penjualan_jam;
  1002.                                 var NamaPelanggan = datap.pelanggan_nama;
  1003.                                 var Kasir         = datap.user_username;
  1004.                                 var Meja          = datap.meja_nama;
  1005.                                 Header(NoOrder, Tanggal, Jam, NamaPelanggan, Kasir, Meja);
  1006.                                 // Detail Item
  1007.                                 $.ajax({
  1008.                                     url: '<?=site_url('admin/penjualan/get_list_item/');?>'+penjualan_id,
  1009.                                     type: "POST",
  1010.                                     dataType: 'JSON',
  1011.                                     success: function(dataitem) {
  1012.                                         if (dataitem != null) {
  1013.                                             var x = dataitem.length;
  1014.                                             for(var i = 0; i < x; i++) {
  1015.                                                 var NamaBarang = dataitem[i].penjualan_detail_nama;
  1016.                                                 var Harga      = formatter.format(dataitem[i].penjualan_detail_harga);
  1017.                                                 var Qty        = formatter.format(dataitem[i].penjualan_detail_qty);
  1018.                                                 var Subtotal   = formatter.format(dataitem[i].penjualan_detail_subtotal);
  1019.                                                 // console.log(NamaBarang, Harga, Qty, Subtotal);
  1020.                                                 ListItem(NamaBarang, Harga, Qty, Subtotal);
  1021.                                             }
  1022.  
  1023.                                             var TipeBayar  = datap.tipe_nama;
  1024.                                             var SubTotal   = formatter.format(datap.penjualan_subtotal);
  1025.                                             var Diskon     = formatter.format(datap.penjualan_diskon);
  1026.                                             var DiskonPOIN = formatter.format(datap.penjualan_tukar_poin_rp);
  1027.                                             var PPN        = formatter.format(datap.penjualan_ppn);
  1028.                                             var Total      = formatter.format(datap.penjualan_total);
  1029.                                             // console.log(SubTotal, Diskon, DiskonPOIN, Total);
  1030.                                             Footer(TipeBayar, SubTotal, Diskon, DiskonPOIN, PPN, Total);
  1031.                                             FooterEnd();
  1032.                                         }
  1033.                                     }
  1034.                                 });
  1035.                             }
  1036.                         });
  1037.                     } else {
  1038.                         $.ajax({
  1039.                             url: '<?=site_url('admin/penjualan/get_data/');?>'+penjualan_id,
  1040.                             type: "POST",
  1041.                             dataType: 'JSON',
  1042.                             success: function(datap) {
  1043.                                 var locale        = 'en';
  1044.                                 var options       = {minimumFractionDigits: 0, maximumFractionDigits: 0};
  1045.                                 var formatter     = new Intl.NumberFormat(locale, options);
  1046.                                 var NoOrder       = datap.penjualan_no;
  1047.                                 var Tanggal       = datap.penjualan_tanggal;
  1048.                                 var Jam           = datap.penjualan_jam;
  1049.                                 var NamaPelanggan = datap.pelanggan_nama;
  1050.                                 var Kasir         = datap.user_username;
  1051.                                 var Meja          = datap.meja_nama;
  1052.                                 Header(NoOrder, Tanggal, Jam, NamaPelanggan, Kasir, Meja);
  1053.                                 $.ajax({
  1054.                                     url: '<?=site_url('admin/penjualan/get_list_item/');?>'+penjualan_id,
  1055.                                     type: "POST",
  1056.                                     dataType: 'JSON',
  1057.                                     success: function(dataitem) {
  1058.                                         if (dataitem != null) {
  1059.                                             var x = dataitem.length;
  1060.                                             for(var i = 0; i < x; i++) {
  1061.                                                 var NamaBarang = dataitem[i].penjualan_detail_nama;
  1062.                                                 var Qty        = formatter.format(dataitem[i].penjualan_detail_qty);
  1063.                                                 var Keterangan = dataitem[i].penjualan_detail_keterangan;
  1064.                                                 ListItemChecker(NamaBarang, Qty, Keterangan);
  1065.                                             }
  1066.                                             FooterChecker();
  1067.                                         }
  1068.                                     }
  1069.                                 });
  1070.                             }
  1071.                         });
  1072.                     }
  1073.                 }
  1074.             } else {
  1075.                 console.log('ID Kosong');
  1076.             }
  1077.  
  1078.             $('#formModalBayar').modal('hide');
  1079.             reload_table();
  1080.             resetFormJual();
  1081.         },
  1082.         error: function() {
  1083.             swal({
  1084.                 title:"Error",
  1085.                 text: "Simpan Transaksi Gagal",
  1086.                 timer: 2000,
  1087.                 showConfirmButton: false,
  1088.                 type: "error"
  1089.             });
  1090.             $('#formModalBayar').modal('hide');
  1091.             reload_table();
  1092.             resetFormJual();
  1093.         }
  1094.     });
  1095.     return false;
  1096. }
  1097.  
  1098. function Header(NoOrder, Tanggal, Jam, NamaPelanggan, Kasir) {
  1099.     var LimitChar = 20;
  1100.     var NamaToko  = '<?=$Toko->contact_name;?>';
  1101.     var Alamat    = '<?=$Toko->contact_address;?>';
  1102.     var Telp      = '<?=$Toko->contact_phone;?>';
  1103.  
  1104.     if(NamaToko.length <= LimitChar) {
  1105.         txtToko = NamaToko;
  1106.     } else {
  1107.         txtToko = NamaToko.substring(0, LimitChar);
  1108.     }
  1109.  
  1110.     if(Alamat.length <= LimitChar) {
  1111.         txtAlamat = Alamat;
  1112.     } else {
  1113.         txtAlamat = Alamat.substring(0, LimitChar);
  1114.     }
  1115.  
  1116.     if(Telp.length <= LimitChar) {
  1117.         txtTelp = Telp;
  1118.     } else {
  1119.         txtTelp = Telp.substring(0, LimitChar);
  1120.     }
  1121.  
  1122.     if(NoOrder.length <= LimitChar) {
  1123.         txtNoOrder = NoOrder;
  1124.     } else {
  1125.         txtNoOrder = NoOrder.substring(0, LimitChar);
  1126.     }
  1127.  
  1128.     if(NamaPelanggan.length <= LimitChar) {
  1129.         txtNamaPelanggan = NamaPelanggan;
  1130.     } else {
  1131.         txtNamaPelanggan = NamaPelanggan.substring(0, LimitChar);
  1132.     }
  1133.  
  1134.     printer.open().then(function () {
  1135.       printer.align('center')
  1136.         .text('<?=base_url('img/logo-bs.jpeg');?>')
  1137.         .bold(false)
  1138.         .text('================================')
  1139.         .text('             RUKO UMK           ')
  1140.         .print()
  1141.     })
  1142.  
  1143.     printer.open().then(function () {
  1144.       printer.align('left')
  1145.         .text('No  Order : '+txtNoOrder)
  1146.         .text('Tanggal   : '+Tanggal+" "+Jam)
  1147.         .text('Pelanggan : '+txtNamaPelanggan)
  1148.         .text('Kasir     : '+Kasir)
  1149.         .text('Meja      : '+Meja)
  1150.         .text('--------------------------------')
  1151.         .print()
  1152.     })
  1153. }
  1154.  
  1155. function ListItem(NamaBarang, Harga, Qty, Subtotal) {
  1156.     var limitNamaBarang = 11;
  1157.     var limitHarga      = 7;
  1158.     var limitQty        = 3;
  1159.     var limitSubtotal   = 9;
  1160.     var txtBarang       = '';
  1161.     var txtHarga        = 0;
  1162.     var txtQty          = 0;
  1163.     var txtSubtotal     = 0;
  1164.  
  1165.     if(NamaBarang.length <= limitNamaBarang) {
  1166.         txtBarang = NamaBarang.padEnd(limitNamaBarang, ' ')
  1167.     } else {
  1168.         txtBarang = NamaBarang.substring(0, limitNamaBarang);
  1169.     }
  1170.  
  1171.     if (Harga.length <= limitHarga) {
  1172.         txtHarga = Harga.padStart(limitHarga, ' ')
  1173.     } else {
  1174.         txtHarga = Harga.substring(0, limitHarga);
  1175.     }
  1176.  
  1177.     if (Qty.length <= limitQty) {
  1178.         txtQty = Qty.padStart(limitQty, ' ')
  1179.     } else {
  1180.         txtQty = Qty.substring(0, limitQty);
  1181.     }
  1182.  
  1183.     if (Subtotal.length <= limitSubtotal) {
  1184.         txtSubtotal = Subtotal.padStart(limitSubtotal, ' ')
  1185.     } else {
  1186.         txtSubtotal = Subtotal.substring(0, limitSubtotal);
  1187.     }
  1188.  
  1189.     // var printer = new Recta('2785262214', '1811')
  1190.     printer.open().then(function () {
  1191.       printer.align('left')
  1192.         .text(txtBarang+" "+txtHarga+" "+txtQty+""+txtSubtotal)
  1193.         .print()
  1194.     })
  1195. }
  1196.  
  1197. function Footer(TipeBayar, SubTotal, Diskon, DiskonPOIN, PPN, Total) {
  1198.     var limitNominal    = 9;
  1199.     var txtSubTotal     = 0;
  1200.     var txtDiskon       = 0;
  1201.     var txtDiskonPOIN   = 0;
  1202.     var txtPPN          = 0;
  1203.     var txtTotal        = 0;
  1204.  
  1205.     if (SubTotal.length <= limitNominal) {
  1206.         txtSubTotal = SubTotal.padStart(limitNominal, ' ')
  1207.     } else {
  1208.         txtSubTotal = SubTotal.substring(0, limitNominal);
  1209.     }
  1210.  
  1211.     if (Diskon.length <= limitNominal) {
  1212.         txtDiskon = Diskon.padStart(limitNominal, ' ')
  1213.     } else {
  1214.         txtDiskon = Diskon.substring(0, limitNominal);
  1215.     }
  1216.  
  1217.     if (DiskonPOIN.length <= limitNominal) {
  1218.         txtDiskonPOIN = DiskonPOIN.padStart(limitNominal, ' ')
  1219.     } else {
  1220.         txtDiskonPOIN = DiskonPOIN.substring(0, limitNominal);
  1221.     }
  1222.  
  1223.     if (PPN.length <= limitNominal) {
  1224.         txtPPN = PPN.padStart(limitNominal, ' ')
  1225.     } else {
  1226.         txtPPN = PPN.substring(0, limitNominal);
  1227.     }
  1228.  
  1229.     if (Total.length <= limitNominal) {
  1230.         txtTotal = Total.padStart(limitNominal, ' ')
  1231.     } else {
  1232.         txtTotal = Total.substring(0, limitNominal);
  1233.     }
  1234.  
  1235.     printer.open().then(function () {
  1236.         printer.align('left')
  1237.         .text(TipeBayar)
  1238.         .text("           Sub Total : "+txtSubTotal)
  1239.         .print()
  1240.     })
  1241.  
  1242.     if (txtDiskon === '') {
  1243.         printer.open().then(function () {
  1244.             printer.align('left')
  1245.             .text("              Diskon : "+txtDiskon)
  1246.             .print()
  1247.         })
  1248.     }
  1249.  
  1250.     if (txtDiskonPOIN === '') {
  1251.         printer.open().then(function () {
  1252.             printer.align('left')
  1253.             .text("         Diskon POIN : "+txtDiskonPOIN)
  1254.             .print()
  1255.         })
  1256.     }
  1257.  
  1258.     if (txtPPN === '') {
  1259.         printer.open().then(function () {
  1260.         printer.align('left')
  1261.             .text("             PPN (%) : "+txtPPN)
  1262.             .print()
  1263.         })
  1264.     }
  1265.  
  1266.     printer.open().then(function () {
  1267.         printer.align('left')
  1268.         .text("               TOTAL : "+txtTotal)
  1269.         .text("--------------------------------")
  1270.         .print()
  1271.     })
  1272. }
  1273.  
  1274. function FooterEnd() {
  1275.     printer.open().then(function () {
  1276.         printer.align('left')
  1277.         .text('<?=$dataMeta->meta_footer;?>')
  1278.         .feed(5)
  1279.         .cut()
  1280.         .print()
  1281.     })
  1282. }
  1283.  
  1284. function ListItemChecker(NamaBarang, Qty, Keterangan) {
  1285.     var limitNamaBarang = 11;
  1286.     var limitQty        = 3;
  1287.     var limitKeterangan = 16;
  1288.     var txtBarang       = '';
  1289.     var txtQty          = 0;
  1290.     var txtKeterangan   = '';
  1291.  
  1292.     if(NamaBarang.length <= limitNamaBarang) {
  1293.         txtBarang = NamaBarang.padEnd(limitNamaBarang, ' ')
  1294.     } else {
  1295.         txtBarang = NamaBarang.substring(0, limitNamaBarang);
  1296.     }
  1297.  
  1298.     if (Qty.length <= limitQty) {
  1299.         txtQty = Qty.padStart(limitQty, ' ')
  1300.     } else {
  1301.         txtQty = Qty.substring(0, limitQty);
  1302.     }
  1303.  
  1304.     if(Keterangan.length <= limitKeterangan) {
  1305.         txtKeterangan = Keterangan.padEnd(limitKeterangan, ' ')
  1306.     } else {
  1307.         txtKeterangan = Keterangan.substring(0, limitKeterangan);
  1308.     }
  1309.  
  1310.     printer.open().then(function () {
  1311.       printer.align('left')
  1312.         .text(txtBarang+" "+txtQty+" "+txtKeterangan)
  1313.         .print()
  1314.     })
  1315. }
  1316.  
  1317. function FooterChecker() {
  1318.     printer.open().then(function () {
  1319.         printer.align('left')
  1320.         .feed(5)
  1321.         .cut()
  1322.         .print()
  1323.     })
  1324. }
  1325. </script>
  1326.  
  1327. <div class="modal fade bs-modal-lg" id="formDataBarang" tabindex="-1" role="dialog" aria-hidden="true">
  1328.     <div class="modal-dialog modal-lg">
  1329.         <div class="modal-content">
  1330.             <div class="modal-header">
  1331.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  1332.                 <h4 class="modal-title"><i class="fa fa-list"></i> Daftar Barang</h4>
  1333.             </div>
  1334.             <div class="modal-body">
  1335.                 <table class="table table-striped table-hover" id="tableDataBarang">
  1336.                     <thead>
  1337.                         <tr>
  1338.                             <th width="5%"></th>
  1339.                             <th width="5%">No</th>
  1340.                             <th width="10%">Kode Barang</th>
  1341.                             <th width="40%">Nama Barang</th>
  1342.                             <th width="15%">Kategori</th>
  1343.                             <th width="5%">Stok</th>
  1344.                             <th width="10%">Harga</th>
  1345.                         </tr>
  1346.                     </thead>
  1347.                     <tbody>
  1348.                     </tbody>
  1349.                 </table>
  1350.             </div>
  1351.         </div>
  1352.     </div>
  1353. </div>
  1354.  
  1355. <div class="modal fade bs-modal-lg" id="formCariPelanggan" tabindex="-1" role="dialog" aria-hidden="true">
  1356.     <div class="modal-dialog modal-lg">
  1357.         <div class="modal-content">
  1358.             <div class="modal-header">
  1359.                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  1360.                 <h4 class="modal-title"><i class="fa fa-users"></i> Daftar Pelanggan</h4>
  1361.             </div>
  1362.             <div class="modal-body">
  1363.                 <table class="table table-striped table-hover" id="tableDataPelanggan">
  1364.                     <thead>
  1365.                         <tr>
  1366.                             <th width="5%"></th>
  1367.                             <th width="5%">No</th>
  1368.                             <th width="10%">Nomor</th>
  1369.                             <th width="15%">Nama Pelanggan</th>
  1370.                             <th>Alamat</th>
  1371.                             <th width="15%">Kota</th>
  1372.                             <th width="10%">No. Telp</th>
  1373.                         </tr>
  1374.                     </thead>
  1375.                     <tbody>
  1376.                     </tbody>
  1377.                 </table>
  1378.             </div>
  1379.         </div>
  1380.     </div>
  1381. </div>
  1382.  
  1383. <div class="modal" id="formModalPelanggan" tabindex="-1" role="dialog" aria-hidden="true">
  1384.     <div class="modal-dialog">
  1385.         <div class="modal-content">
  1386.             <form role="form" method="post" id="formPelanggan" class="form-horizontal">
  1387.                 <div class="modal-header">
  1388.                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  1389.                     <h4 class="modal-title"><i class="fa fa-plus-circle"></i> Form Tambah Pelanggan</h4>
  1390.                 </div>
  1391.                 <div class="modal-body">
  1392.                     <div class="form-group">
  1393.                         <label class="col-md-3 control-label">Nomor ID</label>
  1394.                         <div class="col-md-9">
  1395.                             <input type="text" class="form-control" placeholder="Input Nomor ID" name="nomor" id="nomor" autocomplete="off">
  1396.                         </div>
  1397.                     </div>
  1398.                     <div class="form-group">
  1399.                         <label class="col-md-3 control-label">Nama Pelanggan</label>
  1400.                         <div class="col-md-9">
  1401.                             <input type="text" class="form-control" placeholder="Input Nama Pelanggan" name="nama" id="nama" autocomplete="off">
  1402.                         </div>
  1403.                     </div>
  1404.                     <div class="form-group">
  1405.                         <label class="col-md-3 control-label">Alamat</label>
  1406.                         <div class="col-md-9">
  1407.                             <input type="text" class="form-control" placeholder="Input Alamat" name="alamat_pelanggan" id="alamat_pelanggan" autocomplete="off">
  1408.                         </div>
  1409.                     </div>
  1410.                     <div class="form-group">
  1411.                         <label class="col-md-3 control-label">Kota</label>
  1412.                         <div class="col-md-9">
  1413.                             <input type="text" class="form-control" placeholder="Input Kota" name="kota" id="kota" autocomplete="off">
  1414.                         </div>
  1415.                     </div>
  1416.                     <div class="form-group">
  1417.                         <label class="col-md-3 control-label">No. Telp</label>
  1418.                         <div class="col-md-9">
  1419.                             <input type="text" class="form-control" placeholder="Input No. Telp" name="telp" id="telp" autocomplete="off">
  1420.                         </div>
  1421.                     </div>
  1422.                     <div class="form-group">
  1423.                         <label class="col-md-3 control-label">Disc (%)</label>
  1424.                         <div class="col-md-9">
  1425.                             <input type="text" class="form-control digit" placeholder="0.00" name="disc_plg" id="disc_plg" autocomplete="off">
  1426.                         </div>
  1427.                     </div>
  1428.                     <div class="form-group">
  1429.                         <label class="col-md-3 control-label">Tgl. Expired</label>
  1430.                         <div class="col-md-4">
  1431.                             <input type="text" class="form-control date-picker" placeholder="DD-MM-YYYY" name="tgl_expired" id="tgl_expired" autocomplete="off">
  1432.                         </div>
  1433.                     </div>
  1434.                 </div>
  1435.                 <div class="modal-footer">
  1436.                     <a class="btn btn-primary" id="btn_pelanggan"><i class="fa fa-floppy-o"></i> Simpan</a>
  1437.                     <button type="button" class="btn btn-warning" data-dismiss="modal"><i class="fa fa-times"></i> Batal</button>
  1438.                 </div>
  1439.             </form>
  1440.         </div>
  1441.     </div>
  1442. </div>
  1443.  
  1444. <div class="modal" id="formModalBayar" tabindex="-1" role="dialog" aria-hidden="true">
  1445.     <div class="modal-dialog">
  1446.         <div class="modal-content">
  1447.             <form role="form" method="post" id="formBayar" name="formBayar" class="form-horizontal form">
  1448.                 <div class="modal-header">
  1449.                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  1450.                     <h4 class="modal-title"><i class="fa fa-shopping-cart"></i> Pembayaran Transaksi</h4>
  1451.                     <input type="hidden" name="totalpenjualan" id="totalpenjualan">
  1452.                     <input type="hidden" name="ppn_rupiah" id="ppn_rupiah">
  1453.                 </div>
  1454.                 <div class="modal-body">
  1455.                     <div class="row">
  1456.                         <div class="col-md-6">
  1457.                             <div class="form-group form-md-line-input">
  1458.                                 <label class="col-md-4 control-label">Tanggal</label>
  1459.                                 <div class="col-md-8">
  1460.                                     <input type="text" class="form-control" name="bayar_tanggal" id="bayar_tanggal" autocomplete="off" value="<?=date('d-m-Y H:i');?>" readonly>
  1461.                                 </div>
  1462.                             </div>
  1463.                         </div>
  1464.                         <div class="col-md-6">
  1465.                             <div class="form-group form-md-line-input">
  1466.                                 <label class="col-md-4 control-label">Sub Total</label>
  1467.                                 <div class="col-md-8">
  1468.                                     <input type="text" class="form-control" name="bayar_subtotal" id="bayar_subtotal" autocomplete="off" readonly>
  1469.                                 </div>
  1470.                             </div>
  1471.                         </div>
  1472.                     </div>
  1473.                     <div class="row">
  1474.                         <div class="col-md-6">
  1475.                             <div class="form-group">
  1476.                                 <label class="col-md-4 control-label">Tipe Bayar</label>
  1477.                                 <div class="col-md-8">
  1478.                                     <select class="form-control" name="lstTipe" id="lstTipe">
  1479.                                         <option value="">- Pilih Tipe Bayar -</option>
  1480.                                         <?php foreach($listTipe as $r) { ?>
  1481.                                         <option value="<?=$r->tipe_id;?>"><?=$r->tipe_nama;?></option>
  1482.                                         <?php } ?>
  1483.                                     </select>
  1484.                                 </div>
  1485.                             </div>
  1486.                         </div>
  1487.                         <div class="col-md-6">
  1488.                             <div class="form-group">
  1489.                                 <label class="col-md-4 control-label">PPN (%)</label>
  1490.                                 <div class="col-md-4">
  1491.                                     <input type="text" class="form-control" placeholder="0" name="bayar_ppn" id="bayar_ppn" value="<?=$dataMeta->meta_ppn;?>" readonly>
  1492.                                 </div>
  1493.                             </div>
  1494.                         </div>
  1495.                     </div>
  1496.                     <div class="row">
  1497.                         <div class="col-md-6">
  1498.                             <div class="form-group form-md-line-input">
  1499.                                 <label class="col-md-4 control-label">POIN</label>
  1500.                                 <div class="col-md-8">
  1501.                                     <input type="text" class="form-control" name="poin" id="poin" value="<?=$detailPelanggan->pelanggan_poin;?>" readonly>
  1502.                                 </div>
  1503.                             </div>
  1504.                         </div>
  1505.                         <div class="col-md-6">
  1506.                             <div class="form-group">
  1507.                                 <label class="col-md-4 control-label">TUKAR</label>
  1508.                                 <div class="col-md-3">
  1509.                                     <input type="text" class="form-control" name="tukar_poin" id="tukar_poin" placeholder="0" autocomplete="off" onkeydown="tukarPOIN()">
  1510.                                 </div>
  1511.                                 <div class="col-md-5">
  1512.                                     <input type="text" class="form-control" name="tukar_poin_rp" id="tukar_poin_rp" placeholder="0" readonly>
  1513.                                 </div>
  1514.                             </div>
  1515.                         </div>
  1516.                     </div>
  1517.                     <div class="row">
  1518.                         <div class="col-md-6">
  1519.                             <div class="form-group">
  1520.                                 <label class="col-md-4 control-label">Diskon (Rp)</label>
  1521.                                 <div class="col-md-8">
  1522.                                     <input type="text" class="form-control number" name="diskon" id="diskon" placeholder="0" autocomplete="off" onkeydown="hitungDiskon()">
  1523.                                 </div>
  1524.                             </div>
  1525.                         </div>
  1526.                         <div class="col-md-6">
  1527.                             <div class="form-group form-md-line-input">
  1528.                                 <label class="col-md-4 control-label"><b>TOTAL</b></label>
  1529.                                 <div class="col-md-8">
  1530.                                     <input type="text" class="form-control" name="bayar_total" id="bayar_total" autocomplete="off" readonly>
  1531.                                 </div>
  1532.                             </div>
  1533.                         </div>
  1534.                     </div>
  1535.                     <div class="row">
  1536.                         <div class="col-md-6">
  1537.                             <div class="form-group">
  1538.                                 <label class="col-md-4 control-label">Bayar</label>
  1539.                                 <div class="col-md-8">
  1540.                                     <input type="text" class="form-control" name="bayar" id="bayar" placeholder="0" autocomplete="off" onfocusout="hitungKembalian()">
  1541.                                 </div>
  1542.                             </div>
  1543.                         </div>
  1544.                         <div class="col-md-6">
  1545.                             <div class="form-group form-md-line-input">
  1546.                                 <label class="col-md-4 control-label">Kembali</label>
  1547.                                 <div class="col-md-8">
  1548.                                     <input type="text" class="form-control" name="kembali" id="kembali" placeholder="0" autocomplete="off" readonly>
  1549.                                 </div>
  1550.                             </div>
  1551.                         </div>
  1552.                     </div>
  1553.                 </div>
  1554.                 <div class="modal-footer">
  1555.                     <a class="btn btn-primary" id="btn_simpan"><i class="fa fa-floppy-o"></i> Simpan Transaksi</a>
  1556.                 </div>
  1557.             </form>
  1558.         </div>
  1559.     </div>
  1560. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement