Novinaldi

Penjualan

Jan 22nd, 2021
887
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. class Penjualan extends CI_Controller
  3. {
  4.     public function __construct()
  5.     {
  6.         parent::__construct();
  7.         $this->aksesgrup = $this->session->userdata('idgrup');
  8.         if ($this->session->userdata('masuk') == true && ($this->aksesgrup == '1' || $this->aksesgrup == '2')) {
  9.             $this->load->library(['form_validation']);
  10.             $this->load->model('Modelkasir', 'kasir');
  11.             $this->load->model('admin/penjualan/Modelpenjualan', 'jual');
  12.             $this->load->model('admin/member/Modelmember', 'member');
  13.             $this->load->model('admin/member/Modelupdatediskon', 'updatediskon');
  14.             $this->load->model('admin/Modeltransaksineraca', 'neraca');
  15.             return true;
  16.         } else {
  17.             redirect('login/logout');
  18.         }
  19.     }
  20.     public function index()
  21.     {
  22.         $hariini = date('Y-m-d');
  23.         $bulanini = date('Y-m');
  24.         $tahunini = date('Y');
  25.         $sql_penjualanhariini = $this->db->query("SELECT jualfaktur FROM penjualan WHERE DATE_FORMAT(jualtgl,'%Y-%m-%d') = '$hariini' ")->result();
  26.  
  27.         $sql_penjualanbulanini = $this->db->query("SELECT jualfaktur FROM penjualan WHERE DATE_FORMAT(jualtgl,'%Y-%m') = '$bulanini' ")->result();
  28.  
  29.         $sql_penjualantahunini = $this->db->query("SELECT jualfaktur FROM penjualan WHERE DATE_FORMAT(jualtgl,'%Y') = '$tahunini' ")->result();
  30.  
  31.         $data = [
  32.             'totalhariini' => count($sql_penjualanhariini),
  33.             'totalbulanini' => count($sql_penjualanbulanini),
  34.             'totaltahunini' => count($sql_penjualantahunini),
  35.         ];
  36.         $view = [
  37.             'menu' => $this->load->view('template/menu', '', TRUE),
  38.             'judul' => '<i class="fa fa-cash-register"></i> Penjualan',
  39.             'isi' => $this->load->view('admin/penjualan/index', $data, true)
  40.  
  41.         ];
  42.         $this->parser->parse('template/main', $view);
  43.     }
  44.  
  45.     public function transaksiditahan()
  46.     {
  47.         $view = [
  48.             'menu' => $this->load->view('template/menu', '', TRUE),
  49.             'judul' => '<i class="fa fa-hand-holding-usd"></i> Data Transaksi di-Tahan',
  50.             'isi' => $this->load->view('admin/penjualan/datatransaksiditahan', '', true)
  51.  
  52.         ];
  53.         $this->parser->parse('template/main', $view);
  54.     }
  55.     public function all_data()
  56.     {
  57.         $data = [
  58.             'datauser' => $this->db->get_where('nn_users', ['useraktif' => 1])
  59.         ];
  60.         $view = [
  61.             'menu' => $this->load->view('template/menu', '', TRUE),
  62.             'judul' => '<i class="fa fa-list-alt"></i> Semua Data Penjualan',
  63.             'isi' => $this->load->view('admin/penjualan/semuadatatransaksi', $data, true)
  64.  
  65.         ];
  66.         $this->parser->parse('template/main', $view);
  67.     }
  68.  
  69.     public function ambildatatransaksiditahan()
  70.     {
  71.         if ($this->input->is_ajax_request() == true) {
  72.             $this->load->model('admin/penjualan/Modelholding', 'penjualanditahan');
  73.             $list = $this->penjualanditahan->get_datatables();
  74.             $data = array();
  75.             $no = $_POST['start'];
  76.             foreach ($list as $field) {
  77.                 $no++;
  78.                 $row = array();
  79.  
  80.                 $tombolhapus = "<button type=\"button\" class=\"btn btn-xs btn-outline-danger waves-effect waves-light\" onclick=\"hapus('" . $field->jualfaktur . "')\" title=\"Hapus Transaksi Holding $field->jualfaktur\">
  81.                    <i class=\"fa fa-trash-alt\" style=\"font-size:12px;\"></i>
  82.                </button>";
  83.  
  84.                 $tomboledit = "<button type=\"button\" class=\"btn btn-xs btn-outline-info waves-effect waves-light\" onclick=\"edit('" . sha1($field->jualfaktur) . "')\" title=\"Edit Transaksi $field->jualfaktur\">
  85.                    <i class=\"fa fa-tags\" style=\"font-size:12px;\"></i>
  86.                </button>";
  87.  
  88.                 $row[] = $no;
  89.                 $row[] = $field->jualfaktur;
  90.                 $row[] = date('d-m-Y', strtotime($field->jualtgl));
  91.                 $row[] = ($field->jualnapel == '') ? '-' : $field->jualnapel;
  92.  
  93.                 // Menampilkan item dari tabel detail penjualan
  94.                 $query_penjualandetail = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $field->jualfaktur])->result();
  95.  
  96.                 $row[] = "<a href='#' onclick=\"itempenjualan('" . $field->jualfaktur . "')\">" . count($query_penjualandetail) . "</a>";
  97.  
  98.                 $row[] = number_format($field->jualtotalkotor, 2, ".", ",");
  99.                 $row[] = $tombolhapus . '&nbsp;' . $tomboledit;
  100.                 $data[] = $row;
  101.             }
  102.  
  103.             $output = array(
  104.                 "draw" => $_POST['draw'],
  105.                 "recordsTotal" => $this->penjualanditahan->count_all(),
  106.                 "recordsFiltered" => $this->penjualanditahan->count_filtered(),
  107.                 "data" => $data,
  108.             );
  109.             //output dalam format JSON
  110.             echo json_encode($output);
  111.         }
  112.     }
  113.  
  114.     public function ambilsemuadata()
  115.     {
  116.         if ($this->input->is_ajax_request() == true) {
  117.             $this->load->model('admin/penjualan/Modeldata', 'penjualan');
  118.             $tglawal = $this->input->post('tglawal', true);
  119.             $tglakhir = $this->input->post('tglakhir', true);
  120.             $users = $this->input->post('users', true);
  121.             $list = $this->penjualan->get_datatables($tglawal, $tglakhir, $users);
  122.             $data = array();
  123.             $no = $_POST['start'];
  124.             foreach ($list as $field) {
  125.                 $no++;
  126.                 $row = array();
  127.  
  128.                 if ($this->aksesgrup == '1') {
  129.                     $tombolhapus = "<button type=\"button\" class=\"btn btn-sm btn-outline-danger waves-effect waves-light\" onclick=\"hapus('" . $field->jualfaktur . "')\" title=\"Hapus Transaksi $field->jualfaktur\">
  130.                    <i class=\"fa fa-trash-alt\" style=\"font-size:10px;\"></i>
  131.                </button>";
  132.                 } else {
  133.                     $tombolhapus = '';
  134.                 }
  135.  
  136.                 $tomboledit = "<button type=\"button\" class=\"btn btn-sm btn-outline-info waves-effect waves-light\" onclick=\"edit('" . sha1($field->jualfaktur) . "')\" title=\"Edit Transaksi $field->jualfaktur\">
  137.                    <i class=\"fa fa-tags\" style=\"font-size:10px;\"></i>
  138.                </button>";
  139.  
  140.                 $tombolcetak = "<button type=\"button\" class=\"btn btn-sm btn-outline-success waves-effect waves-light\" onclick=\"cetakfaktur('" . $field->jualfaktur . "')\" title=\"Cetak Struk $field->jualfaktur\">
  141.                    <i class=\"fa fa-print\" style=\"font-size:10px;\"></i>
  142.                </button>";
  143.  
  144.                 $row[] = $no;
  145.                 $row[] = $field->jualfaktur;
  146.                 $row[] = date('d-m-Y', strtotime($field->jualtgl));
  147.                 $row[] = ($field->jualmemberkode == '') ? '-' : $field->membernama;
  148.                 if ($field->jualstatusbayar == 'T') {
  149.                     $row[] = '<span class="badge badge-success">Tunai</span>';
  150.                 } else if ($field->jualstatusbayar == 'K') {
  151.                     $sttbayar = '<span class="badge badge-warning">Kredit</span>';
  152.                     if ($field->jualstatuslunas == 1) {
  153.                         $row[] = $sttbayar . '&nbsp;<span class="badge badge-success">Sudah Lunas Tgl: ' . date('d-m-Y', strtotime($field->jualtglbayarkredit)) . '</;span>';
  154.                     } else {
  155.                         $row[] = $sttbayar;
  156.                     }
  157.                 } else {
  158.                     $row[] = '<span class="badge badge-info">diTahan</span>';
  159.                 }
  160.                 $row[] = $field->jualuserinput;
  161.                 // Menampilkan item dari tabel detail penjualan
  162.                 $query_penjualandetail = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $field->jualfaktur])->result();
  163.  
  164.                 $row[] = "<a href='#' onclick=\"itempenjualan('" . $field->jualfaktur . "')\">" . count($query_penjualandetail) . "</a>";
  165.                 $row[] = number_format($field->jualtotalbersih, 2, ".", ",");
  166.                 $row[] = $tombolhapus . '&nbsp;' . $tomboledit . '&nbsp;' . $tombolcetak;
  167.                 $data[] = $row;
  168.             }
  169.  
  170.             $output = array(
  171.                 "draw" => $_POST['draw'],
  172.                 "recordsTotal" => $this->penjualan->count_all($tglawal, $tglakhir, $users),
  173.                 "recordsFiltered" => $this->penjualan->count_filtered($tglawal, $tglakhir, $users),
  174.                 "data" => $data,
  175.             );
  176.             //output dalam format JSON
  177.             echo json_encode($output);
  178.         }
  179.     }
  180.  
  181.     function detail_itempenjualan()
  182.     {
  183.         if ($this->input->is_ajax_request() == true) {
  184.             $faktur = $this->input->post('faktur', true);
  185.  
  186.             $datadetail = $this->db->query("SELECT detjualkodebarcode,namaproduk,detjualjml,satnama,detjualjmlreturn,detjualharga,detjualsubtotal,detjualdispersen,detjualdisuang FROM penjualan_detail JOIN produk ON kodebarcode=detjualkodebarcode LEFT JOIN satuan ON satuan.`satid`=detjualsatid where detjualfaktur = '$faktur'");
  187.  
  188.             if ($datadetail->num_rows() > 0) {
  189.                 $data = [
  190.                     'tampildata' => $datadetail,
  191.                     'faktur' => $faktur
  192.                 ];
  193.  
  194.                 $msg = [
  195.                     'data' => $this->load->view('admin/penjualan/modalitempenjualan', $data, true)
  196.                 ];
  197.  
  198.                 echo json_encode($msg);
  199.             }
  200.         }
  201.     }
  202.  
  203.     function hapustransaksiditahan()
  204.     {
  205.         if ($this->input->is_ajax_request() == true) {
  206.             $faktur = $this->input->post('faktur', true);
  207.  
  208.  
  209.             $this->db->trans_start();
  210.             $this->neraca->hapus_neraca_penjualan($faktur);
  211.             $this->neraca->hapus_kredit_piutang_dagang($faktur);
  212.             // Hapus Neraca Untuk Kas Kecil
  213.             $this->db->delete('neraca_transaksi', [
  214.                 'transno' => $faktur,
  215.                 'transnoakun' => '1-110',
  216.                 'transjenis' => 'K'
  217.             ]);
  218.             // End
  219.  
  220.             // Mengembalikan Stok, jika yang dihapus adalah produk paket
  221.             $query_penjualan_detail = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  222.             foreach ($query_penjualan_detail->result_array() as $penjualanDetail) :
  223.                 $detjualkodebarcode = $penjualanDetail['detjualkodebarcode'];
  224.                 $detjualjml = $penjualanDetail['detjualjml'];
  225.                 $cek_produk = $this->db->get_where('produk', ['kodebarcode' => $detjualkodebarcode])->row_array();
  226.                 if ($cek_produk['produkpaket'] == '1') {
  227.                     $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $cek_produk['id']]);
  228.  
  229.                     foreach ($query_produkpaket->result_array() as $paket) :
  230.                         $paketkodebarcode = $paket['paketkodebarcode'];
  231.                         $paketjml = $paket['paketjml'];
  232.                         // Kurangi stok tersedia
  233.                         $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  234.                         $row_dataproduk = $query_dataproduk->row_array();
  235.                         $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  236.  
  237.                         $this->db->where('kodebarcode', $paketkodebarcode);
  238.                         $this->db->update('produk', [
  239.                             'stok_tersedia' => $stok_dataproduk + ($paketjml * $detjualjml)
  240.                         ]);
  241.                     // end kurang stok tersedia
  242.                     endforeach;
  243.                 }
  244.             endforeach;
  245.             // End
  246.  
  247.             // Update Tabungan diskon member jika penjualan member
  248.             $ambil_datapenjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  249.             $jualmemberkode = $ambil_datapenjualan['jualmemberkode'];
  250.             $jualtotalbersih = $ambil_datapenjualan['jualtotalbersih'];
  251.  
  252.             if (strlen($jualmemberkode) > 0) {
  253.                 $ambil_datamember = $this->db->get_where('member', ['memberkode' => $jualmemberkode])->row_array();
  254.                 $membertotaldiskon = $ambil_datamember['membertotaldiskon'];
  255.                 $ambil_datamembersettingdiskon = $this->db->get('member_setting_diskon')->row_array();
  256.                 $diskon_setting = $ambil_datamembersettingdiskon['diskon'];
  257.  
  258.                 $hitung_tabungandiskonmember = $jualtotalbersih * ($diskon_setting / 100);
  259.  
  260.                 $this->db->where('memberkode', $jualmemberkode);
  261.                 $this->db->update('member', [
  262.                     'membertotaldiskon' => $membertotaldiskon - $hitung_tabungandiskonmember
  263.                 ]);
  264.  
  265.                 $this->neraca->hapussimpanantabunganmember($faktur);
  266.             }
  267.             // end
  268.  
  269.             $this->db->delete('penjualan_detail', ['detjualfaktur' => $faktur]);
  270.             $this->db->delete('penjualan', ['jualfaktur' => $faktur]);
  271.             $this->db->trans_complete();
  272.  
  273.             if ($this->db->trans_status() === true) {
  274.                 // Hapus neraca akun
  275.                 $msg = ['sukses' => 'Transaksi di berhasil di hapus'];
  276.             }
  277.             echo json_encode($msg);
  278.         }
  279.     }
  280.  
  281.     public function edittransaksiditahan()
  282.     {
  283.         $sha_faktur = $this->uri->segment('4');
  284.         $cekdata = $this->db->get_where('penjualan', ['sha1(jualfaktur)' => $sha_faktur, 'jualstatusbayar' => 'H']);
  285.  
  286.         if ($cekdata->num_rows() > 0) {
  287.             $r = $cekdata->row_array();
  288.  
  289.             // ambildata member
  290.             $querymember = $this->db->get_where('member', ['memberkode' => $r['jualmemberkode']]);
  291.             if ($querymember->num_rows() > 0) {
  292.                 $rowMember = $querymember->row_array();
  293.                 $membernama = $rowMember['membernama'];
  294.             } else {
  295.                 $membernama = '-';
  296.             }
  297.  
  298.             $data = [
  299.                 'jualfaktur' => $r['jualfaktur'],
  300.                 'jualtgl' => date('d-m-Y', strtotime($r['jualtgl'])),
  301.                 'jualmemberkode' => $r['jualmemberkode'],
  302.                 'membernama' => $membernama,
  303.                 'jualnapel' => $r['jualnapel'],
  304.                 'statusbayar' => $r['jualstatusbayar']
  305.             ];
  306.  
  307.             $view = [
  308.                 'menu' => $this->load->view('template/menu', '', TRUE),
  309.                 'judul' => '<i class="fa fa-tags"></i> Edit Transaksi',
  310.                 'isi' => $this->load->view('admin/penjualan/edittransaksi', $data, true)
  311.             ];
  312.             $this->parser->parse('layoutkasir/main', $view);
  313.         } else {
  314.             redirect('kasir/input');
  315.         }
  316.     }
  317.  
  318.     public function edit()
  319.     {
  320.         $sha_faktur = $this->uri->segment('4');
  321.         $cekdata = $this->db->get_where('penjualan', ['sha1(jualfaktur)' => $sha_faktur]);
  322.  
  323.         if ($cekdata->num_rows() > 0) {
  324.             $r = $cekdata->row_array();
  325.  
  326.             // ambildata member
  327.             $querymember = $this->db->get_where('member', ['memberkode' => $r['jualmemberkode']]);
  328.  
  329.             $datadiskonmember = $this->db->get('member_setting_diskon')->row_array();
  330.             if ($querymember->num_rows() > 0) {
  331.                 $rowMember = $querymember->row_array();
  332.                 $membernama = $rowMember['membernama'];
  333.                 $diskonmember = $datadiskonmember['diskon'];
  334.             } else {
  335.                 $membernama = '-';
  336.                 $diskonmember = 0;
  337.             }
  338.  
  339.             $data = [
  340.                 'jualfaktur' => $r['jualfaktur'],
  341.                 'jualtgl' => date('d-m-Y', strtotime($r['jualtgl'])),
  342.                 'jualmemberkode' => $r['jualmemberkode'],
  343.                 'membernama' => $membernama,
  344.                 'jualnapel' => $r['jualnapel'],
  345.                 'diskonmember' => $diskonmember,
  346.                 'statusbayar' => $r['jualstatusbayar']
  347.             ];
  348.  
  349.             $view = [
  350.                 'menu' => $this->load->view('template/menu', '', TRUE),
  351.                 'judul' => '<i class="fa fa-tags"></i> Edit Transaksi',
  352.                 'isi' => $this->load->view('admin/penjualan/edittransaksi', $data, true)
  353.             ];
  354.             $this->parser->parse('layoutkasir/main', $view);
  355.         } else {
  356.             redirect('admin/penjualan/transaksiditahan');
  357.         }
  358.     }
  359.  
  360.     public function tampildatatemp()
  361.     {
  362.         if ($this->input->is_ajax_request() == true) {
  363.             $jualfaktur = $this->input->post('jualfaktur', true);
  364.             $jualtgl = $this->input->post('jualtgl', true);
  365.             $diskonmember = $this->input->post('diskonmember', true);
  366.  
  367.             $ambil_datapenjualan = $this->db->get_where('penjualan', ['jualfaktur' => $jualfaktur])->row_array();
  368.  
  369.             $tampildata = $this->db->query("SELECT detjualid AS id, detjualfaktur AS faktur,detjualkodebarcode AS kode,produk.`namaproduk` AS namaproduk,detjualsatid AS idsatuan, satuan.`satnama` AS namasatuan,detjualsatqty AS satqty, detjualjml AS jml,detjualharga AS harga,detjualsubtotal AS subtotal,detjualdispersen AS dispersen, detjualdisuang AS disuang,detjualjmlreturn as jmlreturn,detjualdiskon,detjualsubtotalkotor FROM penjualan_detail JOIN produk ON penjualan_detail.`detjualkodebarcode`=produk.`kodebarcode` JOIN satuan ON penjualan_detail.`detjualsatid`=satuan.`satid` WHERE detjualfaktur='$jualfaktur' ORDER BY detjualid DESC");
  370.             $data = [
  371.                 'data' => $tampildata,
  372.                 'jualtgl' => $jualtgl,
  373.                 'diskonmember' => $diskonmember,
  374.                 'jualmemberkode' => $ambil_datapenjualan['jualmemberkode'],
  375.                 'jualtotalkotor' => $ambil_datapenjualan['jualtotalkotor'],
  376.                 'jualdispersen' => $ambil_datapenjualan['jualdispersen'],
  377.                 'jualdisuang' => $ambil_datapenjualan['jualdisuang'],
  378.                 'jualtotalbersih' => $ambil_datapenjualan['jualtotalbersih'],
  379.                 'jualpembulatan' => $ambil_datapenjualan['jualpembulatan'],
  380.                 'jualsisapembulatan' => $ambil_datapenjualan['jualsisapembulatan'],
  381.             ];
  382.             $this->load->view('admin/penjualan/datadetail', $data);
  383.         }
  384.     }
  385.  
  386.     public function detailproduk()
  387.     {
  388.         if ($this->input->is_ajax_request() == true) {
  389.             $namaproduk = $this->input->post('namaproduk', true);
  390.             $kode = $this->input->post('kode', true);
  391.             $faktur = $this->input->post('faktur', true);
  392.             $jualtgl = $this->input->post('jualtgl', true);
  393.             $jml = $this->input->post('jml', true);
  394.             $dispersen = $this->input->post('dispersen', true);
  395.             $disuang = $this->input->post('disuang', true);
  396.  
  397.             $cekproduk = $this->kasir->cekproduk($kode, $namaproduk);
  398.  
  399.             if ($cekproduk->num_rows() > 0) {
  400.                 if ($cekproduk->num_rows() === 1) {
  401.                     $row_produk = $cekproduk->row_array();
  402.                     $kodebarcode = $row_produk['kodebarcode'];
  403.                     $stoktersedia = $row_produk['stok_tersedia'];
  404.                     $idproduk = $row_produk['id'];
  405.                     $produkpaket = $row_produk['produkpaket'];
  406.  
  407.                     // Ambil data pengaturan
  408.                     $datapengaturan = $this->db->get_where('pengaturan', ['id' => 1])->row_array();
  409.                     // End
  410.  
  411.                     if ($datapengaturan['stokminus'] == 1 && ($produkpaket == '0' || $produkpaket == '1')) {
  412.                         if ($jml > $stoktersedia) {
  413.                             $msg = [
  414.                                 'error' => 'Maaf Stok tidak cukup'
  415.                             ];
  416.                         } else {
  417.                             $query_cek_penjualan_detail = $this->db->query("SELECT * FROM penjualan_detail WHERE detjualfaktur='$faktur' AND detjualkodebarcode='$kodebarcode' AND detjualsatid='$row_produk[satid]'");
  418.  
  419.                             if ($query_cek_penjualan_detail->num_rows() > 0) {
  420.                                 $row_penjualan_detail = $query_cek_penjualan_detail->row_array();
  421.  
  422.                                 $jml_update = $row_penjualan_detail['detjualjml'] + $jml;
  423.  
  424.                                 $subtotal_update = $jml_update * $row_penjualan_detail['detjualharga'];
  425.  
  426.                                 $update_temp_saja =  [
  427.                                     'detjualjml' => $jml_update,
  428.                                     'detjualsubtotal' => $subtotal_update
  429.                                 ];
  430.                                 $this->db->where('detjualid', $row_penjualan_detail['detjualid']);
  431.                                 $this->db->update('penjualan_detail', $update_temp_saja);
  432.  
  433.                                 // Update Tabel Penjualan
  434.                                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  435.                                 $total_detailpenjualan = 0;
  436.                                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  437.                                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  438.                                 endforeach;
  439.  
  440.                                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  441.                                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  442.                                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  443.  
  444.                                 $kodemember =  $ambildata_penjualan['jualmemberkode'];
  445.                                 $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  446.                                 $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  447.  
  448.  
  449.                                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  450.  
  451.                                 $ambilratusan = substr($hitung_totalbersih, -2);
  452.                                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  453.                                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  454.                                 } else {
  455.                                     $hasilpembulatan = $hitung_totalbersih;
  456.                                 }
  457.  
  458.                                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  459.  
  460.                                 $this->db->where('jualfaktur', $faktur);
  461.                                 $this->db->update('penjualan', [
  462.                                     'jualtotalkotor' => $total_detailpenjualan,
  463.                                     'jualtotalbersih' => $hitung_totalbersih,
  464.                                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  465.                                     'jualpembulatan' => $hasilpembulatan,
  466.                                     'jualsisapembulatan' => $sisapembulatan
  467.                                 ]);
  468.                                 // End
  469.  
  470.                                 // jika Produk Paket
  471.                                 if ($produkpaket == 1) {
  472.                                     $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  473.  
  474.                                     foreach ($query_produkpaket->result_array() as $paket) :
  475.                                         $paketkodebarcode = $paket['paketkodebarcode'];
  476.                                         $paketjml = $paket['paketjml'];
  477.                                         // Kurangi stok tersedia
  478.                                         $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  479.                                         $row_dataproduk = $query_dataproduk->row_array();
  480.                                         $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  481.  
  482.                                         $this->db->where('kodebarcode', $paketkodebarcode);
  483.                                         $this->db->update('produk', [
  484.                                             'stok_tersedia' => $stok_dataproduk - ($paketjml * $jml)
  485.                                         ]);
  486.                                     // end kurang stok tersedia
  487.                                     endforeach;
  488.                                     // Lakukan update pada akun simpanan tabungan
  489.                                     // $this->neraca->simpanantabunganmember($faktur, $diskon_setting);
  490.                                     // end
  491.                                     $msg = ['sukses' => 'berhasil'];
  492.                                 } else {
  493.                                     // Lakukan update pada akun simpanan tabungan
  494.                                     // $this->neraca->simpanantabunganmember($faktur, $diskon_setting);
  495.                                     // end
  496.                                     $msg = ['sukses' => 'berhasil'];
  497.                                 }
  498.                                 // End
  499.  
  500.                             } else {
  501.                                 $qty_satuan = $row_produk['jml_eceran'];
  502.                                 $hargajual = $row_produk['harga_jual_eceran'];
  503.                                 $hargabeli = $row_produk['harga_beli_eceran'];
  504.  
  505.  
  506.                                 $hitung_subtotal = ($jml * $qty_satuan * $hargajual);
  507.                                 $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($dispersen / 100)) - $disuang;
  508.                                 $hitung_diskon = $hitung_subtotal * ($dispersen / 100) + $disuang;
  509.  
  510.                                 $datasimpan_temp = [
  511.                                     'detjualfaktur' => $faktur,
  512.                                     'detjualtgl' => $jualtgl,
  513.                                     'detjualkodebarcode' => $kodebarcode,
  514.                                     'detjualsatid' => $row_produk['satid'],
  515.                                     'detjualsatqty' => $qty_satuan,
  516.                                     'detjualjml' => $jml,
  517.                                     'detjualharga' => $hargajual,
  518.                                     'detjualhargabeli' => $hargabeli,
  519.                                     'detjualuserinput' => $this->session->userdata('username'),
  520.                                     'detjualdispersen' => $dispersen,
  521.                                     'detjualdisuang' => $disuang,
  522.                                     'detjualsubtotalkotor' => $hitung_subtotal,
  523.                                     'detjualsubtotal' => $subtotal_bersih,
  524.                                     'detjualdiskon' => $hitung_diskon
  525.                                 ];
  526.                                 $this->db->insert('penjualan_detail', $datasimpan_temp);
  527.  
  528.                                 // jika Produk Paket
  529.                                 if ($produkpaket == 1) {
  530.                                     $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  531.  
  532.                                     foreach ($query_produkpaket->result_array() as $paket) :
  533.                                         $paketkodebarcode = $paket['paketkodebarcode'];
  534.                                         $paketjml = $paket['paketjml'];
  535.                                         // Kurangi stok tersedia
  536.                                         $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  537.                                         $row_dataproduk = $query_dataproduk->row_array();
  538.                                         $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  539.  
  540.                                         $this->db->where('kodebarcode', $paketkodebarcode);
  541.                                         $this->db->update('produk', [
  542.                                             'stok_tersedia' => $stok_dataproduk - $paketjml
  543.                                         ]);
  544.                                     // end kurang stok tersedia
  545.                                     endforeach;
  546.                                     // Update Tabel Penjualan
  547.                                     $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  548.                                     $total_detailpenjualan = 0;
  549.                                     foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  550.                                         $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  551.                                     endforeach;
  552.  
  553.                                     $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  554.                                     $jualdispersen = $ambildata_penjualan['jualdispersen'];
  555.                                     $jualdisuang = $ambildata_penjualan['jualdisuang'];
  556.                                     $kodemember =  $ambildata_penjualan['jualmemberkode'];
  557.                                     $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  558.                                     $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  559.  
  560.                                     $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  561.  
  562.                                     $ambilratusan = substr($hitung_totalbersih, -2);
  563.                                     if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  564.                                         $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  565.                                     } else {
  566.                                         $hasilpembulatan = $hitung_totalbersih;
  567.                                     }
  568.  
  569.                                     $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  570.  
  571.                                     $this->db->where('jualfaktur', $faktur);
  572.                                     $this->db->update('penjualan', [
  573.                                         'jualtotalkotor' => $total_detailpenjualan,
  574.                                         'jualtotalbersih' => $hitung_totalbersih,
  575.                                         'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  576.                                         'jualpembulatan' => $hasilpembulatan,
  577.                                         'jualsisapembulatan' => $sisapembulatan
  578.                                     ]);
  579.                                     // End
  580.  
  581.                                     $msg = ['sukses' => 'berhasil'];
  582.                                 } else {
  583.                                     // Update Tabel Penjualan
  584.                                     $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  585.                                     $total_detailpenjualan = 0;
  586.                                     foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  587.                                         $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  588.                                     endforeach;
  589.  
  590.                                     $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  591.                                     $jualdispersen = $ambildata_penjualan['jualdispersen'];
  592.                                     $jualdisuang = $ambildata_penjualan['jualdisuang'];
  593.                                     $kodemember =  $ambildata_penjualan['jualmemberkode'];
  594.                                     $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  595.                                     $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  596.  
  597.  
  598.                                     $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  599.  
  600.                                     $ambilratusan = substr($hitung_totalbersih, -2);
  601.                                     if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  602.                                         $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  603.                                     } else {
  604.                                         $hasilpembulatan = $hitung_totalbersih;
  605.                                     }
  606.  
  607.                                     $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  608.  
  609.                                     $this->db->where('jualfaktur', $faktur);
  610.                                     $this->db->update('penjualan', [
  611.                                         'jualtotalkotor' => $total_detailpenjualan,
  612.                                         'jualtotalbersih' => $hitung_totalbersih,
  613.                                         'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  614.                                         'jualpembulatan' => $hasilpembulatan,
  615.                                         'jualsisapembulatan' => $sisapembulatan
  616.                                     ]);
  617.                                     // End
  618.  
  619.                                     $msg = ['sukses' => 'berhasil'];
  620.                                 }
  621.                                 // End
  622.                             }
  623.                         }
  624.                     } else {
  625.                         $query_cek_penjualan_detail = $this->db->query("SELECT * FROM penjualan_detail WHERE detjualfaktur='$faktur' AND detjualkodebarcode='$kodebarcode' AND detjualsatid='$row_produk[satid]'");
  626.  
  627.                         if ($query_cek_penjualan_detail->num_rows() > 0) {
  628.                             $row_penjualan_detail = $query_cek_penjualan_detail->row_array();
  629.  
  630.                             $jml_update = $row_penjualan_detail['detjualjml'] + $jml;
  631.  
  632.                             $subtotal_update = $jml_update * $row_penjualan_detail['detjualharga'];
  633.  
  634.                             $update_temp_saja =  [
  635.                                 'detjualjml' => $jml_update,
  636.                                 'detjualsubtotal' => $subtotal_update
  637.                             ];
  638.                             $this->db->where('detjualid', $row_penjualan_detail['detjualid']);
  639.                             $this->db->update('penjualan_detail', $update_temp_saja);
  640.  
  641.                             // Update Tabel Penjualan
  642.                             $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  643.                             $total_detailpenjualan = 0;
  644.                             foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  645.                                 $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  646.                             endforeach;
  647.  
  648.                             $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  649.                             $jualdispersen = $ambildata_penjualan['jualdispersen'];
  650.                             $jualdisuang = $ambildata_penjualan['jualdisuang'];
  651.  
  652.                             $kodemember =  $ambildata_penjualan['jualmemberkode'];
  653.                             $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  654.                             $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  655.  
  656.  
  657.                             $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  658.  
  659.                             $ambilratusan = substr($hitung_totalbersih, -2);
  660.                             if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  661.                                 $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  662.                             } else {
  663.                                 $hasilpembulatan = $hitung_totalbersih;
  664.                             }
  665.  
  666.                             $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  667.  
  668.                             $this->db->where('jualfaktur', $faktur);
  669.                             $this->db->update('penjualan', [
  670.                                 'jualtotalkotor' => $total_detailpenjualan,
  671.                                 'jualtotalbersih' => $hitung_totalbersih,
  672.                                 'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  673.                                 'jualpembulatan' => $hasilpembulatan,
  674.                                 'jualsisapembulatan' => $sisapembulatan
  675.                             ]);
  676.                             // End
  677.  
  678.                             // jika Produk Paket
  679.                             if ($produkpaket == 1) {
  680.                                 $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  681.  
  682.                                 foreach ($query_produkpaket->result_array() as $paket) :
  683.                                     $paketkodebarcode = $paket['paketkodebarcode'];
  684.                                     $paketjml = $paket['paketjml'];
  685.                                     // Kurangi stok tersedia
  686.                                     $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  687.                                     $row_dataproduk = $query_dataproduk->row_array();
  688.                                     $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  689.  
  690.                                     $this->db->where('kodebarcode', $paketkodebarcode);
  691.                                     $this->db->update('produk', [
  692.                                         'stok_tersedia' => $stok_dataproduk - ($paketjml * $jml)
  693.                                     ]);
  694.                                 // end kurang stok tersedia
  695.                                 endforeach;
  696.                                 // Lakukan update pada akun simpanan tabungan
  697.                                 // $this->neraca->simpanantabunganmember($faktur, $diskon_setting);
  698.                                 // end
  699.                                 $msg = ['sukses' => 'berhasil'];
  700.                             } else {
  701.                                 // Lakukan update pada akun simpanan tabungan
  702.                                 // $this->neraca->simpanantabunganmember($faktur, $diskon_setting);
  703.                                 // end
  704.                                 $msg = ['sukses' => 'berhasil'];
  705.                             }
  706.                             // End
  707.  
  708.                         } else {
  709.                             $qty_satuan = $row_produk['jml_eceran'];
  710.                             $hargajual = $row_produk['harga_jual_eceran'];
  711.                             $hargabeli = $row_produk['harga_beli_eceran'];
  712.  
  713.  
  714.                             $hitung_subtotal = ($jml * $qty_satuan * $hargajual);
  715.                             $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($dispersen / 100)) - $disuang;
  716.                             $hitung_diskon = $hitung_subtotal * ($dispersen / 100) + $disuang;
  717.  
  718.                             $datasimpan_temp = [
  719.                                 'detjualfaktur' => $faktur,
  720.                                 'detjualtgl' => $jualtgl,
  721.                                 'detjualkodebarcode' => $kodebarcode,
  722.                                 'detjualsatid' => $row_produk['satid'],
  723.                                 'detjualsatqty' => $qty_satuan,
  724.                                 'detjualjml' => $jml,
  725.                                 'detjualharga' => $hargajual,
  726.                                 'detjualhargabeli' => $hargabeli,
  727.                                 'detjualuserinput' => $this->session->userdata('username'),
  728.                                 'detjualdispersen' => $dispersen,
  729.                                 'detjualdisuang' => $disuang,
  730.                                 'detjualsubtotalkotor' => $hitung_subtotal,
  731.                                 'detjualsubtotal' => $subtotal_bersih,
  732.                                 'detjualdiskon' => $hitung_diskon
  733.                             ];
  734.                             $this->db->insert('penjualan_detail', $datasimpan_temp);
  735.  
  736.                             // jika Produk Paket
  737.                             if ($produkpaket == 1) {
  738.                                 $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  739.  
  740.                                 foreach ($query_produkpaket->result_array() as $paket) :
  741.                                     $paketkodebarcode = $paket['paketkodebarcode'];
  742.                                     $paketjml = $paket['paketjml'];
  743.                                     // Kurangi stok tersedia
  744.                                     $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  745.                                     $row_dataproduk = $query_dataproduk->row_array();
  746.                                     $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  747.  
  748.                                     $this->db->where('kodebarcode', $paketkodebarcode);
  749.                                     $this->db->update('produk', [
  750.                                         'stok_tersedia' => $stok_dataproduk - $paketjml
  751.                                     ]);
  752.                                 // end kurang stok tersedia
  753.                                 endforeach;
  754.                                 // Update Tabel Penjualan
  755.                                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  756.                                 $total_detailpenjualan = 0;
  757.                                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  758.                                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  759.                                 endforeach;
  760.  
  761.                                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  762.                                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  763.                                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  764.                                 $kodemember =  $ambildata_penjualan['jualmemberkode'];
  765.                                 $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  766.                                 $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  767.  
  768.                                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  769.  
  770.                                 $ambilratusan = substr($hitung_totalbersih, -2);
  771.                                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  772.                                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  773.                                 } else {
  774.                                     $hasilpembulatan = $hitung_totalbersih;
  775.                                 }
  776.  
  777.                                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  778.  
  779.                                 $this->db->where('jualfaktur', $faktur);
  780.                                 $this->db->update('penjualan', [
  781.                                     'jualtotalkotor' => $total_detailpenjualan,
  782.                                     'jualtotalbersih' => $hitung_totalbersih,
  783.                                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  784.                                     'jualpembulatan' => $hasilpembulatan,
  785.                                     'jualsisapembulatan' => $sisapembulatan
  786.                                 ]);
  787.                                 // End
  788.  
  789.                                 $msg = ['sukses' => 'berhasil'];
  790.                             } else {
  791.                                 // Update Tabel Penjualan
  792.                                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  793.                                 $total_detailpenjualan = 0;
  794.                                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  795.                                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  796.                                 endforeach;
  797.  
  798.                                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  799.                                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  800.                                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  801.                                 $kodemember =  $ambildata_penjualan['jualmemberkode'];
  802.                                 $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  803.                                 $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  804.  
  805.  
  806.                                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  807.  
  808.                                 $ambilratusan = substr($hitung_totalbersih, -2);
  809.                                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  810.                                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  811.                                 } else {
  812.                                     $hasilpembulatan = $hitung_totalbersih;
  813.                                 }
  814.  
  815.                                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  816.  
  817.                                 $this->db->where('jualfaktur', $faktur);
  818.                                 $this->db->update('penjualan', [
  819.                                     'jualtotalkotor' => $total_detailpenjualan,
  820.                                     'jualtotalbersih' => $hitung_totalbersih,
  821.                                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  822.                                     'jualpembulatan' => $hasilpembulatan,
  823.                                     'jualsisapembulatan' => $sisapembulatan
  824.                                 ]);
  825.                                 // End
  826.  
  827.                                 $msg = ['sukses' => 'berhasil'];
  828.                             }
  829.                             // End
  830.                         }
  831.                     }
  832.                 } else {
  833.                     $data = [
  834.                         'tampildata' => $cekproduk
  835.                     ];
  836.                     $msg = ['banyakdata' => $this->load->view('admin/penjualan/modaldatacariproduk', $data, true)];
  837.                 }
  838.             } else {
  839.                 $msg = ['error' => 'Kode produk tidak ditemukan'];
  840.             }
  841.  
  842.             echo json_encode($msg);
  843.         }
  844.     }
  845.  
  846.     public function hapusitem()
  847.     {
  848.         if ($this->input->is_ajax_request() == true) {
  849.             $id = $this->input->post('id', true);
  850.             $kode = $this->input->post('kode', true);
  851.             $jml = $this->input->post('jml', true);
  852.  
  853.             $query_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualid' => $id])->row_array();
  854.             $faktur = $query_detailpenjualan['detjualfaktur'];
  855.  
  856.             $ambil_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $kode])->row_array();
  857.  
  858.             if ($ambil_dataproduk['produkpaket'] == 1) {
  859.                 $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $ambil_dataproduk['id']]);
  860.  
  861.                 foreach ($query_produkpaket->result_array() as $paket) :
  862.                     $paketkodebarcode = $paket['paketkodebarcode'];
  863.                     $paketjml = $paket['paketjml'];
  864.                     // Kurangi stok tersedia
  865.                     $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  866.                     $row_dataproduk = $query_dataproduk->row_array();
  867.                     $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  868.  
  869.                     $this->db->where('kodebarcode', $paketkodebarcode);
  870.                     $this->db->update('produk', [
  871.                         'stok_tersedia' => $stok_dataproduk + ($paketjml * $jml)
  872.                     ]);
  873.                 // end kurang stok tersedia
  874.                 endforeach;
  875.  
  876.                 //hapus item pada table temp
  877.                 $this->db->delete('penjualan_detail', ['detjualid' => $id]);
  878.  
  879.                 // Update Tabel Penjualan
  880.                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  881.                 $total_detailpenjualan = 0;
  882.                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  883.                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  884.                 endforeach;
  885.  
  886.                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  887.                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  888.                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  889.  
  890.                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  891.  
  892.                 $ambilratusan = substr($hitung_totalbersih, -2);
  893.                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  894.                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  895.                 } else {
  896.                     $hasilpembulatan = $hitung_totalbersih;
  897.                 }
  898.  
  899.                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  900.  
  901.                 $this->db->where('jualfaktur', $faktur);
  902.                 $this->db->update('penjualan', [
  903.                     'jualtotalkotor' => $total_detailpenjualan,
  904.                     'jualtotalbersih' => $hitung_totalbersih,
  905.                     'jualpembulatan' => $hasilpembulatan,
  906.                     'jualsisapembulatan' => $sisapembulatan,
  907.                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang
  908.                 ]);
  909.                 // End
  910.  
  911.                 $msg = [
  912.                     'sukses' => 'berhasil'
  913.                 ];
  914.             } else {
  915.                 //hapus item pada table temp
  916.                 $this->db->delete('penjualan_detail', ['detjualid' => $id]);
  917.  
  918.                 // Update Tabel Penjualan
  919.                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  920.                 $total_detailpenjualan = 0;
  921.                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  922.                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  923.                 endforeach;
  924.  
  925.                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  926.                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  927.                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  928.  
  929.                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  930.  
  931.                 $ambilratusan = substr($hitung_totalbersih, -2);
  932.                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  933.                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  934.                 } else {
  935.                     $hasilpembulatan = $hitung_totalbersih;
  936.                 }
  937.  
  938.                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  939.  
  940.                 $this->db->where('jualfaktur', $faktur);
  941.                 $this->db->update('penjualan', [
  942.                     'jualtotalkotor' => $total_detailpenjualan,
  943.                     'jualtotalbersih' => $hitung_totalbersih,
  944.                     'jualpembulatan' => $hasilpembulatan,
  945.                     'jualsisapembulatan' => $sisapembulatan,
  946.                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang
  947.                 ]);
  948.                 // End
  949.                 $msg = [
  950.                     'sukses' => 'berhasil'
  951.                 ];
  952.             }
  953.  
  954.             echo json_encode($msg);
  955.         }
  956.     }
  957.  
  958.     public function carimember()
  959.     {
  960.         if ($this->input->is_ajax_request() == true) {
  961.             $this->load->view('kasir/modalcarimember');
  962.         }
  963.     }
  964.  
  965.     public function ambildatamember()
  966.     {
  967.         if ($this->input->is_ajax_request() == true) {
  968.             $this->load->model('admin/member/Modelmember', 'member');
  969.             $list = $this->member->get_datatables();
  970.             $data = array();
  971.             $no = $_POST['start'];
  972.             foreach ($list as $field) {
  973.                 $no++;
  974.                 $row = array();
  975.  
  976.                 $row[] = $no;
  977.                 $row[] = $field->memberkode;
  978.                 $row[] = $field->membernama;
  979.                 $row[] = $field->membertelp;
  980.                 $row[] = $field->memberalamat;
  981.                 $row[] = "<button type=\"button\" class=\"btn btn-sm btn-outline-info\" onclick=\"pilih('" . $field->memberkode . "','" . $field->membernama . "')\"><i class=\"fa fa-hand-point-up\"></i></button>";
  982.                 $data[] = $row;
  983.             }
  984.  
  985.             $output = array(
  986.                 "draw" => $_POST['draw'],
  987.                 "recordsTotal" => $this->member->count_all(),
  988.                 "recordsFiltered" => $this->member->count_filtered(),
  989.                 "data" => $data,
  990.             );
  991.             //output dalam format JSON
  992.             echo json_encode($output);
  993.         } else {
  994.             exit('Maaf data tidak bisa ditampilkan');
  995.         }
  996.     }
  997.  
  998.     public function pembayaran()
  999.     {
  1000.         if ($this->input->is_ajax_request() == true) {
  1001.             $faktur = $this->input->post('faktur', true);
  1002.             $kodemember = $this->input->post('kodemember', true);
  1003.             $namamember = $this->input->post('namamember', true);
  1004.             $total_kotor = $this->input->post('total_kotor', true);
  1005.             $total_bersih_semua = $this->input->post('total_bersih_semua', true);
  1006.             $pembulatan = $this->input->post('pembulatan', true);
  1007.             $dispersen =  $this->input->post('dispersensemua', true);
  1008.             $disuang =  $this->input->post('disuangsemua', true);
  1009.  
  1010.             $cek_data_temp = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1011.  
  1012.             if ($cek_data_temp->num_rows() > 0) {
  1013.                 $data = [
  1014.                     'faktur' => $faktur,
  1015.                     'kodemember' => $kodemember,
  1016.                     'namamember' => $namamember,
  1017.                     'total_kotor' => $total_kotor,
  1018.                     'total_bersih_semua' => $total_bersih_semua,
  1019.                     'pembulatan' => ($pembulatan == 0) ? $total_bersih_semua : $pembulatan,
  1020.                     'dispersensemua' => $dispersen,
  1021.                     'disuangsemua' => $disuang
  1022.                 ];
  1023.                 $msg = [
  1024.                     'sukses' => $this->load->view('admin/penjualan/modalpembayaran', $data, true)
  1025.                 ];
  1026.             } else {
  1027.                 $msg = ['error' => 'Item belum ada.'];
  1028.             }
  1029.             echo json_encode($msg);
  1030.         }
  1031.     }
  1032.  
  1033.     function bataltransaksi()
  1034.     {
  1035.         if ($this->input->is_ajax_request() == true) {
  1036.             $faktur = $this->input->post('faktur', true);
  1037.             $username = $this->session->userdata('username');
  1038.  
  1039.             $cekfaktur_penjualan_detail = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur, 'detjualuserinput' => $username]);
  1040.  
  1041.             if ($cekfaktur_penjualan_detail->num_rows() > 0) {
  1042.                 // Hapus Neraca
  1043.                 $this->neraca->hapus_neraca_penjualan($faktur);
  1044.  
  1045.                 // Hapus Neraca Untuk Kas Kecil
  1046.                 $this->db->delete('neraca_transaksi', [
  1047.                     'transno' => $faktur,
  1048.                     'transnoakun' => '1-110',
  1049.                     'transjenis' => 'K'
  1050.                 ]);
  1051.  
  1052.                 // Mengembalikan Stok, jika yang dihapus adalah produk paket
  1053.                 $query_penjualan_detail = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1054.                 foreach ($query_penjualan_detail->result_array() as $penjualanDetail) :
  1055.                     $detjualkodebarcode = $penjualanDetail['detjualkodebarcode'];
  1056.                     $detjualjml = $penjualanDetail['detjualjml'];
  1057.                     $cek_produk = $this->db->get_where('produk', ['kodebarcode' => $detjualkodebarcode])->row_array();
  1058.                     if ($cek_produk['produkpaket'] == '1') {
  1059.                         $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $cek_produk['id']]);
  1060.  
  1061.                         foreach ($query_produkpaket->result_array() as $paket) :
  1062.                             $paketkodebarcode = $paket['paketkodebarcode'];
  1063.                             $paketjml = $paket['paketjml'];
  1064.                             // Kurangi stok tersedia
  1065.                             $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  1066.                             $row_dataproduk = $query_dataproduk->row_array();
  1067.                             $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  1068.  
  1069.                             $this->db->where('kodebarcode', $paketkodebarcode);
  1070.                             $this->db->update('produk', [
  1071.                                 'stok_tersedia' => $stok_dataproduk + ($paketjml * $detjualjml)
  1072.                             ]);
  1073.                         // end kurang stok tersedia
  1074.                         endforeach;
  1075.                     }
  1076.                 endforeach;
  1077.                 // End
  1078.  
  1079.                 // Update Tabungan diskon member jika penjualan member
  1080.                 $ambil_datapenjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1081.                 $jualmemberkode = $ambil_datapenjualan['jualmemberkode'];
  1082.                 $jualtotalbersih = $ambil_datapenjualan['jualtotalbersih'];
  1083.  
  1084.                 if (strlen($jualmemberkode) > 0) {
  1085.                     $ambil_datamember = $this->db->get_where('member', ['memberkode' => $jualmemberkode])->row_array();
  1086.                     $membertotaldiskon = $ambil_datamember['membertotaldiskon'];
  1087.                     $ambil_datamembersettingdiskon = $this->db->get('member_setting_diskon')->row_array();
  1088.                     $diskon_setting = $ambil_datamembersettingdiskon['diskon'];
  1089.  
  1090.                     $hitung_tabungandiskonmember = $jualtotalbersih * ($diskon_setting / 100);
  1091.  
  1092.                     $this->db->where('memberkode', $jualmemberkode);
  1093.                     $this->db->update('member', [
  1094.                         'membertotaldiskon' => $membertotaldiskon - $hitung_tabungandiskonmember
  1095.                     ]);
  1096.                 }
  1097.                 // end
  1098.  
  1099.                 $this->db->delete('penjualan_detail', ['detjualfaktur' => $faktur]);
  1100.                 $this->db->delete('penjualan', ['jualfaktur' => $faktur]);
  1101.  
  1102.  
  1103.                 $msg = ['sukses' => 'Berhasil dihapus'];
  1104.             } else {
  1105.                 $msg = ['error' => 'Tidak ada yang dibatalkan'];
  1106.             }
  1107.             echo json_encode($msg);
  1108.         }
  1109.     }
  1110.  
  1111.     public function simpantransaksi()
  1112.     {
  1113.         if ($this->input->is_ajax_request() == true) {
  1114.             $napel = $this->input->post('napel', true);
  1115.             $faktur = $this->input->post('faktur', true);
  1116.             $kodemember = $this->input->post('kodemember', true);
  1117.             $namamember = $this->input->post('namamember', true);
  1118.             $statusbayar = $this->input->post('jenispembayaran', true);
  1119.             $tglpembayaran = $this->input->post('tglpembayaran', true);
  1120.             $totalkotor = $this->input->post('total_kotor', true);
  1121.             $diskonpersen = $this->input->post('dispersensemua', true);
  1122.             $diskonuang = $this->input->post('disuangsemua', true);
  1123.             $totalbersih = $this->input->post('total_bersih_semua', true);
  1124.             $pembulatan = $this->input->post('pembulatan', true);
  1125.             $sisapembulatan = $pembulatan - $totalbersih;
  1126.             $jumlahuang = str_replace(",", "", $this->input->post('jumlahuang', true));
  1127.             $sisa = str_replace(",", "", $this->input->post('sisa', true));
  1128.  
  1129.             if ($statusbayar == 'T') {
  1130.                 $input_tglpembayaran = '0000-00-00';
  1131.                 $statuslunas = '1';
  1132.             } else {
  1133.                 $input_tglpembayaran = $tglpembayaran;
  1134.                 $statuslunas = '0';
  1135.             }
  1136.  
  1137.             $username = $this->session->userdata('username');
  1138.             $hitung_diskon = $totalkotor * ($diskonpersen / 100) + $diskonuang;
  1139.  
  1140.             $ambil_datamembersettingdiskon = $this->db->get('member_setting_diskon')->row_array();
  1141.             $diskon_setting = $ambil_datamembersettingdiskon['diskon'];
  1142.  
  1143.             if (strlen($kodemember) > 0) {
  1144.                 // Update tabungan diskon member
  1145.                 $ambil_datamember = $this->db->get_where('member', ['memberkode' => $kodemember])->row_array();
  1146.                 $member_totaldiskon = $ambil_datamember['membertotaldiskon'];
  1147.  
  1148.                 $ambil_datapenjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1149.                 $jual_totalbersih = $ambil_datapenjualan['jualtotalbersih'];
  1150.  
  1151.                 $kurangi_diskonlama = $member_totaldiskon - ($jual_totalbersih * $diskon_setting / 100);
  1152.  
  1153.                 $ambil_diskonbaru = $totalbersih * $diskon_setting / 100;
  1154.  
  1155.                 $this->db->where('memberkode', $kodemember);
  1156.                 $this->db->update('member', [
  1157.                     'membertotaldiskon' => $ambil_diskonbaru + $kurangi_diskonlama
  1158.                 ]);
  1159.                 // End
  1160.             }
  1161.  
  1162.             //simpan penjualan
  1163.             $simpan_penjualan = [
  1164.                 'jualtgl' => date('Y-m-d H:i:s'),
  1165.                 'jualmemberkode' => $kodemember,
  1166.                 'jualstatusbayar' => $statusbayar,
  1167.                 'jualtotalkotor' => $totalkotor,
  1168.                 'jualdispersen' => $diskonpersen,
  1169.                 'jualdisuang' => $diskonuang,
  1170.                 'jualtotalbersih' => $totalbersih,
  1171.                 'jualstatuslunas' => $statuslunas,
  1172.                 'jualtgljatuhtempo' => $input_tglpembayaran,
  1173.                 'jualjmluangbayar' => $jumlahuang,
  1174.                 'jualjmluangsisa' => $sisa,
  1175.                 'jualuserinput' => $username,
  1176.                 'jualdiskon' => $hitung_diskon,
  1177.                 'jualpembulatan' => $pembulatan,
  1178.                 'jualsisapembulatan' => $sisapembulatan
  1179.             ];
  1180.             $this->db->where('jualfaktur', $faktur);
  1181.             $this->db->update('penjualan', $simpan_penjualan);
  1182.  
  1183.             if (strlen($kodemember) > 0) {
  1184.                 $this->neraca->simpanantabunganmember($faktur, $diskon_setting);
  1185.             }
  1186.  
  1187.             // Neraca 1-160 Persediaan Barang Dagang
  1188.             $ambildata_penjualan_detail = $this->db->query("SELECT SUM(detjualjml*detjualhargabeli) AS total_harga,detjualtgl FROM penjualan_detail JOIN produk on produk.`kodebarcode`=detjualkodebarcode WHERE detjualfaktur ='$faktur' AND produkpaket BETWEEN 0 and 1");
  1189.             $row_penjualan_detail = $ambildata_penjualan_detail->row_array();
  1190.  
  1191.             $this->neraca->debit_persediaan_dagang_penjualan($faktur, date('Y-m-d'), $row_penjualan_detail['total_harga']);
  1192.  
  1193.             // neraca 1-161 Persediaan saldo Pulsa
  1194.             $penjualandetail_pulsa = $this->db->query("SELECT SUM(detjualjml*detjualhargabeli) AS total_harga,detjualtgl FROM penjualan_detail JOIN produk on produk.`kodebarcode`=detjualkodebarcode WHERE detjualfaktur ='$faktur' AND produkpaket = 2")->row_array();
  1195.             $this->neraca->debit_persediaan_pulsa($faktur, $row_penjualan_detail['detjualtgl'], $penjualandetail_pulsa['total_harga']);
  1196.  
  1197.  
  1198.             // Neraca No.akun 1-130 Piutang Dagang
  1199.             $this->neraca->kredit_piutang_dagang($faktur);
  1200.  
  1201.             $this->neraca->simpan_neraca_penjualan($faktur, $totalbersih);
  1202.  
  1203.             // Update neraca kas kecil
  1204.             if ($statusbayar == 'T') {
  1205.                 $cek_neraca_transaksi_kaskecil = $this->db->get_where('neraca_transaksi', [
  1206.                     'transno' => $faktur,
  1207.                     'transnoakun' => '1-110',
  1208.                     'transjenis' => 'K'
  1209.                 ]);
  1210.  
  1211.                 if ($cek_neraca_transaksi_kaskecil->num_rows() > 0) {
  1212.                     $this->db->where('transno', $faktur);
  1213.                     $this->db->where('transnoakun', '1-110');
  1214.                     $this->db->where('transjenis', 'K');
  1215.                     $this->db->update('neraca_transaksi', [
  1216.                         'transjml' => $pembulatan
  1217.                     ]);
  1218.                 } else {
  1219.                     $this->db->insert('neraca_transaksi', [
  1220.                         'transno' => $faktur,
  1221.                         'transnoakun' => '1-110',
  1222.                         'transjenis' => 'K',
  1223.                         'transtgl' => date('Y-m-d'),
  1224.                         'transjml' => $pembulatan
  1225.                     ]);
  1226.                 }
  1227.             }
  1228.             // End Update neraca kas kecil
  1229.             $msg = [
  1230.                 'sukses' => 'Transaksi berhasil disimpan',
  1231.                 'sisauang' => number_format($sisa, 0, ".", "."),
  1232.                 'cetakfaktur' => site_url('admin/penjualan/cetakfaktur/') . $faktur
  1233.             ];
  1234.             echo json_encode($msg);
  1235.         }
  1236.     }
  1237.  
  1238.     public function cetakfaktur()
  1239.     {
  1240.         $faktur = $this->uri->segment('4');
  1241.  
  1242.         $cekfaktur = $this->db->get_where('penjualan', ['jualfaktur' => $faktur]);
  1243.  
  1244.         if ($cekfaktur->num_rows() > 0) {
  1245.             $row_penjualan = $cekfaktur->row_array();
  1246.  
  1247.             $query_toko = $this->db->get_where('nn_namatoko', ['idtoko' => 1]);
  1248.             $row_toko = $query_toko->row_array();
  1249.  
  1250.             $query_detail = $this->db->query("SELECT penjualan_detail.*, satuan.`satnama`,produk.`namaproduk` FROM penjualan_detail JOIN satuan ON detjualsatid=satid JOIN produk ON produk.`kodebarcode`=detjualkodebarcode WHERE detjualfaktur='$faktur'");
  1251.  
  1252.             $ambil_datamember = $this->db->get_where('member', ['memberkode' => $row_penjualan['jualmemberkode']]);
  1253.             if ($ambil_datamember->num_rows() > 0) {
  1254.                 $row_member = $ambil_datamember->row_array();
  1255.                 $kodemember = $row_member['memberkode'];
  1256.                 $namamember = $row_member['membernama'];
  1257.                 $tglsekarang = date('Y-m-d');
  1258.                 $ambil_datasettingdiskon = $this->db->get('member_setting_diskon')->row_array();
  1259.                 $diskonsetting = $ambil_datasettingdiskon['diskon'];
  1260.  
  1261.                 // Hitung sisa tabungan diskon member
  1262.                 $query_tabungandiskon = $this->db->query("SELECT IFNULL(ROUND(SUM(jualtotalbersih * ($diskonsetting / 100)),0),0) AS totaldiskon FROM penjualan WHERE jualmemberkode='$kodemember' AND DATE_FORMAT(jualtgl,'%Y-%m-%d')<='$tglsekarang' AND (jualstatusbayar='T' OR jualstatusbayar='K')")->row_array();
  1263.  
  1264.                 $query_diskondigunakan = $this->db->query("SELECT IFNULL(SUM(jualtotalbersih),0) AS totaldigunakan FROM penjualan WHERE jualmemberkode='$kodemember' AND DATE_FORMAT(jualtgl,'%Y-%m-%d')<='$tglsekarang' AND jualstatusbayar='M'")->row_array();
  1265.  
  1266.                 $query_diskondiambil = $this->db->query("SELECT IFNULL(SUM(detambiljumlah),0) AS totaldiambil FROM pengambilan_diskon_detail JOIN pengambilan_diskon ON  detambilkode=ambilkode WHERE detambilmemberkode = '$kodemember' AND ambiltgl <= '$tglsekarang'")->row_array();
  1267.  
  1268.                 $totaldiskon = $query_tabungandiskon['totaldiskon'];
  1269.                 $totaldigunakan = $query_diskondigunakan['totaldigunakan'];
  1270.                 $totaldiambil = $query_diskondiambil['totaldiambil'];
  1271.                 // end sisa tabungan diskon member
  1272.  
  1273.                 $totaldiskonmember = $totaldiskon - ($totaldigunakan + $totaldiambil);
  1274.             }
  1275.  
  1276.             $data = [
  1277.                 'namatoko' => $row_toko['nmtoko'],
  1278.                 'alamattoko' => $row_toko['alamat'],
  1279.                 'telptoko' => $row_toko['telp'],
  1280.                 'hptoko' => $row_toko['hp'],
  1281.                 'faktur' => $faktur,
  1282.                 'totalkotor' => number_format($row_penjualan['jualtotalkotor'], 0, ",", "."),
  1283.                 'totalbersih' => number_format($row_penjualan['jualtotalbersih'], 0, ",", "."),
  1284.                 'disuang' => number_format($row_penjualan['jualdisuang'], 0, ",", "."),
  1285.                 'dispersen' => $row_penjualan['jualdispersen'] . ' %',
  1286.                 'namauser' => $this->session->userdata('namalengkapuser'),
  1287.                 'tglfaktur' => $row_penjualan['jualtgl'],
  1288.                 'jmluangbayar' => number_format($row_penjualan['jualjmluangbayar'], 0, ",", "."),
  1289.                 'jmluangsisa' => number_format($row_penjualan['jualjmluangsisa'], 0, ",", "."),
  1290.                 'detailpenjualan' => $query_detail,
  1291.                 'member' => $row_penjualan['jualmemberkode'],
  1292.                 'jualdispersen' => $row_penjualan['jualdispersen'],
  1293.                 'jualdiskon' => $row_penjualan['jualdiskon'],
  1294.                 'jualtotalbersih' => $row_penjualan['jualtotalbersih'],
  1295.                 'jualjmluangsisa' => $row_penjualan['jualjmluangsisa'],
  1296.                 'jualjmluangbayar' => $row_penjualan['jualjmluangbayar'],
  1297.                 'kodemember' => $kodemember,
  1298.                 'namamember' => $namamember,
  1299.                 'totaldiskonmember' => $totaldiskonmember
  1300.             ];
  1301.  
  1302.             $this->load->view('admin/penjualan/cetakfaktur', $data);
  1303.         } else {
  1304.             exit('Data tidak ditemukan...');
  1305.         }
  1306.     }
  1307.  
  1308.     public function cariproduk()
  1309.     {
  1310.         if ($this->input->is_ajax_request() == true) {
  1311.             if ($this->input->is_ajax_request() == true) {
  1312.                 $this->load->view('kasir/modalcariproduk');
  1313.             }
  1314.         }
  1315.     }
  1316.  
  1317.     public function ambildataproduk()
  1318.     {
  1319.         if ($this->input->is_ajax_request() == true) {
  1320.             $this->load->model('admin/produk/Modelcariproduk', 'produk');
  1321.  
  1322.             $list = $this->produk->get_datatables();
  1323.             $data = array();
  1324.             $no = $_POST['start'];
  1325.             foreach ($list as $field) {
  1326.                 $no++;
  1327.                 $row = array();
  1328.  
  1329.                 $tombolpilih = "<button type=\"button\" class=\"btn btn-info btn-sm waves-effect waves-light btnpilih\" onclick=\"pilih('" . $field->kodebarcode . "')\" title=\"Pilih Item\">
  1330.                    <i class=\"fa fa-hand-point-up\"></i>
  1331.                </button>";
  1332.                 $row[] = $no;
  1333.                 $row[] = $field->kodebarcode;
  1334.                 $row[] = $field->namaproduk;
  1335.                 $row[] = $field->satnama;
  1336.                 $row[] = number_format($field->harga_jual_eceran, 2, ".", ",");
  1337.                 $row[] = number_format($field->stok_tersedia, 2, ".", ",");
  1338.                 $row[] = $tombolpilih;
  1339.                 $data[] = $row;
  1340.             }
  1341.  
  1342.             $output = array(
  1343.                 "draw" => $_POST['draw'],
  1344.                 "recordsTotal" => $this->produk->count_all(),
  1345.                 "recordsFiltered" => $this->produk->count_filtered(),
  1346.                 "data" => $data,
  1347.             );
  1348.             //output dalam format JSON
  1349.             echo json_encode($output);
  1350.         }
  1351.     }
  1352.  
  1353.     function gantisatuan()
  1354.     {
  1355.         if ($this->input->is_ajax_request() == true) {
  1356.             $kode = $this->input->post('kode', true);
  1357.             $id_tempjual = $this->input->post('id', true);
  1358.             $jualfaktur = $this->input->post('jualfaktur', true);
  1359.             $jualjml = $this->input->post('jml', true);
  1360.  
  1361.             $ambildata = $this->db->query("SELECT produk_harga.`idsat`,satuan.`satnama`,produk_harga.`id` as id FROM produk_harga JOIN satuan ON produk_harga.`idsat`=satuan.`satid` WHERE kodebarcode='$kode'");
  1362.  
  1363.             $ambildataproduk = $this->db->get_where('produk', ['kodebarcode' => $kode]);
  1364.             $row = $ambildataproduk->row_array();
  1365.  
  1366.             if ($ambildata->num_rows() > 0) {
  1367.                 $data = [
  1368.                     'id_tempjual' => $id_tempjual,
  1369.                     'satuanprodukharga' => $ambildata,
  1370.                     'namaproduk' => $row['namaproduk'],
  1371.                     'jualfaktur' => $jualfaktur,
  1372.                     'jualjml' => $jualjml
  1373.                 ];
  1374.                 $msg = [
  1375.                     'sukses' => [
  1376.                         'tampilmodal' => $this->load->view('admin/penjualan/modalgantisatuan', $data, true)
  1377.                     ]
  1378.                 ];
  1379.             } else {
  1380.                 $msg = ['error' => 'Tidak ditemukan satuan yang lain nya pada produk ini.'];
  1381.             }
  1382.             echo json_encode($msg);
  1383.         }
  1384.     }
  1385.  
  1386.     function updategantisatuan()
  1387.     {
  1388.         if ($this->input->is_ajax_request() == true) {
  1389.             $id_tempjual = $this->input->post('id_tempjual', true);
  1390.             $satuan = $this->input->post('satuan', true);
  1391.             $jualjml = $this->input->post('jualjml', true);
  1392.  
  1393.             $this->form_validation->set_rules('satuan', 'Satuan', 'trim|required', [
  1394.                 'required' => '%s harus dipilih'
  1395.             ]);
  1396.  
  1397.  
  1398.             if ($this->form_validation->run() == TRUE) {
  1399.                 $ambildata_produkharga = $this->db->get_where('produk_harga', ['id' => $satuan]);
  1400.                 $row_produkharga = $ambildata_produkharga->row_array();
  1401.  
  1402.                 $idsat = $row_produkharga['idsat'];
  1403.                 $hargajual = $row_produkharga['hargajual'];
  1404.                 $jml_default = $row_produkharga['jml_default'];
  1405.                 $kodebarcode = $row_produkharga['kodebarcode'];
  1406.  
  1407.                 //ambil data produk
  1408.                 $query_produk = $this->db->get_where('produk', ['kodebarcode' => $kodebarcode]);
  1409.                 $row_produk = $query_produk->row_array();
  1410.                 $stok_tersedia = $row_produk['stok_tersedia'];
  1411.  
  1412.                 if (($jualjml * $jml_default) > $stok_tersedia) {
  1413.                     $msg = [
  1414.                         'error' => '<div class="alert alert-danger alert-dismissible fade show" role="alert">
  1415.                                        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  1416.                                            <span aria-hidden="true">×</span>
  1417.                                        </button> Maaf stok tidak mencukupi
  1418.                                    </div>'
  1419.                     ];
  1420.                 } else {
  1421.                     $subtotal = ($jualjml * $hargajual);
  1422.  
  1423.                     $data_update_tempjual = [
  1424.                         'detjualsatid' => $idsat,
  1425.                         'detjualsatqty' => $jml_default,
  1426.                         'detjualharga' => $hargajual,
  1427.                         'detjualsubtotal' => $subtotal
  1428.                     ];
  1429.                     $this->db->where('detjualid', $id_tempjual);
  1430.                     $this->db->update('penjualan_detail', $data_update_tempjual);
  1431.  
  1432.                     $msg = [
  1433.                         'sukses' => 'Berhasil diganti'
  1434.                     ];
  1435.                 }
  1436.             } else {
  1437.                 $msg = [
  1438.                     'error' => '<div class="alert alert-danger alert-dismissible fade show" role="alert">
  1439.                                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  1440.                                        <span aria-hidden="true">×</span>
  1441.                                    </button>' . validation_errors() . '
  1442.                                </div>'
  1443.                 ];
  1444.             }
  1445.             echo json_encode($msg);
  1446.         }
  1447.     }
  1448.  
  1449.     public function ambildatatemp_terakhir()
  1450.     {
  1451.         if ($this->input->is_ajax_request() == true) {
  1452.             $faktur = $this->input->post('faktur', true);
  1453.             $username = $this->session->userdata('username');
  1454.  
  1455.             $query_cekdatatemp = $this->db->query("SELECT penjualan_detail.*,produk.`namaproduk`,satuan.`satnama` FROM penjualan_detail JOIN produk ON penjualan_detail.`detjualkodebarcode`=produk.`kodebarcode`
  1456.            JOIN satuan ON detjualsatid=satuan.`satid` WHERE detjualfaktur = '$faktur' order by detjualid desc");
  1457.  
  1458.             if ($query_cekdatatemp->num_rows() > 0) {
  1459.                 $row = $query_cekdatatemp->row_array();
  1460.  
  1461.                 $data = [
  1462.                     'id' => $row['detjualid'],
  1463.                     'kode' => $row['detjualkodebarcode'],
  1464.                     'namaproduk' => $row['namaproduk'],
  1465.                     'jml' => $row['detjualjml'],
  1466.                     'satuan' => $row['satnama'],
  1467.                     'hargajual' => number_format($row['detjualharga'], 2),
  1468.                     'dispersen' => number_format($row['detjualdispersen'], 2),
  1469.                     'disuang' => number_format($row['detjualdisuang'], 2, ".", ","),
  1470.                 ];
  1471.  
  1472.                 $msg = ['sukses' => $data];
  1473.             } else {
  1474.                 $msg = [
  1475.                     'error' => 'Data transaksi belum ada'
  1476.                 ];
  1477.             }
  1478.             echo json_encode($msg);
  1479.         }
  1480.     }
  1481.  
  1482.     public function edititem_tempjual()
  1483.     {
  1484.         if ($this->input->is_ajax_request() == true) {
  1485.             $id = $this->input->post('id', true);
  1486.  
  1487.             $query_cekdatatemp = $this->db->query("SELECT penjualan_detail.*,produk.`namaproduk`,satuan.`satnama` FROM penjualan_detail JOIN produk ON penjualan_detail.`detjualkodebarcode`=produk.`kodebarcode`
  1488.            JOIN satuan ON detjualsatid=satuan.`satid` WHERE detjualid = '$id'");
  1489.  
  1490.             if ($query_cekdatatemp->num_rows() > 0) {
  1491.                 $row = $query_cekdatatemp->row_array();
  1492.  
  1493.                 $data = [
  1494.                     'id' => $row['detjualid'],
  1495.                     'kode' => $row['detjualkodebarcode'],
  1496.                     'namaproduk' => $row['namaproduk'],
  1497.                     'jml' => $row['detjualjml'],
  1498.                     'satuan' => $row['satnama'],
  1499.                     'hargajual' => number_format($row['detjualharga'], 2),
  1500.                     'dispersen' => number_format($row['detjualdispersen'], 2),
  1501.                     'disuang' => number_format($row['detjualdisuang'], 2, ".", ","),
  1502.                 ];
  1503.  
  1504.                 $msg = ['sukses' => $data];
  1505.             } else {
  1506.                 $msg = [
  1507.                     'error' => 'Data transaksi belum ada'
  1508.                 ];
  1509.             }
  1510.             echo json_encode($msg);
  1511.         }
  1512.     }
  1513.  
  1514.     public function updatejmlproduk()
  1515.     {
  1516.         if ($this->input->is_ajax_request() == true) {
  1517.             $jml = $this->input->post('jml', true);
  1518.             $id = $this->input->post('id', true);
  1519.             $dispersen = $this->input->post('dispersen', true);
  1520.             $disuang = $this->input->post('disuang', true);
  1521.             $kode = $this->input->post('kode', true);
  1522.  
  1523.             // ambil data temp jual
  1524.             $query_ambildatatemp = $this->db->get_where('penjualan_detail', ['detjualid' => $id]);
  1525.             $row_penjualan_detail = $query_ambildatatemp->row_array();
  1526.  
  1527.             $detjualsatqty = $row_penjualan_detail['detjualsatqty'];
  1528.             $detjualjml = $row_penjualan_detail['detjualjml'];
  1529.             $detjualharga = $row_penjualan_detail['detjualharga'];
  1530.             $faktur = $row_penjualan_detail['detjualfaktur'];
  1531.             // end temp jual
  1532.  
  1533.             // ambil data produk
  1534.             $query_ambildataproduk = $this->db->get_where('produk', ['kodebarcode' => $kode]);
  1535.             $row_produk = $query_ambildataproduk->row_array();
  1536.             $stoktersedia = $row_produk['stok_tersedia'];
  1537.             $produkpaket = $row_produk['produkpaket'];
  1538.             $idproduk = $row_produk['id'];
  1539.             // end produk
  1540.  
  1541.             //cek stok produk
  1542.             $kembalikan_stok = $stoktersedia + ($detjualjml * $detjualsatqty);
  1543.             $kali_jmlbaru = $jml * $detjualsatqty;
  1544.  
  1545.             // Ambil data pengaturan
  1546.             $datapengaturan = $this->db->get_where('pengaturan', ['id' => 1])->row_array();
  1547.             // End
  1548.  
  1549.             if ($datapengaturan['stokminus'] == 1 && ($produkpaket == '0' || $produkpaket == '1')) {
  1550.                 if ($kali_jmlbaru > $kembalikan_stok) {
  1551.                     $msg = [
  1552.                         'error' => 'Stok tidak mencukupi'
  1553.                     ];
  1554.                 } else {
  1555.                     //update temp
  1556.                     $hitung_subtotal = ($jml *  $detjualharga);
  1557.                     $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($dispersen / 100)) - $disuang;
  1558.                     $hitung_diskon = $hitung_subtotal * ($dispersen / 100) + $disuang;
  1559.                     $dataupdate = [
  1560.                         'detjualjml' => $jml,
  1561.                         'detjualdispersen' => $dispersen,
  1562.                         'detjualdisuang' => $disuang,
  1563.                         'detjualsubtotalkotor' => $hitung_subtotal,
  1564.                         'detjualsubtotal' => $subtotal_bersih,
  1565.                         'detjualdiskon' => $hitung_diskon
  1566.                     ];
  1567.                     $this->db->where('detjualid', $id);
  1568.                     $this->db->update('penjualan_detail', $dataupdate);
  1569.  
  1570.                     if ($produkpaket == 1) {
  1571.                         $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  1572.  
  1573.                         foreach ($query_produkpaket->result_array() as $paket) :
  1574.                             $paketkodebarcode = $paket['paketkodebarcode'];
  1575.                             $paketjml = $paket['paketjml'];
  1576.                             // Kurangi stok tersedia
  1577.                             $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  1578.                             $row_dataproduk = $query_dataproduk->row_array();
  1579.                             $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  1580.  
  1581.                             $this->db->where('kodebarcode', $paketkodebarcode);
  1582.                             $this->db->update('produk', [
  1583.                                 'stok_tersedia' => $stok_dataproduk - $paketjml
  1584.                             ]);
  1585.                         // end kurang stok tersedia
  1586.                         endforeach;
  1587.  
  1588.                         // Update Tabel Penjualan
  1589.                         $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1590.                         $total_detailpenjualan = 0;
  1591.                         foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1592.                             $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1593.                         endforeach;
  1594.  
  1595.                         $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1596.                         $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1597.                         $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1598.  
  1599.                         $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1600.  
  1601.                         $ambilratusan = substr($hitung_totalbersih, -2);
  1602.                         if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1603.                             $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1604.                         } else {
  1605.                             $hasilpembulatan = $hitung_totalbersih;
  1606.                         }
  1607.  
  1608.                         $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1609.  
  1610.                         $this->db->where('jualfaktur', $faktur);
  1611.                         $this->db->update('penjualan', [
  1612.                             'jualtotalkotor' => $total_detailpenjualan,
  1613.                             'jualtotalbersih' => $hitung_totalbersih,
  1614.                             'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  1615.                             'jualpembulatan' => $hasilpembulatan,
  1616.                             'jualsisapembulatan' => $sisapembulatan
  1617.                         ]);
  1618.                         // End
  1619.  
  1620.                         $msg = [
  1621.                             'sukses' => 'Berhasil diupdate'
  1622.                         ];
  1623.                     } else {
  1624.                         // Update Tabel Penjualan
  1625.                         $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1626.                         $total_detailpenjualan = 0;
  1627.                         foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1628.                             $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1629.                         endforeach;
  1630.  
  1631.                         $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1632.                         $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1633.                         $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1634.  
  1635.                         $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1636.  
  1637.                         $ambilratusan = substr($hitung_totalbersih, -2);
  1638.                         if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1639.                             $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1640.                         } else {
  1641.                             $hasilpembulatan = $hitung_totalbersih;
  1642.                         }
  1643.  
  1644.                         $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1645.  
  1646.                         $this->db->where('jualfaktur', $faktur);
  1647.                         $this->db->update('penjualan', [
  1648.                             'jualtotalkotor' => $total_detailpenjualan,
  1649.                             'jualtotalbersih' => $hitung_totalbersih,
  1650.                             'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  1651.                             'jualpembulatan' => $hasilpembulatan,
  1652.                             'jualsisapembulatan' => $sisapembulatan
  1653.                         ]);
  1654.                         // End
  1655.                         $msg = [
  1656.                             'sukses' => 'Berhasil diupdate'
  1657.                         ];
  1658.                     }
  1659.                 }
  1660.             } else {
  1661.                 //update temp
  1662.                 $hitung_subtotal = ($jml *  $detjualharga);
  1663.                 $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($dispersen / 100)) - $disuang;
  1664.                 $hitung_diskon = $hitung_subtotal * ($dispersen / 100) + $disuang;
  1665.                 $dataupdate = [
  1666.                     'detjualjml' => $jml,
  1667.                     'detjualdispersen' => $dispersen,
  1668.                     'detjualdisuang' => $disuang,
  1669.                     'detjualsubtotalkotor' => $hitung_subtotal,
  1670.                     'detjualsubtotal' => $subtotal_bersih,
  1671.                     'detjualdiskon' => $hitung_diskon
  1672.                 ];
  1673.                 $this->db->where('detjualid', $id);
  1674.                 $this->db->update('penjualan_detail', $dataupdate);
  1675.  
  1676.                 if ($produkpaket == 1) {
  1677.                     $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  1678.  
  1679.                     foreach ($query_produkpaket->result_array() as $paket) :
  1680.                         $paketkodebarcode = $paket['paketkodebarcode'];
  1681.                         $paketjml = $paket['paketjml'];
  1682.                         // Kurangi stok tersedia
  1683.                         $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  1684.                         $row_dataproduk = $query_dataproduk->row_array();
  1685.                         $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  1686.  
  1687.                         $this->db->where('kodebarcode', $paketkodebarcode);
  1688.                         $this->db->update('produk', [
  1689.                             'stok_tersedia' => $stok_dataproduk - $paketjml
  1690.                         ]);
  1691.                     // end kurang stok tersedia
  1692.                     endforeach;
  1693.  
  1694.                     // Update Tabel Penjualan
  1695.                     $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1696.                     $total_detailpenjualan = 0;
  1697.                     foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1698.                         $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1699.                     endforeach;
  1700.  
  1701.                     $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1702.                     $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1703.                     $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1704.  
  1705.                     $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1706.  
  1707.                     $ambilratusan = substr($hitung_totalbersih, -2);
  1708.                     if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1709.                         $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1710.                     } else {
  1711.                         $hasilpembulatan = $hitung_totalbersih;
  1712.                     }
  1713.  
  1714.                     $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1715.  
  1716.                     $this->db->where('jualfaktur', $faktur);
  1717.                     $this->db->update('penjualan', [
  1718.                         'jualtotalkotor' => $total_detailpenjualan,
  1719.                         'jualtotalbersih' => $hitung_totalbersih,
  1720.                         'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  1721.                         'jualpembulatan' => $hasilpembulatan,
  1722.                         'jualsisapembulatan' => $sisapembulatan
  1723.                     ]);
  1724.                     // End
  1725.  
  1726.                     $msg = [
  1727.                         'sukses' => 'Berhasil diupdate'
  1728.                     ];
  1729.                 } else {
  1730.                     // Update Tabel Penjualan
  1731.                     $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1732.                     $total_detailpenjualan = 0;
  1733.                     foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1734.                         $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1735.                     endforeach;
  1736.  
  1737.                     $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1738.                     $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1739.                     $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1740.  
  1741.                     $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1742.  
  1743.                     $ambilratusan = substr($hitung_totalbersih, -2);
  1744.                     if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1745.                         $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1746.                     } else {
  1747.                         $hasilpembulatan = $hitung_totalbersih;
  1748.                     }
  1749.  
  1750.                     $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1751.  
  1752.                     $this->db->where('jualfaktur', $faktur);
  1753.                     $this->db->update('penjualan', [
  1754.                         'jualtotalkotor' => $total_detailpenjualan,
  1755.                         'jualtotalbersih' => $hitung_totalbersih,
  1756.                         'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  1757.                         'jualpembulatan' => $hasilpembulatan,
  1758.                         'jualsisapembulatan' => $sisapembulatan
  1759.                     ]);
  1760.                     // End
  1761.                     $msg = [
  1762.                         'sukses' => 'Berhasil diupdate'
  1763.                     ];
  1764.                 }
  1765.             }
  1766.  
  1767.  
  1768.  
  1769.             echo json_encode($msg);
  1770.         }
  1771.     }
  1772.  
  1773.     public function updatetambahjml()
  1774.     {
  1775.         if ($this->input->is_ajax_request() == true) {
  1776.             $id = $this->input->post('id', true);
  1777.             $kode = $this->input->post('kode', true);
  1778.             // ambil data temp jual
  1779.             $query_ambildatapenjualandetail = $this->db->get_where('penjualan_detail', ['detjualid' => $id]);
  1780.             $row_penjualan_detail = $query_ambildatapenjualandetail->row_array();
  1781.  
  1782.             $detjualsatqty = $row_penjualan_detail['detjualsatqty'];
  1783.             $detjualjml = $row_penjualan_detail['detjualjml'];
  1784.             $detjualharga = $row_penjualan_detail['detjualharga'];
  1785.             $detjualdispersen = $row_penjualan_detail['detjualdispersen'];
  1786.             $detjualdisuang = $row_penjualan_detail['detjualdisuang'];
  1787.             $faktur = $row_penjualan_detail['detjualfaktur'];
  1788.             // end temp jual
  1789.  
  1790.             // ambil data produk
  1791.             $query_ambildataproduk = $this->db->get_where('produk', ['kodebarcode' => $kode]);
  1792.             $row_produk = $query_ambildataproduk->row_array();
  1793.             $stoktersedia = $row_produk['stok_tersedia'];
  1794.             $produkpaket = $row_produk['produkpaket'];
  1795.             $idproduk = $row_produk['id'];
  1796.             // end produk
  1797.  
  1798.             //cek stok produk
  1799.             $kembalikan_stok = $stoktersedia + ($detjualjml * $detjualsatqty);
  1800.             $kali_jmlbaru = ($detjualjml + 1) * $detjualsatqty;
  1801.  
  1802.             // Ambil data pengaturan
  1803.             $datapengaturan = $this->db->get_where('pengaturan', ['id' => 1])->row_array();
  1804.             // End
  1805.  
  1806.             if ($datapengaturan['stokminus'] == 1 && ($produkpaket == '0' || $produkpaket == '1')) {
  1807.  
  1808.                 if ($kali_jmlbaru > $kembalikan_stok) {
  1809.                     $msg = [
  1810.                         'error' => 'Stok tidak mencukupi'
  1811.                     ];
  1812.                 } else {
  1813.                     //update temp
  1814.                     $hitung_subtotal = ($detjualjml + 1) *  $detjualharga;
  1815.                     $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($detjualdispersen / 100)) - $detjualdisuang;
  1816.                     $hitung_diskon = $hitung_subtotal * ($detjualdispersen / 100) + $detjualdisuang;
  1817.                     $dataupdate = [
  1818.                         'detjualjml' => ($detjualjml + 1),
  1819.                         'detjualsubtotalkotor' => $hitung_subtotal,
  1820.                         'detjualsubtotal' => $subtotal_bersih,
  1821.                         'detjualdiskon' => $hitung_diskon
  1822.                     ];
  1823.                     $this->db->where('detjualid', $id);
  1824.                     $this->db->update('penjualan_detail', $dataupdate);
  1825.  
  1826.                     if ($produkpaket == 1) {
  1827.                         $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  1828.  
  1829.                         foreach ($query_produkpaket->result_array() as $paket) :
  1830.                             $paketkodebarcode = $paket['paketkodebarcode'];
  1831.                             $paketjml = $paket['paketjml'];
  1832.                             // Kurangi stok tersedia
  1833.                             $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  1834.                             $row_dataproduk = $query_dataproduk->row_array();
  1835.                             $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  1836.  
  1837.                             $this->db->where('kodebarcode', $paketkodebarcode);
  1838.                             $this->db->update('produk', [
  1839.                                 'stok_tersedia' => $stok_dataproduk - $paketjml
  1840.                             ]);
  1841.                         // end kurang stok tersedia
  1842.                         endforeach;
  1843.  
  1844.                         // Update Tabel Penjualan
  1845.                         $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1846.                         $total_detailpenjualan = 0;
  1847.                         foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1848.                             $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1849.                         endforeach;
  1850.  
  1851.                         $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1852.                         $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1853.                         $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1854.                         $kodemember =  $ambildata_penjualan['jualmemberkode'];
  1855.                         $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  1856.                         $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  1857.  
  1858.                         // Update diskon member jika transaksi adalah member
  1859.                         // if (strlen($kodemember) > 0) {
  1860.                         //     $this->updatediskon->updatediskonmember($kodemember, $jualfaktur, $total_detailpenjualan);
  1861.                         // }
  1862.                         // End
  1863.  
  1864.                         $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1865.  
  1866.                         $ambilratusan = substr($hitung_totalbersih, -2);
  1867.                         if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1868.                             $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1869.                         } else {
  1870.                             $hasilpembulatan = $hitung_totalbersih;
  1871.                         }
  1872.  
  1873.                         $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1874.  
  1875.                         $this->db->where('jualfaktur', $faktur);
  1876.                         $this->db->update('penjualan', [
  1877.                             'jualtotalkotor' => $total_detailpenjualan,
  1878.                             'jualtotalbersih' => $hitung_totalbersih,
  1879.                             'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  1880.                             'jualpembulatan' => $hasilpembulatan,
  1881.                             'jualsisapembulatan' => $sisapembulatan
  1882.                         ]);
  1883.                         // End
  1884.  
  1885.                         $msg = [
  1886.                             'sukses' => 'Berhasil diupdate'
  1887.                         ];
  1888.                     } else {
  1889.                         // Update Tabel Penjualan
  1890.                         $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1891.                         $total_detailpenjualan = 0;
  1892.                         foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1893.                             $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1894.                         endforeach;
  1895.  
  1896.                         $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1897.                         $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1898.                         $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1899.                         $kodemember =  $ambildata_penjualan['jualmemberkode'];
  1900.                         $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  1901.                         $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  1902.  
  1903.                         // Update diskon member jika transaksi adalah member
  1904.                         // if (strlen($kodemember) > 0) {
  1905.                         //     $this->updatediskon->updatediskonmember($kodemember, $jualfaktur, $total_detailpenjualan);
  1906.                         // }
  1907.                         // End
  1908.  
  1909.                         $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1910.  
  1911.                         $ambilratusan = substr($hitung_totalbersih, -2);
  1912.                         if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1913.                             $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1914.                         } else {
  1915.                             $hasilpembulatan = $hitung_totalbersih;
  1916.                         }
  1917.  
  1918.                         $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1919.  
  1920.                         $this->db->where('jualfaktur', $faktur);
  1921.                         $this->db->update('penjualan', [
  1922.                             'jualtotalkotor' => $total_detailpenjualan,
  1923.                             'jualtotalbersih' => $hitung_totalbersih,
  1924.                             'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  1925.                             'jualpembulatan' => $hasilpembulatan,
  1926.                             'jualsisapembulatan' => $sisapembulatan
  1927.                         ]);
  1928.                         // End
  1929.  
  1930.                         $msg = [
  1931.                             'sukses' => 'Berhasil diupdate'
  1932.                         ];
  1933.                     }
  1934.                 }
  1935.             } else {
  1936.                 //update temp
  1937.                 $hitung_subtotal = ($detjualjml + 1) *  $detjualharga;
  1938.                 $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($detjualdispersen / 100)) - $detjualdisuang;
  1939.                 $hitung_diskon = $hitung_subtotal * ($detjualdispersen / 100) + $detjualdisuang;
  1940.                 $dataupdate = [
  1941.                     'detjualjml' => ($detjualjml + 1),
  1942.                     'detjualsubtotalkotor' => $hitung_subtotal,
  1943.                     'detjualsubtotal' => $subtotal_bersih,
  1944.                     'detjualdiskon' => $hitung_diskon
  1945.                 ];
  1946.                 $this->db->where('detjualid', $id);
  1947.                 $this->db->update('penjualan_detail', $dataupdate);
  1948.  
  1949.                 if ($produkpaket == 1) {
  1950.                     $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  1951.  
  1952.                     foreach ($query_produkpaket->result_array() as $paket) :
  1953.                         $paketkodebarcode = $paket['paketkodebarcode'];
  1954.                         $paketjml = $paket['paketjml'];
  1955.                         // Kurangi stok tersedia
  1956.                         $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  1957.                         $row_dataproduk = $query_dataproduk->row_array();
  1958.                         $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  1959.  
  1960.                         $this->db->where('kodebarcode', $paketkodebarcode);
  1961.                         $this->db->update('produk', [
  1962.                             'stok_tersedia' => $stok_dataproduk - $paketjml
  1963.                         ]);
  1964.                     // end kurang stok tersedia
  1965.                     endforeach;
  1966.  
  1967.                     // Update Tabel Penjualan
  1968.                     $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  1969.                     $total_detailpenjualan = 0;
  1970.                     foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  1971.                         $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  1972.                     endforeach;
  1973.  
  1974.                     $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  1975.                     $jualdispersen = $ambildata_penjualan['jualdispersen'];
  1976.                     $jualdisuang = $ambildata_penjualan['jualdisuang'];
  1977.                     $kodemember =  $ambildata_penjualan['jualmemberkode'];
  1978.                     $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  1979.                     $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  1980.  
  1981.                     // Update diskon member jika transaksi adalah member
  1982.                     // if (strlen($kodemember) > 0) {
  1983.                     //     $this->updatediskon->updatediskonmember($kodemember, $jualfaktur, $total_detailpenjualan);
  1984.                     // }
  1985.                     // End
  1986.  
  1987.                     $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  1988.  
  1989.                     $ambilratusan = substr($hitung_totalbersih, -2);
  1990.                     if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  1991.                         $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  1992.                     } else {
  1993.                         $hasilpembulatan = $hitung_totalbersih;
  1994.                     }
  1995.  
  1996.                     $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  1997.  
  1998.                     $this->db->where('jualfaktur', $faktur);
  1999.                     $this->db->update('penjualan', [
  2000.                         'jualtotalkotor' => $total_detailpenjualan,
  2001.                         'jualtotalbersih' => $hitung_totalbersih,
  2002.                         'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  2003.                         'jualpembulatan' => $hasilpembulatan,
  2004.                         'jualsisapembulatan' => $sisapembulatan
  2005.                     ]);
  2006.                     // End
  2007.  
  2008.                     $msg = [
  2009.                         'sukses' => 'Berhasil diupdate'
  2010.                     ];
  2011.                 } else {
  2012.                     // Update Tabel Penjualan
  2013.                     $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  2014.                     $total_detailpenjualan = 0;
  2015.                     foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  2016.                         $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  2017.                     endforeach;
  2018.  
  2019.                     $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  2020.                     $jualdispersen = $ambildata_penjualan['jualdispersen'];
  2021.                     $jualdisuang = $ambildata_penjualan['jualdisuang'];
  2022.                     $kodemember =  $ambildata_penjualan['jualmemberkode'];
  2023.                     $jualfaktur =  $ambildata_penjualan['jualfaktur'];
  2024.                     $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  2025.  
  2026.                     // Update diskon member jika transaksi adalah member
  2027.                     // if (strlen($kodemember) > 0) {
  2028.                     //     $this->updatediskon->updatediskonmember($kodemember, $jualfaktur, $total_detailpenjualan);
  2029.                     // }
  2030.                     // End
  2031.  
  2032.                     $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  2033.  
  2034.                     $ambilratusan = substr($hitung_totalbersih, -2);
  2035.                     if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  2036.                         $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  2037.                     } else {
  2038.                         $hasilpembulatan = $hitung_totalbersih;
  2039.                     }
  2040.  
  2041.                     $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  2042.  
  2043.                     $this->db->where('jualfaktur', $faktur);
  2044.                     $this->db->update('penjualan', [
  2045.                         'jualtotalkotor' => $total_detailpenjualan,
  2046.                         'jualtotalbersih' => $hitung_totalbersih,
  2047.                         'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  2048.                         'jualpembulatan' => $hasilpembulatan,
  2049.                         'jualsisapembulatan' => $sisapembulatan
  2050.                     ]);
  2051.                     // End
  2052.  
  2053.                     $msg = [
  2054.                         'sukses' => 'Berhasil diupdate'
  2055.                     ];
  2056.                 }
  2057.             }
  2058.  
  2059.  
  2060.             echo json_encode($msg);
  2061.         }
  2062.     }
  2063.  
  2064.     function updatekurangjml()
  2065.     {
  2066.         if ($this->input->is_ajax_request() == true) {
  2067.             $id = $this->input->post('id', true);
  2068.             $kode = $this->input->post('kode', true);
  2069.  
  2070.             // ambil data temp jual
  2071.             $query_ambildatatemp = $this->db->get_where('penjualan_detail', ['detjualid' => $id]);
  2072.             $row_penjualan_detail = $query_ambildatatemp->row_array();
  2073.  
  2074.             $detjualsatqty = $row_penjualan_detail['detjualsatqty'];
  2075.             $detjualjml = $row_penjualan_detail['detjualjml'];
  2076.             $detjualharga = $row_penjualan_detail['detjualharga'];
  2077.             $detjualdispersen = $row_penjualan_detail['detjualdispersen'];
  2078.             $detjualdisuang = $row_penjualan_detail['detjualdisuang'];
  2079.             $faktur = $row_penjualan_detail['detjualfaktur'];
  2080.             // end temp jual
  2081.  
  2082.             // ambil data produk
  2083.             $query_ambildataproduk = $this->db->get_where('produk', ['kodebarcode' => $kode]);
  2084.             $row_produk = $query_ambildataproduk->row_array();
  2085.             $stoktersedia = $row_produk['stok_tersedia'];
  2086.             $produkpaket = $row_produk['produkpaket'];
  2087.             $idproduk = $row_produk['id'];
  2088.             // end produk
  2089.  
  2090.             //cek stok produk
  2091.             $kembalikan_stok = $stoktersedia + ($detjualjml * $detjualsatqty);
  2092.             $kali_jmlbaru = ($detjualjml - 1) * $detjualsatqty;
  2093.  
  2094.             // if ($kali_jmlbaru > $kembalikan_stok) {
  2095.             //     $msg = [
  2096.             //         'error' => 'Stok tidak mencukupi'
  2097.             //     ];
  2098.             // } else {
  2099.             //update temp
  2100.             $hitung_subtotal = ($detjualjml - 1) *  $detjualharga;
  2101.             $subtotal_bersih = $hitung_subtotal - ($hitung_subtotal * ($detjualdispersen / 100)) - $detjualdisuang;
  2102.             $hitung_diskon = $hitung_subtotal * ($detjualdispersen / 100) + $detjualdisuang;
  2103.             $dataupdate = [
  2104.                 'detjualjml' => ($detjualjml - 1),
  2105.                 'detjualsubtotalkotor' => $hitung_subtotal,
  2106.                 'detjualsubtotal' => $subtotal_bersih,
  2107.                 'detjualdiskon' => $hitung_diskon
  2108.             ];
  2109.             $this->db->where('detjualid', $id);
  2110.             $this->db->update('penjualan_detail', $dataupdate);
  2111.  
  2112.             if ($produkpaket == 1) {
  2113.                 $query_produkpaket = $this->db->get_where('produk_paket_item', ['paketidproduk' => $idproduk]);
  2114.  
  2115.                 foreach ($query_produkpaket->result_array() as $paket) :
  2116.                     $paketkodebarcode = $paket['paketkodebarcode'];
  2117.                     $paketjml = $paket['paketjml'];
  2118.                     // Kurangi stok tersedia
  2119.                     $query_dataproduk = $this->db->get_where('produk', ['kodebarcode' => $paketkodebarcode]);
  2120.                     $row_dataproduk = $query_dataproduk->row_array();
  2121.                     $stok_dataproduk = $row_dataproduk['stok_tersedia'];
  2122.  
  2123.                     $this->db->where('kodebarcode', $paketkodebarcode);
  2124.                     $this->db->update('produk', [
  2125.                         'stok_tersedia' => $stok_dataproduk - $paketjml
  2126.                     ]);
  2127.                 // end kurang stok tersedia
  2128.                 endforeach;
  2129.  
  2130.                 // Update Tabel Penjualan
  2131.                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  2132.                 $total_detailpenjualan = 0;
  2133.                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  2134.                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  2135.                 endforeach;
  2136.  
  2137.                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  2138.                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  2139.                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  2140.                 $jualfaktur = $ambildata_penjualan['jualfaktur'];
  2141.                 $kodemember = $ambildata_penjualan['jualmemberkode'];
  2142.                 $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  2143.  
  2144.  
  2145.                 // Update diskon member jika transaksi adalah member
  2146.                 // if (strlen($kodemember) > 0) {
  2147.                 //     $this->updatediskon->updatediskonmember($kodemember, $jualfaktur, $total_detailpenjualan);
  2148.                 // }
  2149.                 // End
  2150.  
  2151.                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  2152.  
  2153.                 $ambilratusan = substr($hitung_totalbersih, -2);
  2154.                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  2155.                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  2156.                 } else {
  2157.                     $hasilpembulatan = $hitung_totalbersih;
  2158.                 }
  2159.  
  2160.                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  2161.  
  2162.                 $this->db->where('jualfaktur', $faktur);
  2163.                 $this->db->update('penjualan', [
  2164.                     'jualtotalkotor' => $total_detailpenjualan,
  2165.                     'jualtotalbersih' => $hitung_totalbersih,
  2166.                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  2167.                     'jualpembulatan' => $hasilpembulatan,
  2168.                     'jualsisapembulatan' => $sisapembulatan
  2169.                 ]);
  2170.                 // End
  2171.  
  2172.                 // Update Diskon Member
  2173.                 if (strlen($kodemember) > 0) {
  2174.                     $ambil_datamember = $this->db->get_where('member', ['memberkode' => $kodemember])->row_array();
  2175.                     $membertotaldiskon = $ambil_datamember['membertotaldiskon'];
  2176.                     $ambil_datamembersettingdiskon = $this->db->get('member_setting_diskon')->row_array();
  2177.                     $diskon_setting = $ambil_datamembersettingdiskon['diskon'];
  2178.  
  2179.                     $ambil_datapenjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  2180.                     $hitung_diskonlama = $ambil_datapenjualan['jualtotalbersih'] * ($diskon_setting / 100);
  2181.  
  2182.                     $hitung_tabungandiskonmember = $totalbersih * ($diskon_setting / 100);
  2183.  
  2184.                     $this->db->where('memberkode', $kodemember);
  2185.                     $this->db->update('member', [
  2186.                         'membertotaldiskon' => ($membertotaldiskon - $hitung_diskonlama) + $hitung_tabungandiskonmember
  2187.                     ]);
  2188.                 }
  2189.                 // End Update Diskon Member
  2190.  
  2191.                 $msg = [
  2192.                     'sukses' => 'Berhasil diupdate'
  2193.                 ];
  2194.             } else {
  2195.                 // Update Tabel Penjualan
  2196.                 $ambildata_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $faktur]);
  2197.                 $total_detailpenjualan = 0;
  2198.                 foreach ($ambildata_detailpenjualan->result_array() as $detail) :
  2199.                     $total_detailpenjualan = $total_detailpenjualan + $detail['detjualsubtotal'];
  2200.                 endforeach;
  2201.  
  2202.                 $ambildata_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $faktur])->row_array();
  2203.                 $jualdispersen = $ambildata_penjualan['jualdispersen'];
  2204.                 $jualdisuang = $ambildata_penjualan['jualdisuang'];
  2205.                 $jualfaktur = $ambildata_penjualan['jualfaktur'];
  2206.                 $kodemember = $ambildata_penjualan['jualmemberkode'];
  2207.                 $totalbersih = $ambildata_penjualan['jualtotalbersih'];
  2208.  
  2209.                 // Update diskon member jika transaksi adalah member
  2210.                 if (strlen($kodemember) > 0) {
  2211.                     $this->updatediskon->updatediskonmember($kodemember, $jualfaktur, $total_detailpenjualan);
  2212.                 }
  2213.                 // End
  2214.  
  2215.                 $hitung_totalbersih = $total_detailpenjualan - ($total_detailpenjualan * $jualdispersen / 100) - $jualdisuang;
  2216.  
  2217.                 $ambilratusan = substr($hitung_totalbersih, -2);
  2218.                 if ($ambilratusan >= 01 && $ambilratusan <= 99) {
  2219.                     $hasilpembulatan = $hitung_totalbersih + (100 - $ambilratusan);
  2220.                 } else {
  2221.                     $hasilpembulatan = $hitung_totalbersih;
  2222.                 }
  2223.  
  2224.                 $sisapembulatan = $hasilpembulatan - $hitung_totalbersih;
  2225.  
  2226.                 $this->db->where('jualfaktur', $faktur);
  2227.                 $this->db->update('penjualan', [
  2228.                     'jualtotalkotor' => $total_detailpenjualan,
  2229.                     'jualtotalbersih' => $hitung_totalbersih,
  2230.                     'jualdiskon' => ($total_detailpenjualan * $jualdispersen / 100) + $jualdisuang,
  2231.                     'jualpembulatan' => $hasilpembulatan,
  2232.                     'jualsisapembulatan' => $sisapembulatan
  2233.                 ]);
  2234.                 // End
  2235.                 $msg = [
  2236.                     'sukses' => 'Berhasil diupdate'
  2237.                 ];
  2238.             }
  2239.             // }
  2240.  
  2241.             echo json_encode($msg);
  2242.         }
  2243.     }
  2244.  
  2245.     function holdingtransaksi()
  2246.     {
  2247.         if ($this->input->is_ajax_request() == true) {
  2248.             $faktur = $this->input->post('faktur', true);
  2249.             $kodemember = $this->input->post('kodemember', true);
  2250.             $napel = $this->input->post('napel', true);
  2251.             $total_subtotal = $this->input->post('total_subtotal', true);
  2252.             $username = $this->session->userdata('username');
  2253.  
  2254.             // Update ke status bayar H
  2255.             $this->db->where('jualfaktur', $faktur);
  2256.             $this->db->update('penjualan', [
  2257.                 'jualstatusbayar' => 'H',
  2258.             ]);
  2259.  
  2260.             $msg = [
  2261.                 'sukses' => "Transaksi <strong>$faktur</strong> berhasil ditahan"
  2262.             ];
  2263.             echo json_encode($msg);
  2264.         }
  2265.     }
  2266.  
  2267.     // Piutang
  2268.     public function all_data_piutang()
  2269.     {
  2270.         $view = [
  2271.             'menu' => $this->load->view('template/menu', '', TRUE),
  2272.             'judul' => '<i class="fa fa-file-invoice"></i> Semua Data Piutang',
  2273.             'isi' => $this->load->view('admin/penjualan/piutang/index', '', true)
  2274.  
  2275.         ];
  2276.         $this->parser->parse('template/main', $view);
  2277.     }
  2278.  
  2279.     function ambildata_piutang()
  2280.     {
  2281.         if ($this->input->is_ajax_request()) {
  2282.             $this->load->model('admin/penjualan/Modeldatapiutang', 'datapiutang');
  2283.             $list = $this->datapiutang->get_datatables();
  2284.             $data = array();
  2285.             $no = $_POST['start'];
  2286.             foreach ($list as $field) {
  2287.                 $no++;
  2288.                 $row = array();
  2289.  
  2290.                 $aksi = "<div class=\"btn-group\">
  2291.                    <button type=\"button\" class=\"btn btn-primary btn-sm dropdown-toggle\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">
  2292.                      Aksi
  2293.                    </button>
  2294.                        <div class=\"dropdown-menu\">
  2295.                            <a class=\"dropdown-item\" href=\"#\" onclick=\"bayarpiutang('" . sha1($field->jualfaktur) . "')\">Bayar Piutang</a>
  2296.                         </div>            
  2297.                    </div>";
  2298.  
  2299.                 $row[] = $no;
  2300.                 $row[] = $field->jualfaktur;
  2301.                 $row[] = date('d-m-Y', strtotime($field->jualtgl));
  2302.                 $row[] = date('d-m-Y', strtotime($field->jualtgljatuhtempo));
  2303.                 $row[] = ($field->jualmemberkode == '') ? '-' : $field->jualmemberkode . '/' . $field->membernama;
  2304.                 if ($field->jualstatuslunas == 1) {
  2305.                     $statuslunas = '<span class="badge badge-success">Sudah Lunas, Tgl : ' . $field->jualtglbayarkredit . '</span>';
  2306.                 } else {
  2307.                     $statuslunas = '<span class="badge badge-danger">Belum Lunas</span>';
  2308.                 }
  2309.                 $row[] = $statuslunas;
  2310.                 $row[] = $field->jualuserinput;
  2311.                 // Menampilkan item dari tabel detail penjualan
  2312.                 $query_penjualandetail = $this->db->get_where('penjualan_detail', ['detjualfaktur' => $field->jualfaktur])->result();
  2313.  
  2314.                 $row[] = count($query_penjualandetail);
  2315.  
  2316.                 $row[] = number_format($field->jualtotalbersih, 2, ".", ",");
  2317.                 $row[] = $aksi;
  2318.                 $data[] = $row;
  2319.             }
  2320.  
  2321.             $output = array(
  2322.                 "draw" => $_POST['draw'],
  2323.                 "recordsTotal" => $this->datapiutang->count_all(),
  2324.                 "recordsFiltered" => $this->datapiutang->count_filtered(),
  2325.                 "data" => $data,
  2326.             );
  2327.             //output dalam format JSON
  2328.             echo json_encode($output);
  2329.         }
  2330.     }
  2331.  
  2332.     public function bayar_piutang($faktur)
  2333.     {
  2334.         $cekfakturpenjualan = $this->db->get_where('penjualan', ['sha1(jualfaktur)' => $faktur]);
  2335.  
  2336.         if ($cekfakturpenjualan->num_rows() > 0) {
  2337.             $arraydata = $cekfakturpenjualan->row_array();
  2338.  
  2339.             // ambil data member
  2340.             $datamember = $this->db->get_where('member', ['memberkode' => $arraydata['jualmemberkode']]);
  2341.             if ($datamember->num_rows() > 0) {
  2342.                 $row_member = $datamember->row_array();
  2343.                 $member = "$row_member[memberkode] / $row_member[membernama]";
  2344.             } else {
  2345.                 $member = "-/-";
  2346.             }
  2347.  
  2348.             $data = [
  2349.                 'row' => $arraydata,
  2350.                 'member' => $member
  2351.             ];
  2352.             $view = [
  2353.                 'menu' => $this->load->view('template/menu', '', TRUE),
  2354.                 'judul' => '<i class="fa fa-file-invoice"></i> Pembayaran Piutang Faktur : ' . $arraydata['jualfaktur'],
  2355.                 'isi' => $this->load->view('admin/penjualan/piutang/formbayarpiutang', $data, true)
  2356.  
  2357.             ];
  2358.             $this->parser->parse('template/main', $view);
  2359.         } else {
  2360.             redirect('admin/penjualan/all-data-piutang');
  2361.         }
  2362.     }
  2363.  
  2364.     function simpanbayarpiutang()
  2365.     {
  2366.         if ($this->input->is_ajax_request()) {
  2367.             $jualfaktur = $this->input->post('jualfaktur', true);
  2368.             $tglbayar = $this->input->post('tglbayar', true);
  2369.             $jmlbayar = str_replace(",", "", $this->input->post('jmlbayar', true));
  2370.             $ket = $this->input->post('ket', true);
  2371.             $totalbersih = $this->input->post('totalbersih', true);
  2372.  
  2373.             $this->form_validation->set_rules('tglbayar', 'Tgl.Pembayaran', 'trim|required', [
  2374.                 'required' => '%s tidak boleh kosong'
  2375.             ]);
  2376.             $this->form_validation->set_rules('jmlbayar', 'Jumlah Pembayaran', 'trim|required', [
  2377.                 'required' => '%s tidak boleh kosong'
  2378.             ]);
  2379.  
  2380.  
  2381.             if ($this->form_validation->run() == TRUE) {
  2382.                 if ($totalbersih != $jmlbayar) {
  2383.                     $msg = [
  2384.                         'error' => [
  2385.                             'jmlbayar' => "Jumlah Pembayaran harus sama dengan total bersih",
  2386.                         ]
  2387.                     ];
  2388.                 } else {
  2389.                     // Hapus neraca piutang dagang
  2390.                     $ambil_datapenjualan = $this->db->get_where('penjualan', ['jualfaktur' => $jualfaktur]);
  2391.                     $row = $ambil_datapenjualan->row_array();
  2392.                     if ($row['jualstatuslunas'] == 0) {
  2393.                         $this->db->delete('neraca_transaksi', [
  2394.                             'transno' => $jualfaktur, 'transnoakun' => '1-130', 'transjenis' => 'K'
  2395.                         ]);
  2396.                     }
  2397.                     // End
  2398.  
  2399.                     // Insert ke neraca Transaksi kas kecil.
  2400.                     $cek_neraca_kas_kecil = $this->db->get_where('neraca_transaksi', [
  2401.                         'transno' => $jualfaktur,
  2402.                         'transnoakun' => '1-110',
  2403.                         'transjenis' => 'K'
  2404.                     ]);
  2405.                     if ($cek_neraca_kas_kecil->num_rows() > 0) {
  2406.                         $update_neraca_kaskecil = [
  2407.                             'transjml' => $jmlbayar,
  2408.                             'transtgl' => $tglbayar,
  2409.                         ];
  2410.                         $this->db->where('transno', $jualfaktur);
  2411.                         $this->db->where('transnoakun', '1-110');
  2412.                         $this->db->update('neraca_transaksi', $update_neraca_kaskecil);
  2413.                     } else {
  2414.                         $this->db->insert('neraca_transaksi', [
  2415.                             'transno' => $jualfaktur,
  2416.                             'transtgl' => $tglbayar,
  2417.                             'transnoakun' => '1-110',
  2418.                             'transjenis' => 'K',
  2419.                             'transjml' => $jmlbayar,
  2420.                             'transket' => 'Pembayaran Piutang'
  2421.                         ]);
  2422.                     }
  2423.                     // end
  2424.  
  2425.                     $updatedata = [
  2426.                         'jualstatuslunas' => 1,
  2427.                         'jualtglbayarkredit' => $tglbayar, 'jualjmlbayarkredit' => $jmlbayar,
  2428.                         'jualketkredit' => $ket
  2429.                     ];
  2430.  
  2431.                     $this->db->where('jualfaktur', $jualfaktur);
  2432.                     $this->db->update('penjualan', $updatedata);
  2433.  
  2434.  
  2435.                     $msg = [
  2436.                         'sukses' => 'Pembayaran berhasil dilakukan',
  2437.                         'cetakfaktur' => site_url('admin/penjualan/cetakfaktur/') . $jualfaktur
  2438.                     ];
  2439.                 }
  2440.             } else {
  2441.                 $msg = [
  2442.                     'error' => [
  2443.                         'jmlbayar' => form_error('jmlbayar'),
  2444.                         'tglbayar' => form_error('tglbayar')
  2445.                     ]
  2446.                 ];
  2447.             }
  2448.  
  2449.             echo json_encode($msg);
  2450.         }
  2451.     }
  2452.     // End Piutang
  2453.  
  2454.  
  2455.     // Return Penjualan
  2456.     public function return_input()
  2457.     {
  2458.         $view = [
  2459.             'menu' => $this->load->view('template/menu', '', TRUE),
  2460.             'judul' => '<i class="fa fa-exchange-alt"></i> Input Return Penjualan',
  2461.             'isi' => $this->load->view('admin/penjualan/return/input', '', true)
  2462.  
  2463.         ];
  2464.         $this->parser->parse('template/main', $view);
  2465.     }
  2466.  
  2467.     function return_tampildatapenjualan()
  2468.     {
  2469.         $msg = [
  2470.             'data' => $this->load->view('admin/penjualan/return/semuadatapenjualan', '', true)
  2471.         ];
  2472.         echo json_encode($msg);
  2473.     }
  2474.  
  2475.     function return_ambilsemuadata()
  2476.     {
  2477.         if ($this->input->is_ajax_request() == true) {
  2478.             $this->load->model('admin/penjualan/Modeldata', 'penjualan');
  2479.             $list = $this->penjualan->get_datatables();
  2480.             $data = array();
  2481.             $no = $_POST['start'];
  2482.             foreach ($list as $field) {
  2483.                 $no++;
  2484.                 $row = array();
  2485.  
  2486.                 $tombolpilih = "<button type=\"button\" class=\"btn btn-sm btn-info\" onclick=\"pilih('" . $field->jualfaktur . "')\">
  2487.                    <i class=\"fa fa-hand-point-up\"></i>
  2488.                </button>";
  2489.                 $row[] = $no;
  2490.                 $row[] = $field->jualfaktur;
  2491.                 $row[] = date('d-m-Y', strtotime($field->jualtgl));
  2492.                 $row[] = ($field->jualnapel == '') ? '-' : $field->jualnapel;
  2493.                 if ($field->jualstatusbayar == 'T') {
  2494.                     $row[] = '<span class="badge badge-success">Tunai</span>';
  2495.                 } else if ($field->jualstatusbayar == 'K') {
  2496.                     $sttbayar = '<span class="badge badge-warning">Kredit</span>';
  2497.                     if ($field->jualstatuslunas == 1) {
  2498.                         $row[] = $sttbayar . '&nbsp;<span class="badge badge-success">Sudah Lunas Tgl: ' . date('d-m-Y', strtotime($field->jualtglbayarkredit)) . '</;span>';
  2499.                     } else {
  2500.                         $row[] = $sttbayar;
  2501.                     }
  2502.                 } else {
  2503.                     $row[] = '<span class="badge badge-info">diTahan</span>';
  2504.                 }
  2505.                 $row[] = $field->jualuserinput;
  2506.  
  2507.                 $row[] = number_format($field->jualtotalbersih, 2, ".", ",");
  2508.                 $row[] = $tombolpilih;
  2509.                 $data[] = $row;
  2510.             }
  2511.  
  2512.             $output = array(
  2513.                 "draw" => $_POST['draw'],
  2514.                 "recordsTotal" => $this->penjualan->count_all(),
  2515.                 "recordsFiltered" => $this->penjualan->count_filtered(),
  2516.                 "data" => $data,
  2517.             );
  2518.             //output dalam format JSON
  2519.             echo json_encode($output);
  2520.         }
  2521.     }
  2522.  
  2523.     function returnambildata()
  2524.     {
  2525.         if (isset($_GET['term'])) {
  2526.             $result = $this->jual->caridata($_GET['term']);
  2527.             if (count($result) > 0) {
  2528.                 foreach ($result as $row) :
  2529.                     // $arr_result[] = $row->nofaktur . "-Tanggal : $row->tglbeli - $row->nama";
  2530.                     $arr_result[] = array(
  2531.                         'label' => "Faktur : $row->jualfaktur, Tgl.Faktur : " . date('d-m-Y', strtotime($row->jualtgl)) . ", Member : $row->membernama, Pelanggan : $row->jualnapel",
  2532.                         'faktur' => $row->jualfaktur,
  2533.                         'tgl' => date('Y-m-d', strtotime($row->jualtgl)),
  2534.                         'member' => $row->membernama,
  2535.                         'pelanggan' => $row->jualnapel
  2536.                     );
  2537.                 endforeach;
  2538.                 echo json_encode($arr_result);
  2539.             }
  2540.         }
  2541.     }
  2542.  
  2543.     function return_ambilitempenjualan()
  2544.     {
  2545.         if ($this->input->is_ajax_request()) {
  2546.             $faktur = $this->input->post('faktur', true);
  2547.  
  2548.             $query_detailpenjualan = $this->jual->ambildetailpenjualan($faktur);
  2549.             $ambil_penjualan = $this->db->query("SELECT DATE_FORMAT(jualtgl,'%Y-%m-%d') AS jualtgl,jualmemberkode,membernama,jualnapel FROM penjualan LEFT JOIN member ON memberkode = jualmemberkode WHERE jualfaktur='$faktur'")->row_array();
  2550.  
  2551.             $data = [
  2552.                 'datadetail' => $query_detailpenjualan,
  2553.             ];
  2554.  
  2555.             $msg = [
  2556.                 'data' => $this->load->view('admin/penjualan/return/datadetail', $data, true),
  2557.                 'tgl' => $ambil_penjualan['jualtgl'],
  2558.                 'member' => $ambil_penjualan['jualmemberkode'] . '-' . $ambil_penjualan['membernama'],
  2559.                 'napel' => $ambil_penjualan['jualnapel'],
  2560.             ];
  2561.             echo json_encode($msg);
  2562.         }
  2563.     }
  2564.  
  2565.     function buatnomor_return()
  2566.     {
  2567.         $tglhariini = date('Y-m-d');
  2568.         $query = $this->db->query("SELECT MAX(returnid) AS idreturn FROM penjualan_return WHERE DATE_FORMAT(returntgl,'%Y-%m-%d') = '$tglhariini'");
  2569.         $hasil = $query->row_array();
  2570.         $data  = $hasil['idreturn'];
  2571.  
  2572.  
  2573.         $lastNoUrut = substr($data, -5);
  2574.  
  2575.         // nomor urut ditambah 1
  2576.         $nextNoUrut = $lastNoUrut + 1;
  2577.  
  2578.         // membuat format nomor transaksi berikutnya
  2579.         $nextNoTransaksi = 'RJ-' . date('dmy', strtotime($tglhariini)) . sprintf('%05s', $nextNoUrut);
  2580.         return $nextNoTransaksi;
  2581.     }
  2582.  
  2583.     function buatnomor_return_lagi()
  2584.     {
  2585.         $tglhariini = $this->input->post('tglreturn', true);
  2586.         $query = $this->db->query("SELECT MAX(returnid) AS idreturn FROM penjualan_return WHERE DATE_FORMAT(returntgl,'%Y-%m-%d') = '$tglhariini'");
  2587.         $hasil = $query->row_array();
  2588.         $data  = $hasil['idreturn'];
  2589.  
  2590.  
  2591.         $lastNoUrut = substr($data, -5);
  2592.  
  2593.         // nomor urut ditambah 1
  2594.         $nextNoUrut = $lastNoUrut + 1;
  2595.  
  2596.         // membuat format nomor transaksi berikutnya
  2597.         $nextNoTransaksi = 'RJ-' . date('dmy', strtotime($tglhariini)) . sprintf('%05s', $nextNoUrut);
  2598.         $msg = [
  2599.             'idreturn' => $nextNoTransaksi
  2600.         ];
  2601.         echo json_encode($msg);
  2602.     }
  2603.  
  2604.     function return_produk()
  2605.     {
  2606.         if ($this->input->is_ajax_request()) {
  2607.             $id = $this->input->post('id', true);
  2608.             $faktur = $this->input->post('faktur', true);
  2609.  
  2610.             $query_detail = $this->jual->ambildetailpenjualan_berdasarkanid($id);
  2611.  
  2612.             $data = [
  2613.                 'idreturn' => $this->buatnomor_return(),
  2614.                 'datadetail' => $query_detail
  2615.             ];
  2616.  
  2617.             $msg = [
  2618.                 'data' => $this->load->view('admin/penjualan/return/modalreturnitem', $data, true)
  2619.             ];
  2620.             echo json_encode($msg);
  2621.         }
  2622.     }
  2623.  
  2624.     function tampildata_statusreturn()
  2625.     {
  2626.         if ($this->input->is_ajax_request()) {
  2627.             // Menampilkan Data Satuan
  2628.             $datastatus = $this->db->get('status_return')->result();
  2629.  
  2630.             $datax = "<option value=\"\">-Silahkan Pilih-</option>";
  2631.             foreach ($datastatus as $x) {
  2632.                 $datax .= "<option value='" . $x->id . "'>" . $x->nmstt . "</option>";
  2633.             }
  2634.  
  2635.  
  2636.             $msg = [
  2637.                 'data' => $datax,
  2638.             ];
  2639.             echo json_encode($msg);
  2640.         }
  2641.     }
  2642.  
  2643.     function simpandatareturn()
  2644.     {
  2645.         if ($this->input->is_ajax_request()) {
  2646.             $jualfaktur = $this->input->post('jualfaktur', true);
  2647.             $id = $this->input->post('id', true);
  2648.             $kodebarcode = $this->input->post('kodebarcode', true);
  2649.  
  2650.             $idreturn  = $this->input->post('idreturn', true);
  2651.             $qty  = $this->input->post('qty', true);
  2652.             $jmlreturn  = str_replace(",", "", $this->input->post('jmlreturn', true));
  2653.             $stt = $this->input->post('stt', true);
  2654.             $ket = $this->input->post('ket', true);
  2655.             $tglreturn = $this->input->post('tglreturn', true);
  2656.  
  2657.             $this->form_validation->set_rules('jmlreturn', 'Inputan Jumlah Return', 'trim|required', [
  2658.                 'required' => '%s tidak boleh kosong'
  2659.             ]);
  2660.             $this->form_validation->set_rules('stt', 'Status Return', 'trim|required', [
  2661.                 'required' => '%s wajib dipilih'
  2662.             ]);
  2663.             $this->form_validation->set_rules('tglreturn', 'Tanggal Return', 'trim|required', [
  2664.                 'required' => '%s tidak boleh kosong'
  2665.             ]);
  2666.  
  2667.  
  2668.             if ($this->form_validation->run() == TRUE) {
  2669.                 if ($jmlreturn > $qty) {
  2670.                     $msg = [
  2671.                         'error' => [
  2672.                             'jmlreturn' => 'Jumlah return tidak boleh melebihi',
  2673.                         ]
  2674.                     ];
  2675.                 } else {
  2676.                     $query_detailpenjualan = $this->db->get_where('penjualan_detail', ['detjualid' => $id]);
  2677.                     $rr = $query_detailpenjualan->row_array();
  2678.                     // Simpan data
  2679.  
  2680.                     $simpan_datareturn = [
  2681.                         'returnid' => $idreturn,
  2682.                         'returntgl' => $tglreturn,
  2683.                         'returndetjualid' => $id,
  2684.                         'returnkodebarcode' => $kodebarcode,
  2685.                         'returndetjualsatid' => $rr['detjualsatid'],
  2686.                         'returndetjualsatqty' => $rr['detjualsatqty'],
  2687.                         'returndetjualharga' => $rr['detjualharga'],
  2688.                         'returnjml' => $jmlreturn,
  2689.                         'returnstatusid' => $stt,
  2690.                         'returnket' => $ket
  2691.                     ];
  2692.  
  2693.                     $this->db->insert('penjualan_return', $simpan_datareturn);
  2694.  
  2695.                     // Update total dari tabel penjualan
  2696.                     $query_total_subtotal = $this->db->query("SELECT SUM(detjualsubtotal) AS total_subtotal FROM penjualan_detail WHERE detjualfaktur = '$jualfaktur'");
  2697.                     $row_total_subtotal = $query_total_subtotal->row_array();
  2698.                     $total_subtotal = $row_total_subtotal['total_subtotal'];
  2699.  
  2700.                     $query_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $jualfaktur]);
  2701.                     $row_penjualan = $query_penjualan->row_array();
  2702.                     $diskonpersen = $row_penjualan['jualdispersen'];
  2703.                     $diskonuang =  $row_penjualan['jualdisuang'];
  2704.  
  2705.                     $hitungtotalbersih = $total_subtotal - ($total_subtotal * $diskonpersen / 100) - $diskonuang;
  2706.  
  2707.                     $updatepenjualan = [
  2708.                         'jualtotalkotor' => $total_subtotal,
  2709.                         'jualtotalbersih' => $hitungtotalbersih
  2710.                     ];
  2711.                     $this->db->where('jualfaktur', $jualfaktur);
  2712.                     $this->db->update('penjualan', $updatepenjualan);
  2713.  
  2714.                     // Neraca Akun Persediaan Barang Dagang
  2715.                     $query_ambildatareturn = $this->db->query("SELECT * FROM penjualan_return JOIN penjualan_detail ON penjualan_detail.`detjualid`=penjualan_return.`returndetjualid` WHERE returnid='$idreturn'");
  2716.                     $r_ambildatareturn = $query_ambildatareturn->row_array();
  2717.  
  2718.                     $this->db->insert('neraca_transaksi', [
  2719.                         'transno' => $idreturn,
  2720.                         'transtgl' => $tglreturn,
  2721.                         'transnoakun' => '1-160',
  2722.                         'transjenis' => 'K',
  2723.                         'transjml' => $r_ambildatareturn['returnjml'] * $r_ambildatareturn['detjualhargabeli']
  2724.                     ]);
  2725.                     // End
  2726.  
  2727.                     // Neraca Penjualan
  2728.                     $this->neraca->simpan_neraca_penjualan($jualfaktur, $hitungtotalbersih);
  2729.                     // End Neraca Penjualan
  2730.  
  2731.  
  2732.                     // Neraca Kas Kecil
  2733.                     $this->neraca->simpan_debit_kaskecil_return_penjualan_dan_hpp($idreturn, $tglreturn);
  2734.                     // End Neraca Kas Kecil
  2735.  
  2736.                     $msg = [
  2737.                         'sukses' => 'Return produk berhasil disimpan'
  2738.                     ];
  2739.                 }
  2740.             } else {
  2741.                 $msg = [
  2742.                     'error' => [
  2743.                         'jmlreturn' => form_error('jmlreturn'),
  2744.                         'stt' => form_error('stt'),
  2745.                         'tglreturn' => form_error('tglreturn')
  2746.                     ]
  2747.                 ];
  2748.             }
  2749.             echo json_encode($msg);
  2750.         }
  2751.     }
  2752.  
  2753.     public function return_data()
  2754.     {
  2755.         $view = [
  2756.             'menu' => $this->load->view('template/menu', '', TRUE),
  2757.             'judul' => '<i class="fa fa-tasks"></i> Data Return Item Produk Penjualan',
  2758.             'isi' => $this->load->view('admin/penjualan/return/data', '', true)
  2759.  
  2760.         ];
  2761.         $this->parser->parse('template/main', $view);
  2762.     }
  2763.  
  2764.     function return_ambildata()
  2765.     {
  2766.         if ($this->input->is_ajax_request()) {
  2767.             $this->load->model('admin/penjualan/Modeldatareturn', 'datareturn');
  2768.  
  2769.             $list = $this->datareturn->get_datatables();
  2770.             $data = array();
  2771.             $no = $_POST['start'];
  2772.             foreach ($list as $field) {
  2773.                 $no++;
  2774.                 $row = array();
  2775.  
  2776.                 $tombolhapus = "<button type=\"button\" class=\"btn btn-danger btn-sm waves-effect waves-light\" onclick=\"hapusreturn('" . $field->returnid . "','" . $field->detjualfaktur . "')\" title=\"Hapus Return ID\">
  2777.                    <i class=\"fa fa-trash-alt\"></i>
  2778.                </button>";
  2779.                 $row[] = $no;
  2780.                 $row[] = date('d-m-Y', strtotime($field->returntgl));
  2781.                 $row[] = $field->detjualfaktur;
  2782.                 $row[] = $field->membernama;
  2783.                 $row[] = $field->jualnapel;
  2784.                 $row[] = $field->returnkodebarcode . '/' . $field->namaproduk;
  2785.                 $row[] = $field->returnjml;
  2786.                 $row[] = $field->nmstt;
  2787.                 $row[] = $tombolhapus;
  2788.                 $data[] = $row;
  2789.             }
  2790.  
  2791.             $output = array(
  2792.                 "draw" => $_POST['draw'],
  2793.                 "recordsTotal" => $this->datareturn->count_all(),
  2794.                 "recordsFiltered" => $this->datareturn->count_filtered(),
  2795.                 "data" => $data,
  2796.             );
  2797.             //output dalam format JSON
  2798.             echo json_encode($output);
  2799.         }
  2800.     }
  2801.  
  2802.     function return_hapusitem()
  2803.     {
  2804.         if ($this->input->is_ajax_request()) {
  2805.             $id = $this->input->post('id', true);
  2806.             $jualfaktur = $this->input->post('faktur', true);
  2807.  
  2808.  
  2809.             // Hapus Neraca
  2810.             $this->db->delete('neraca_transaksi', [
  2811.                 'transno' => $id,
  2812.                 'transnoakun' => '1-160',
  2813.                 'transjenis' => 'K'
  2814.             ]);
  2815.  
  2816.  
  2817.             // Hapus Return
  2818.             $this->db->delete('penjualan_return', ['returnid' => $id]);
  2819.  
  2820.             // Update total dari tabel penjualan
  2821.             $query_total_subtotal = $this->db->query("SELECT SUM(detjualsubtotal) AS total_subtotal FROM penjualan_detail WHERE detjualfaktur = '$jualfaktur'");
  2822.             $row_total_subtotal = $query_total_subtotal->row_array();
  2823.             $total_subtotal = $row_total_subtotal['total_subtotal'];
  2824.  
  2825.             $query_penjualan = $this->db->get_where('penjualan', ['jualfaktur' => $jualfaktur]);
  2826.             $row_penjualan = $query_penjualan->row_array();
  2827.             $diskonpersen = $row_penjualan['jualdispersen'];
  2828.             $diskonuang =  $row_penjualan['jualdisuang'];
  2829.  
  2830.             $hitungtotalbersih = $total_subtotal - ($total_subtotal * $diskonpersen / 100) - $diskonuang;
  2831.  
  2832.             $updatepenjualan = [
  2833.                 'jualtotalkotor' => $total_subtotal,
  2834.                 'jualtotalbersih' => $hitungtotalbersih
  2835.             ];
  2836.             $this->db->where('jualfaktur', $jualfaktur);
  2837.             $this->db->update('penjualan', $updatepenjualan);
  2838.  
  2839.             // Neraca Penjualan
  2840.             $this->neraca->simpan_neraca_penjualan($jualfaktur, $hitungtotalbersih);
  2841.             // End Neraca Penjualan
  2842.  
  2843.             // Neraca Kas Kecil
  2844.             $cek_neraca_kaskecil = $this->db->get_where('neraca_transaksi', [
  2845.                 'transno' => $id,
  2846.                 'transnoakun' => '1-110',
  2847.                 'transjenis' => 'D',
  2848.             ]);
  2849.  
  2850.             if ($cek_neraca_kaskecil->num_rows() > 0) {
  2851.                 $this->db->delete('neraca_transaksi', [
  2852.                     'transno' => $id,
  2853.                     'transnoakun' => '1-110'
  2854.                 ]);
  2855.                 $this->db->delete('neraca_transaksi', [
  2856.                     'transno' => $id,
  2857.                     'transnoakun' => '5-100',
  2858.                     'transjenis' => 'D'
  2859.                 ]);
  2860.             }
  2861.             // End Neraca Kas Kecil
  2862.  
  2863.             $msg = [
  2864.                 'sukses' => 'Return item berhasil dihapus !'
  2865.             ];
  2866.  
  2867.             echo json_encode($msg);
  2868.         }
  2869.     }
  2870.  
  2871.     // End Return Penjualan
  2872. }
RAW Paste Data