Novinaldi

Penjualan.php

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