function addSales($sale = null) { if ($sale == null) { $sale = $this; } $sale_id = $this->db_handler->add_model($sale); if (is_array($this->sales_items) and count($this->sales_items) != 0) { foreach ($this->sales_items as $sales_item) { $sales_item->sale_id = $sale_id; $sales_item->company_id = $sale->company_id; $sales_item->addSaleItem(); $inv = new inventry(); $inv->company_id = $sale->company_id; $inv->item_id = $sales_item->item_id; $invs = $inv->getInventryForSpecificCompanyAndItem(); $inv = $invs[0]; $inv->in_stock_count = $inv->in_stock_count - $sales_item->quantity; $inv->updateInventry(); } } $description = "Added new Sale (" . $sale->to_string() . ")"; $customer = new customer(); $customer->id = $sale->customer_id; $customer->getCustomer(); $customer->total_purchace_amount = $customer->total_purchace_amount + $sale->amount; $customer->updateCustomer(); Log::i($this->tag, $description); return $sale_id; }
function get_form_html($form_id, $id) { ob_start(); ?> <div id="head_div" style="padding: 5px 0; background-color: #ECECEC; color: #21ACD7; border-radius: 5px;margin-left: auto; text-align: center; "> <?php $user = new user(); $user->id = $_SESSION['user_id']; $user->getUser(); $company = new company(); $company->id = $user->company_id; $company->getCompany(); echo "STOCK REPORT OF {$company->company_name} - {$company->company_code}"; ?> </div> <div style="margin-top: 10px; background-color:transparent;padding-bottom: 30px;"> <style> div#purchace_items td,div#purchace_items th{ border: 1px solid #21ACD7; } div#purchace_items tbody td{ padding: 5px 0 5px 5px; } div#purchace_items tbody td input,div#purchace_items tbody td select{ padding: 0; border: 0; margin: 0; height: 100%; width: 100%; background-color: transparent; } </style> <input type="text" id="search" placeholder="Enter Search Key here..." style="width: 100%; margin-left: 0px;" onkeyup="search()" /> <style> img#search{ position: relative; height: 20px; width: 20px; float: right; top: -29px; right: 10px; } </style> <img id="search" src="../ui/images/search.png" onclick="search()" /> <div id="purchace_items" style="width: 100%; padding: 10px 0; color: #21ACD7;"> <table id="items_table" style="border-collapse: collapse; width: 100%; background-color: #fff; border-radius: 10px; color: #21ACD7;"> <thead style="text-align: center;"> <tr status="not_selected"> <th> # </th> <th> ITEM </th> <th> STOCK COUNT </th> <th style=""> SELLING PRIZE </th> <th style=""> TAX </th> </tr> </thead> <tbody style="padding-left: 3px; text-align: center; "> <?php $inventry = new inventry(); $inventries = $inventry->getInventryForSpecificCompany($user->company_id); $i = 0; if ($inventries == NULL || sizeof($inventries) == 0) { echo '<tr><td colspan="8"> No Stock Found </td></tr>'; } else { foreach ($inventries as $inventry) { ?> <tr id="<?php echo $inventry->id; ?> " onclick="select_row(this)" status="not_selected"> <td style="text-align: center;"> <?php echo ++$i; ?> </td> <td id="item_name"><?php $item = new item(); $item->id = $inventry->item_id; $item->getItem(); echo $item->item_name . ' (' . $item->item_code . ')'; ?> </td> <td id="in_stock_count"><?php echo number_format($inventry->in_stock_count, 3, '.', ''); ?> </td> <td id="mrp"><?php echo number_format($inventry->selling_prize, 2, '.', ''); ?> </td> <td id="tax_category" tax_category_id="<?php echo $inventry->tax_category_id; ?> "><?php $tax = new tax_category(); $tax->id = $inventry->tax_category_id; $tax->getTaxCategory(); echo $tax->tax_category_name; ?> </td> </tr> <?php } } ?> </tbody> </table> </div> </div> <script type="text/javascript"> function select_row(row) { var j_row = $(row); if(j_row.attr('status') == 'selected'){ $('table#items_table tr').attr('status', 'not_selected'); $('table#items_table tr').css('background-color', '#FFF'); $('img#edit').css('display', 'none'); $('img#edit_fade').css('display', 'block'); $('img#delete').css('display', 'none'); $('img#delete_fade').css('display', 'block'); }else{ $('table#items_table tr').attr('status', 'not_selected'); $('table#items_table tr').css('background-color', '#FFF'); j_row.attr('status', 'selected'); j_row.css('background-color', '#C0EFFD'); $('img#edit').css('display', 'block'); $('img#edit_fade').css('display', 'none'); $('img#delete').css('display', 'block'); $('img#delete_fade').css('display', 'none'); } } function on_edit_clicked(){ var selected_row = $('tr[status="selected"]'); var item_name = selected_row.find('td#item_name').html(); var id = selected_row.attr('id'); var instock_count = selected_row.find('td#in_stock_count').html(); var mrp = selected_row.find('td#mrp').html(); var tax_category_id = selected_row.find('td#tax_category').attr('tax_category_id'); get_form(25, ///inventry edit form function (html, tools){ $('div#form-body').html(html); $('div#content-body-action-tools').html(tools); var form = $('div#form-body').find('form.action_form'); form.attr('operation', 'update'); form.attr('inventry_id', id); form.find('input#item_name').val(item_name); form.find('input#in_stock_count').val(instock_count); form.find('input#in_stock_count').prop('disabled', null); form.find('input#mrp').val(mrp); form.find('input#mrp').prop('disabled', null); form.find('select#tax_category').find('option#'+tax_category_id).prop('selected', true); form.find('select#tax_category').prop('disabled', null); form.find('input[type=submit]').val('UPDATE'); form.find('input[type=submit]').prop('disabled', null); form.find('input[type=reset]').prop('disabled', null); $('div#head_div').html('ID : INVENTRY-'+id); $('div#head_div').css('display', 'block'); }, function (message){ $('font#section_heading').empty(); $('div#form-body').empty(); alert(message); } ); } function on_delete_clicked(){ var selected_row = $('tr[status="selected"]'); var id = selected_row.attr('id'); if(confirm('Are you sure you want to delete INVENTRY-'+id+' ?' )){ var data = { form_id : 20, inventry_id : id } delete_form_data(data, function(message) { get_form(20, function(html, tools) { $('div#form-body').html(html); $('div#content-body-action-tools').html(tools); }, function(message) { $('font#section_heading').empty(); $('div#form-body').empty(); alert(message); }); alert(message); }, function(message) { alert(message); }); } } function on_print_clicked() { //var date = $('input#date_field').val(); var d = new Date(); var date = d.getDate()+"/"+(parseInt(d.getMonth())+parseInt(1))+"/"+d.getFullYear(); $('div#print_container_header') .html('<font style="color:#21ACD7; font-size:20px; ">STOCK REPORT OF '+date+'</font>'); var html = $('div#purchace_items').html(); $('div#print_container_body').html(html); print(); $('div#print_container_header').empty(); $('div#print_container_body').empty(); $('div#print_container_footer').empty(); } function search(){ var search_key = $('input#search').val(); if(search_key !== ''){ console.log("search key "+ search_key); searchTable(search_key); }else{ $('#items_table tr').show(); } } function searchTable(inputVal) { var table = $('#items_table'); table.find('tr').each(function(index, row) { var allCells = $(row).find('td'); if(allCells.length > 0) { var found = false; allCells.each(function(index, td) { var regExp = new RegExp(inputVal, 'i'); if(regExp.test($(td).text())) { found = true; return false; } }); if(found == true)$(row).show();else $(row).hide(); } }); } </script> <?php $form = ob_get_clean(); return $form; }
function get_form_html($form_id, $id) { ob_start(); ?> <style> .field_name{ width: 20%; } .field{ width: 50%; } .field input{ width: 100%; margin-left: 0px; } .field .parent{ padding: 0px 0px; } .field select{ width: 100%; } </style> <div id="head_div" style="padding: 5px 0; background-color: #ECECEC; color: #21ACD7; border-radius: 5px;margin-left: auto; text-align: center; "> ID : SALE - <input style="padding: 0 0 0 5px;" onchange="load_sale()" type="number" id="sale_id" /> </div> <div style="margin-top: 10px; background-color:transparent;padding-bottom: 30px;"> <form action="#" method="post" onsubmit="return false" class="action_form" operation="update" style="width:100%;"> <table style="width:100%;"> <tr> <td class="field_name"> <font>CUSTOMER</font> </td> <td class="field"> <div class="parent"> <input id="customer_id" onfocus="$(this).css('border', '0px')" list="customers" autocomplete="off" style="border: 0;" disabled/> </div> </td> </tr> <tr> <td class="field_name"> <font>DATE & TIME</font> </td> <td class="field"> <div class="parent"> <input id="date_and_time" disabled autocomplete="off" style="border: 0;"/> </div> </td> </tr> <tr> <td colspan="2"> <style> div#purchace_items td{ border: 1px solid #21ACD7; } div#purchace_items tbody td{ padding: 5px 0 5px 5px; } div#purchace_items tbody td input,div#purchace_items tbody td select{ padding: 0; border: 0; margin: 0; height: 100%; width: 100%; background-color: transparent; } </style> <div id="purchace_items" style="width: 100%; padding: 10px 0; color: #21ACD7;"> <table id="items_table" style="border-collapse: collapse; width: 100%; background-color: #fff; border-radius: 10px; color: #21ACD7;"> <thead style="text-align: center;"> <tr> <td> # </td> <td> ITEM </td> <td style="width: 10%;"> QUANTITY </td> <td style="width: 10%;"> RATE </td> <td style="width: 10%;"> DISCOUNT(%) </td> <td style="width: 10%;"> DISCOUNT </td> <td style="width: 10%;"> TOTAL </td> <td style="width: 8%;"> DELETE </td> </tr> </thead> <tbody style="padding-left: 3px;"> <datalist id="items"> <?php $user = new user(); $user->id = $_SESSION['user_id']; $user->getUser(); $inv = new inventry(); $invs = array(); $invs = $inv->getInventryForSpecificCompany($user->company_id); if ($invs != NULL and sizeof($invs) != 0) { foreach ($invs as $inv) { if ($inv->in_stock_count > 0) { $item = new item(); $item->id = $inv->item_id; $item->getItem(); $tax_category = new tax_category(); $tax_category->id = $inv->tax_category_id; $tax_category->getTaxCategory(); echo $tax_category->to_string(); echo '<option id="' . $item->id . '"' . ' stock_count="' . $inv->in_stock_count . '"' . ' selling_pize="' . $inv->selling_prize . '"' . ' tax="' . $tax_category->tax_percentage . '"' . ' discount_percent="' . $item->discount_percent . '"' . ' item_name="' . $item->item_name . '"' . ' value="' . $item->item_name . ' - ' . $item->item_code . '" >' . $item->item_name . ' - ' . $item->item_code . '</option>'; } } } ?> </datalist> <tr status="active" slno="1"> <td style="text-align: center;">1</td><td> <input type="text" onchange="update_item_details(this)" oninput="update_item_details(this)" onfocus="$(this).css('border', '0px')" autocomplete="off" list="items" id="item" required /> </td> <td> <input type="number" min="0" step="any" required onchange="calculate_total(this)" oninput="calculate_total(this)" id="quantity"/> </td> <td> <input type="text" value="0" min="0" required disabled onchange="calculate_total(this)" oninput="calculate_total(this)" id="rate"/> </td> <td> <input type="number" step="0.01" value="0" min="0" max="100" onchange="calculate_total(this)" oninput="calculate_total(this)" id="discount_percent"/> </td> <td> <input type="text" value="0" min="0" required disabled id="discount"/> </td> <td> <input type="text" min="0" required id="total" disabled/> </td> <td style="width: 20px; text-align: center; padding-right: 5px;"> <img id="delete_button" onclick="delete_this_row(this)" style="color: #f00; cursor: pointer; height: 20px; width: 20px; margin-right: auto; margin-left: auto;" src="../ui/images/cross_button.png"/> <img id="activate_button" onclick="enable_this_row(this)" style="color: #f00; cursor: pointer; height: 20px; width: 20px; margin-right: auto; margin-left: auto; display: none;" src="../ui/images/tick_button.png" /> </td> </tr> <tr status="active" slno="2"> <td style="text-align: center;">2</td><td> <input type="text" onchange="update_item_details(this)" oninput="update_item_details(this)" onfocus="$(this).css('border', '0px')" autocomplete="off" list="items" id="item" required /> </td> <td> <input type="number" min="0" step="any" required onchange="calculate_total(this)" onkeyup="calculate_total(this)" id="quantity"/> </td> <td> <input type="text" value="0" min="0" required disabled onchange="calculate_total(this)" onkeyup="calculate_total(this)" id="rate"/> </td> <td> <input type="number" step="0.01" value="0" min="0" max="100" onchange="calculate_total(this)" oninput="calculate_total(this)" id="discount_percent"/> </td> <td> <input type="text" value="0" min="0" required disabled id="discount"/> </td> <td> <input type="text" min="0" required id="total" disabled/> </td> <td style="width: 20px; text-align: center; padding-right: 5px;"> <img id="delete_button" onclick="delete_this_row(this)" style="color: #f00; cursor: pointer; height: 20px; width: 20px; margin-right: auto; margin-left: auto;" src="../ui/images/cross_button.png"/> <img id="activate_button" onclick="enable_this_row(this)" style="color: #f00; cursor: pointer; height: 20px; width: 20px; margin-right: auto; margin-left: auto; display: none;" src="../ui/images/tick_button.png" /> </td> </tr> </tbody> </table> </div> </td> </tr> <tr style="height: 5px;"></tr> <tr> <td></td> <td> <div style="background-color: #21ACD7; color: #fff; text-align: right; padding-right: 20px;"> <span style="margin-right: 20px;">TOTAL </span> <span id="total">0.00</span> </div> </td> </tr> <tr style="display: none;"> <td></td> <td> <div style="background-color: #21ACD7; color: #fff; text-align: right; padding-right: 20px;"> <span style="margin-right: 20px;">DISCOUNT </span> <span id="discount">0.00</span> </div> </td> </tr> <tr> <td></td> <td> <div style="background-color: #21ACD7; color: #fff; text-align: right; padding-right: 20px;"> <span style="margin-right: 20px;">PAID </span> <span id="total_paid">0.00</span> </div> </td> </tr> <tr> <td></td> <td> <div style="background-color: #21ACD7; color: #fff; text-align: right; padding-right: 20px;"> <span style="margin-right: 20px;">BALANCE</span> <span id="balance">0.00</span> </div> </td> </tr> <tr style="height: 5px;"></tr> <tr> <td></td> <td> <div style="padding: 0px 12px;"> <div style="width: 100%; margin-left: -12px; padding: 12px; background-color: #0d92bb; border-radius: 5px; float: left;"> <div style="width: 33.33%; float: right; "> <input style="width: 100%;" type="submit" value="UPDATE" /> </div> <div style="width: 33.33%; float: right; "> <input style="width: 100%;" type="reset" value="CANCEL" /> </div> <div style="width: 33.33%;"> <input style="width: 100%;" onclick="add_sale_item()" type="button" value="ADD ITEM" /> </div> </div> </div> </td> </tr> </table> </form> </div> <script type="text/javascript"> function update_item_details(item) { var item_input = $(item); var item_name = item_input.val(); var item_option_obj = $('datalist#items').find("option[value='" + item_name + "']"); if (item_option_obj.length == "0") { return; } else { var selling_prize = item_option_obj.attr('selling_pize'); var stock_count = item_option_obj.attr('stock_count'); var tax = item_option_obj.attr('tax'); var discount_percent = item_option_obj.attr('discount_percent'); if($.isNumeric(discount_percent)){ discount_percent = parseFloat(discount_percent).toFixed(2); }else{ discount_percent = 0; } var row = item_input.parent('td').parent('tr'); row.find('input#rate').val(selling_prize); row.find('input#rate').attr('tax', tax); row.find('input#discount_percent').val(discount_percent); row.find('input#quantity').prop('max', stock_count); calculate_total(row.find('input#rate').get(0)); } } function calculate_total(field) { var $parent = $(field).closest('tr'); var $quantity = parseFloat($parent.find('input#quantity').val()); var $rate = parseFloat($parent.find('input#rate').val()); var $total = $quantity * $rate; $total = $total.toFixed(2); if ($.isNumeric($total)) { var discount_percent = parseFloat($parent.find('input#discount_percent').val()); var discount = ($total * discount_percent) / 100; if($.isNumeric(discount)){ //$parent.find('input#total').attr('discount', discount); $parent.find('input#discount').val(discount); $total = $total - discount; }else{ //$parent.find('input#total').attr('discount', 0); $parent.find('input#discount').val(0); } $parent.find('input#total').val($total); var $tax_percentage = parseFloat($parent.find('input#rate').attr('tax')); var $tax = ($total * $tax_percentage) / (100 + $tax_percentage); //$tax = $tax.toFixed(2); if($.isNumeric($tax)){ $parent.find('input#total').attr('tax', $tax); }else{ $parent.find('input#total').attr('tax', 0); } } else { $parent.find('input#total').val(0); $parent.find('input#total').attr('tax', 0); $parent.find('input#total').attr('discount', 0); //$parent.find('input#discount').val(0); } calculate_purchace_total(); } function calculate_purchace_total() { var items_table = $('#items_table').find('tbody').children(); var total = 0; var total_tax = 0; var total_discount = 0; items_table.each(function() { var item_total_input = $(this).find('input#total'); var row_status = $(this).attr('status'); var item_total = item_total_input.val(); var item_tax = item_total_input.attr('tax'); var item_discount = $(this).find('input#discount').val(); if ($.isNumeric(item_total) && row_status == 'active') { total = parseFloat(total) + parseFloat(item_total); if($.isNumeric(item_tax)){ total_tax = parseFloat(total_tax) + parseFloat(item_tax); } if($.isNumeric(item_discount)){ total_discount = parseFloat(total_discount) + parseFloat(item_discount); } } }); total = total.toFixed(2); total_tax = total_tax.toFixed(2); $('span#total').html(total); $('span#total').attr('tax', total_tax); var paid = $('span#total_paid').html(); paid = parseFloat(paid); var balance = total - paid; balance = balance.toFixed(2); $('span#balance').html(balance); total_discount = total_discount.toFixed(2); $('span#total').attr('discount', total_discount); $('span#discount').val(total_discount); } function delete_this_row(delete_btn) { var row = $(delete_btn).closest('tr'); row.attr('status', 'deativated'); row.css('background-color', '#c0effd'); row.find('input').prop('required', null); row.find('input').css('border', "0px"); $(delete_btn).css('display', 'none'); $(delete_btn).siblings().first().css('display', 'block'); $(delete_btn).parent('td').css('text-align', 'centre'); calculate_purchace_total(); } function enable_this_row(enable_btn) { var row = $(enable_btn).closest('tr'); row.attr('status', 'active'); row.css('background-color', '#fff'); row.find('input').prop('required', 'required'); $(enable_btn).siblings().first().css('display', 'block'); $(enable_btn).css('display', 'none'); $(enable_btn).parent('td').css('text-align', 'centre'); calculate_purchace_total(); } function add_sale_item() { var row = '<tr status="active" slno="" previous="false"><td style="text-align: center;"></td><td>' + '<input type="text" onchange="update_item_details(this)" oninput="update_item_details(this)" onfocus="$(this).css(\'border\', \'0px\')" autocomplete="off" list="items" id="item" required />' + '</td><td><input type="number" min="0" step="any" required onchange="calculate_total(this)" onkeyup="calculate_total(this)" id="quantity"/>' + '</td><td><input type="text" value="0" min="0" required disabled onchange="calculate_total(this)" onkeyup="calculate_total(this)" id="rate"/>' + '</td><td><input type="number" step="0.01" value="0" min="0" max="100" onchange="calculate_total(this)" oninput="calculate_total(this)" id="discount_percent"/>' + '</td><td><input type="text" value="0" min="0" required disabled id="discount"/>' + '</td><td><input type="text" min="0" required id="total" disabled/></td><td style="width: 20px; text-align: center; padding-right: 5px;">' + '<img id="delete_button" onclick="delete_this_row(this)" style="color: #f00; cursor: pointer; height: 20px; width: 20px; margin-right: auto; margin-left: auto;" src="../ui/images/cross_button.png"/>' + '<img id="activate_button" onclick="enable_this_row(this)" style="color: #f00; cursor: pointer; height: 20px; width: 20px; margin-right: auto; margin-left: auto; display: none;" src="../ui/images/tick_button.png" />' + '</td></tr>'; var lastcount = $('table#items_table tbody tr:last-child').attr('slno'); if(!($.isNumeric(lastcount))){ lastcount = 0; } $('table#items_table tbody').append(row); lastcount = parseInt(lastcount) + 1; $('table#items_table tbody tr:last-child').attr('slno', lastcount); $('table#items_table tbody tr:last-child td:first-child').html(lastcount); } function load_sale(){ var sale_id = $('input#sale_id').val(); var data = { form_id: 2, sale_id: sale_id } get_form_data(data, function(message, sale) { //alert(message); var form = $('form.action_form'); form.find('input#customer_id').val(sale.customer); form.find('input#date_and_time').val(sale.date + ' - ' + sale.time); form.find('input#date_and_time').attr('date', sale.date); form.find('input#date_and_time').attr('time', sale.time); form.find('input#customer_id').attr('disabled', 'true'); $('table#items_table tbody').empty(); var items = sale.items; for(var i = 0; i<items.length; i++){ add_sale_item(); var row = $('table#items_table tbody tr:last-child'); var item = items[i]; row.find('input#item').attr('disabled', 'disabled'); row.find('input#item').val(item.item_name); row.find('input#item').attr('item_id', item.item_id); row.find('input#quantity').val(item.quantity); row.find('input#quantity').attr('max', item.quantity); row.find('input#rate').val(item.rate); row.find('input#rate').attr('tax', item.tax_rate); row.find('input#discount_percent').val(item.discount_percent); row.find('input#total').val(item.total); row.find('input#total').attr('tax', item.tax); row.find('input#total').attr('discount', item.discount); row.find('input#discount').val(item.discount); row.attr('previous', true); } form.find('span#total').html(sale.amount); form.find('span#total').attr('tax', sale.tax); form.find('span#total').attr('discount', sale.discount); form.find('span#discount').html(sale.discount); form.find('span#total_paid').html(sale.amount); form.find('span#balance').html('0.00'); form.attr('sale_id', sale.id); form.attr('customer_name', sale.c_name); form.attr('customer_id', sale.c_id); form.find('input[type="button"]').prop('disabled', null); form.find('input[type="submit"]').prop('disabled', null); form.find('input[type="reset"]').prop('disabled', null); form.find('input[type="number"]').prop('disabled', null); }, function(message) { var form = $('form.action_form'); form.find('input').prop('disabled', 'disabled'); alert(message); }); } $(document).ready(function(e) { $('form.action_form').on('submit', function(e) { e.preventDefault(); var items = new Array(); var i = 0; var items_table = $('#items_table').find('tbody').children(); var invalid_item_precent = false; items_table.each(function() { if ($(this).attr('status') == 'active') { var item_input = $(this).find('input#item'); var item_name = item_input.val(); var item_option_obj = $('datalist#items').find("option[value='" + item_name + "']"); if (item_option_obj.length == "0" && !$(this).attr('previous')) { item_input.css('border', '1px solid #f00'); invalid_item_precent = true; return; } else { var id; if($(this).attr('previous') == 'true'){ id = item_input.attr('item_id'); }else{ id = item_option_obj.attr('id'); //var item_name = item_option_obj.attr('item_name'); } var quantity = $(this).find('input#quantity').val(); quantity = parseFloat(quantity).toFixed(3); var rate = $(this).find('input#rate').val(); var tax_rate = $(this).find('input#rate').attr('tax'); rate = parseFloat(rate).toFixed(2); var tax = $(this).find('input#total').attr('tax'); var discount = $(this).find('input#discount').val(); var total = $(this).find('input#total').val(); var item = { id: id, quantity: quantity, rate: rate, item_name: item_name, total: total, tax: tax, discount: discount, tax_rate:tax_rate } items[i++] = item; } } }); if (invalid_item_precent) { //alert("Invalid Item Precent"); return; } var form_id = 2; var operation = $(this).attr('operation'); var total = $('span#total').html(); var total_tax = $('span#total').attr('tax'); var total_discount = $('span#total').attr('discount'); var net_total = parseFloat(total) - parseFloat(total_tax); net_total = net_total.toFixed(2); var total_paid = $('span#total_paid').html(); total_paid = parseFloat(total_paid); total_paid = total_paid.toFixed(2); var balance = $('span#balance').html(); balance = parseFloat(balance); balance = balance.toFixed(2); var sale_id = $(this).attr('sale_id'); var customer_name = $(this).attr('customer_name'); var customer_id = $(this).attr('customer_id'); var date = $(this).find('input#date_and_time').attr('date'); var time = $(this).find('input#date_and_time').attr('time'); if(items.length == 0){ items = 'no_items'; } if (operation == 'update') { var data = { form_id: form_id, sale_id: sale_id, total: total, net_amount: net_total, tax_amount: total_tax, discount:total_discount, items: items } update_form_data(data, function(message, sale_id) { //$('form.action_form').get(0).reset(); //alert(message); print_bill(data, customer_name, customer_id, sale_id, total_paid, balance, date, time); get_form(2, function(html) { $('div#form-body').html(html); }, function(message) { $('font#section_heading').empty(); $('div#form-body').empty(); alert(message); }); }, function(message) { alert(message); }); } else { alert("Invalid Operation " + form_id + ' - ' + operation); } }); function print_bill(data, customer_name, customer_id, sale_id, total_paid, balance, date, time) { var html = ''; html ='<img id="logo_bill" src="images/nutiez.png"/><br/><font id="print_container_header_company_adderss">Royal Piknik Traders LLP, 29/861</font>' +'<br/><font id="print_container_header_company_adderss">Parayancheri, Calicut</font><br/><font id="print_container_header_company_adderss">' +'Phone : 0495 2741095,+91 9388627725</font><br/><font id="print_container_header_company_adderss">The kerala value added tax rules 2005/ form no. 8</font>' +'<br/><font id="print_container_header_company_adderss">Tin : 32110844692</font>' +'<br/><font id="print_container_header_company_adderss">True Copy</font>'; $('div#print_container_header').html(html); html = "<div<!-- style=\"padding:10px 0;\"><table style=\"float:right; font-size: 12px;\">" +"<tr><td>Date</td><td>:</td><td style=\"text-align:right;\">" + date + "</td></tr>" +"<tr><td>Time</td><td>:</td><td style=\"text-align:right;\">" + time + "</td></tr></table>"; html = html + "<table style=\"font-size: 12px;\">" +"<tr><td>Bill No.</td><td>:</td><td>" + sale_id + "</td></tr>" +"<tr><td>Cust. ID</td><td>:</td><td>" + customer_id + "</td></tr>" +"<tr><td>Cust. Name</td><td>:</td><td>" + customer_name + "</td></tr></table></div>"; html = html + "<div style=\"border-top:1px dashed #000; margin:10px auto 0 auto;padding:0 0 10px 0;\">" + "<table style=\"width:100%;font-size: 12px;\"><tr style=\"border-bottom: 1px solid #000; border-top: 1px solid #000;\">" + "<td style=\"width:44%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px;\">Description</td>" + "<td style=\"width:14%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px; text-align:right;\">Qty</td>" + "<td style=\"width:14%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px; text-align:right;\">Rate</td>" // + "<td style=\"width:15%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px; text-align:right;\">Amount</td>" // + "<td style=\"width:10%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px; text-align:right;\">Tax</td>" + "<td style=\"width:14%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px; text-align:right;\">Tax(%)</td>" + "<td style=\"width:14%; border-bottom:1px dashed #000; padding-bottom:5px; margin-bottom:5px; text-align:right;\">Total</td></tr>"; var i = 0; if(data.items == 'no_items'){ html = html + "<tr><td> No item</td></tr>"; }else{ for (var key in data.items) { var item = data.items[key]; html = html + "<tr><td>" + item.item_name + "</td>" +"<td style=\"text-align:right;\">" + parseFloat(item.quantity).toFixed(3) + "</td>" +"<td style=\"text-align:right;\">" + parseFloat(item.rate).toFixed(2) + "</td>" //+"<td style=\"text-align:right;\">" + (parseFloat(item.total) - parseFloat(item.tax)) + "</td>" // +"<td style=\"text-align:right;\">" + item.tax + "</td>" +"<td style=\"text-align:right;\">" + item.tax_rate + "</td>" +"<td style=\"text-align:right;\">" + parseFloat(item.total).toFixed(2) + "</td>" +"</tr>"; } } html = html + "</table></div>"; html = html + "<div style=\"border-top:1px dashed #000; padding:10px 0;\"><table style=\"margin-left: auto;font-size: 12px;\">"; html = html + "<tr><td>Net. Amount</td><td style=\"margin:0 15;\">:</td><td style=\"text-align:right;\">" + data.net_amount + "</td></tr>"; if(parseFloat(data.discount) > 0 ){ html = html + "<tr><td>Discount</td><td style=\"margin:0 15;\">:</td><td style=\"text-align:right;\">" + data.discount + "</td></tr>"; } html = html + "<tr><td>Tax</td><td style=\"margin:0 15;\">:</td><td style=\"text-align:right;\">" + data.tax_amount + "</td></tr>"; html = html + "<tr><td>Total</td><td style=\"margin:0 15;\">:</td><td style=\"text-align:right;\">" + data.total + "</td></tr>"; html = html + "<tr><td>Paid</td><td style=\"margin:0 15;\">:</td><td style=\"text-align:right;\">" + total_paid + "</td></tr>"; html = html + "<tr style=\"font-size:18px;\"><td><b>Balance</b></td><td style=\"margin:0 15;\">:</td><td style=\"text-align:right;\"><b>" + balance + "</b></td></tr>"; html = html + "</table></div>"; // console.log("Creating bill : " + html); $('div#print_container_body').html(html); html = ''; html = '<font>Thank you for shoping</font><br/><font>Visit again...</font> '; $('div#print_container_footer').html(html); print(); $('div#print_container_header').empty(); $('div#print_container_body').empty(); $('div#print_container_footer').empty(); } }); </script> <?php $form = ob_get_clean(); return $form; }
$mysql_error = mysql_error(); if (empty($mysql_error)) { $error_message = 'Some server error occured'; } else { $error_message = $mysql_error; } $responce = array('status' => 'failed', 'error' => $error_message, 'data' => array()); } } else { $responce = array('status' => 'failed', 'error' => 'Data missing', 'data' => array()); } } else { if ($form_id == 25) { ///edit inventry if (isset($_POST['inventry_id']) and !empty($_POST['inventry_id']) and isset($_POST['in_stock_count']) and isset($_POST['mrp']) and isset($_POST['tax_category_id']) and !empty($_POST['tax_category_id'])) { $inv = new inventry(); $inv->id = $_POST['inventry_id']; $inv->getInventry(); $inv->in_stock_count = $_POST['in_stock_count']; $inv->selling_prize = $_POST['mrp']; $inv->tax_category_id = $_POST['tax_category_id']; if ($inv->updateInventry()) { $message = "Stock Updated Successfuly"; $responce = array('status' => 'success', 'error' => '', 'data' => array("message" => $message, "id" => $inv->id)); } else { $description = "Stock update failed, Stock : " . $inv->to_string(); Log::e($tag, $description); $mysql_error = mysql_error(); if (empty($mysql_error)) { $error_message = 'Some server error occured'; } else {
} } else { $responce = array('status' => 'failed', 'error' => 'Invalid Purchace ID', 'data' => array()); } } else { ob_start(); $a = ob_get_clean(); $responce = array('status' => 'failed', 'error' => 'Data missing' . $a, 'data' => array()); } } else { if ($form_id == 9) { //stock report for auto sync manager $user = new user(); $user->id = $_SESSION['user_id']; $user->getUser(); $inventry = new inventry(); $inventries = $inventry->getInventryForSpecificCompany($user->company_id); if ($inventries) { $stock_array = array(); foreach ($inventries as $inventry) { $item = new item(); $item->id = $inventry->item_id; $item->getItem(); $stock_item["item_id"] = $item->id; $stock_item["item_code"] = $item->item_code; $stock_item["item_name"] = $item->item_name; $stock_item["item_unit"] = $item->unit; $tax = new tax_category(); $tax->id = $inventry->tax_category_id; $tax->getTaxCategory(); $stock_item["tax_percentage"] = $tax->tax_percentage;
if (empty($mysql_error)) { $error_message = 'Some server error occured'; } else { $error_message = $mysql_error; } $responce = array('status' => 'failed', 'error' => $error_message, 'data' => array()); } } } else { $responce = array('status' => 'failed', 'error' => 'Data missing', 'data' => array()); } } else { if ($form_id == 20) { ///stock: (inventry) delete if (isset($_POST['inventry_id']) and !empty($_POST['inventry_id'])) { $inventry = new inventry(); $inventry->id = $_POST['inventry_id']; if ($inventry->deleteInventry()) { $message = "Inventry deleted Successfuly"; $responce = array('status' => 'success', 'error' => '', 'data' => array("message" => $message, "id" => $inventry->id)); } else { $description = "Inventry delete failed, item : " . $inventry->to_string(); Log::e($tag, $description); $mysql_error = mysql_error(); if (empty($mysql_error)) { $error_message = 'Some server error occured'; } else { $error_message = $mysql_error; } $responce = array('status' => 'failed', 'error' => $error_message, 'data' => array()); }
require_once $file_name; } else { throw new Exception("Class " . $class_name . " Not found"); } }); session_start(); if (isset($_SESSION['user_id']) and !empty($_SESSION['user_id']) and isset($_GET['user_id']) and !empty($_GET['user_id']) and $_SESSION['user_id'] === $_GET['user_id']) { if (isset($_POST['purchace_id']) and !empty($_POST['purchace_id'])) { $purchace = new purchaces(); $purchace->id = $_POST['purchace_id']; $purchace->getPurchace(); if ($purchace->stocked) { $responce = array('status' => 'failed', 'error' => 'Purchace already stocked', 'data' => array()); } else { foreach ($purchace->getPurchaceItems() as $p_item) { $inv = new inventry(); $inv->company_id = $purchace->company_id; $inv->item_id = $p_item->item_id; $invs = $inv->getInventryForSpecificCompanyAndItem(); if ($invs) { $inv = $invs[0]; $inv->in_stock_count = $invs[0]->in_stock_count + $p_item->quantity; $item = new item(); $item->id = $p_item->item_id; $item->getItem(); // $inv->selling_prize = $item->mrp; $inv->tax_category_id = $item->tax_category_id; $inv->updateInventry(); } else { $inv->in_stock_count = $p_item->quantity; $item = new item();
function get_form_html($form_id, $id) { ob_start(); ?> <div id="head_div" style="padding: 5px 0; background-color: #ECECEC; color: #21ACD7; border-radius: 5px;margin-left: auto; text-align: center; "> <?php $user = new user(); $user->id = $_SESSION['user_id']; $user->getUser(); $company = new company(); $company->id = $user->company_id; $company->getCompany(); echo "STOCK REPORT OF {$company->company_name} - {$company->company_code}"; ?> </div> <div style="margin-top: 10px; background-color:transparent;padding-bottom: 30px;"> <style> div#purchace_items td{ border: 1px solid #21ACD7; } div#purchace_items tbody td{ padding: 5px 0 5px 5px; } div#purchace_items th{ border: 1px solid #21ACD7; } div#purchace_items tbody th{ padding: 5px 0 5px 5px; } div#purchace_items tbody td input,div#purchace_items tbody td select{ padding: 0; border: 0; margin: 0; height: 100%; width: 100%; background-color: transparent; } </style> <input type="text" id="search" placeholder="Enter Search Key here..." style="width: 100%; margin-left: 0px;" onkeyup="search()" /> <style> img#search{ position: relative; height: 20px; width: 20px; float: right; top: -29px; right: 10px; } </style> <img id="search" src="../ui/images/search.png" onclick="search()" /> <div id="purchace_items" style="width: 100%; padding: 10px 0; color: #21ACD7;"> <table id="items_table" style="border-collapse: collapse; width: 100%; background-color: #fff; border-radius: 10px; color: #21ACD7;"> <thead style="text-align: center;"> <tr> <th> # </th> <th> ITEM </th> <th> STOCK COUNT </th> <th style=""> SELLING PRIZE </th> <th style=""> TAX </th> </tr> </thead> <tbody style="padding-left: 3px; text-align: center; "> <?php $inventry = new inventry(); $inventries = $inventry->getInventryForSpecificCompany($user->company_id); $i = 0; if ($inventries == NULL || sizeof($inventries) == 0) { echo '<tr><td colspan="8"> No Stock Found </td></tr>'; } else { foreach ($inventries as $inventry) { ?> <tr id="<?php echo $inventry->id; ?> " > <td style="text-align: center;"> <?php echo ++$i; ?> </td> <td> <?php $item = new item(); $item->id = $inventry->item_id; $item->getItem(); echo $item->item_name . ' - ' . $item->item_code; ?> </td> <td> <?php echo number_format($inventry->in_stock_count, 3, '.', ''); ?> </td> <td> <?php echo number_format($inventry->selling_prize, 2, '.', ''); ?> </td> <td> <?php $tax = new tax_category(); $tax->id = $inventry->tax_category_id; $tax->getTaxCategory(); echo $tax->tax_category_name; ?> </td> </tr> <?php } } ?> </tbody> </table> </div> </div> <script type="text/javascript"> function search(){ var search_key = $('input#search').val(); if(search_key !== ''){ console.log("search key "+ search_key); searchTable(search_key); }else{ $('#items_table tr').show(); } } function searchTable(inputVal) { var table = $('#items_table'); table.find('tr').each(function(index, row) { var allCells = $(row).find('td'); if(allCells.length > 0) { var found = false; allCells.each(function(index, td) { var regExp = new RegExp(inputVal, 'i'); if(regExp.test($(td).text())) { found = true; return false; } }); if(found == true)$(row).show();else $(row).hide(); } }); } </script> <?php $form = ob_get_clean(); return $form; }