| + | + | + | + | + | + | (kgs) | ++ | + | + | + | + | + | + + |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| invoice_id,$result->invoice_number); ?> | + +invoice_date_created)); + echo $d; ?> | +invoice_time_created; ?> | +vehicle_no; ?> | +product_description; ?> | +client_id,$result->client_name); ?> | +item_quantity); + echo round($result->item_quantity); ?> | +item_price; + echo format_currency($result->item_price); ?> | +item_subtotal); + echo format_currency(round($result->item_subtotal)); ?> | +cgst); + echo format_currency(round($result->cgst)); ?> | +sgst); + echo format_currency(round($result->sgst)); ?> | +igst); + echo format_currency(round($result->igst)); ?> | +tcs); + echo format_currency(round($result->tcs)); ?> | +total); + echo format_currency(round($result->total)); ?> | + +
| Total | + ++ + + | ++ + + | ++ + + + | ++ + + + | ++ + + + | ++ + + + | ++ + + + | ++ + + | + + + +|||||
+ + + + invoice_status_id == 1 && !$invoice->creditinvoice_parent_id) { ?> + + +
+ + + + + + +| - | - | - | - | - | - | - | - | - | - | + |
|---|
| + | + | + | + | + | + | + | + | + | + | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | ||||||||||||
| - | - - - - + | + + + + + + | -
-
-
-
- |
-
-
-
- is_read_only == 1) {
- echo 'disabled="disabled"';
- } ?>>
-
- |
-
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
- - - - - |
+
| invoice_item_subtotal); ?> | + class="amount" id="subtotal">invoice_item_subtotal); ?>||
| - | invoice_item_tax_total); ?> | +invoice_item_tax_total); ?> |
| - | invoice_total); ?> | -+ | invoice_total); ?> | + +
+ invoice_number ? '#' . $invoice->invoice_number : $invoice->invoice_id); + ?> +
+ + + + + +') as Secondary from ip_client_custom where + client_id =? and client_custom_fieldid in (12,45,46,47,48,50,49)"; + + $query = $this->db->query($subQuery,array($ClientID)); + + return $query->result(); + + } + + + public function GetClient_Details() + { + + $subQuery = "select * from ip_clients"; + + $query = $this->db->query($subQuery,array()); + + return $query->result(); + + } + + + + + + // public function GetQuoteamount($quoteid) + // { + + // $subQuery = "select item_sgst_percentage,item_cgst_percentage,item_igst_percentage from ip_quote_item_amounts where invoice_id=?"; + + // $query = $this->db->query($subQuery,array($invoice_id)); + + // return $query->result(); + + // } + + + public function get_status($invoice_id) + { + $subQuery = "select invoice_status_id from ip_invoices where invoice_id=?"; + + $query = $this->db->query($subQuery,array($invoice_id)); + + return $query->result(); + + } + + + public function Get_invoiceitems($invoice_id) + { + $subQuery = "select item_quantity from ip_invoice_items where invoice_id=?"; + + $query = $this->db->query($subQuery,array($invoice_id)); + + return $query->result(); + + } + + + + public function GetState($ClientID) + { + //echo $ClientID; + $subQuery = "select client_id,client_name,client_state from ip_clients where client_id =?"; + + $query = $this->db->query($subQuery,array($ClientID)); + + return $query->result(); + + } + + + // public function GetStateCode($ClientID,$CustomId) + // { + // //echo $ClientID; + // $subQuery = "select client_id,client_custom_fieldid,client_custom_fieldvalue from ip_client_custom where client_id =? and client_custom_fieldid=?"; + + // $query = $this->db->query($subQuery,array($ClientID,$CustomId)); + + // return $query->result(); + + // } + + + public function GetPrimaryStateCode($ClientID,$CustomId) + { + //echo $ClientID; + $subQuery = "select client_custom_fieldvalue from ip_client_custom where client_id =? and client_custom_fieldid=?"; + + $query = $this->db->query($subQuery,array($ClientID,$CustomId)); + + return $query->result(); + + } + + + public function GetSecondaryStateCode($ClientID,$CustomId) + { + //echo $ClientID; + $subQuery = "select client_custom_fieldvalue from ip_client_custom where client_id =? and client_custom_fieldid=?"; + + $query = $this->db->query($subQuery,array($ClientID,$CustomId)); + + return $query->result(); + + } + + + + public function getinvbalqty($quoteid) + { + $subQuery = "select item_balancequantity,item_quantity,item_suppliedquantity from ip_quote_items where quote_id =?"; + + $query = $this->db->query($subQuery,array($quoteid)); + + return $query->result(); + + } + + + + + + public function getSecondayAddressSelected($InvID,$client_custom_fieldid) + { + $subQuery = "select invoice_custom_fieldvalue as secondary from ip_invoice_custom where invoice_id=? and + invoice_custom_fieldid=?"; + + $query = $this->db->query($subQuery,array($InvID,$client_custom_fieldid)); + //print_r( $this->db->last_query()); + return $query->result(); + } + + public function default_select() + { + + $this->db->select(" + SQL_CALC_FOUND_ROWS + ip_quotes.*, + ip_users.user_name, + ip_users.user_company, + ip_users.user_address_1, + ip_users.user_address_2, + ip_users.user_city, + ip_users.user_state, + ip_users.user_zip, + ip_users.user_country, + ip_users.user_phone, + ip_users.user_fax, + ip_users.user_mobile, + ip_users.user_email, + ip_users.user_web, + ip_users.user_vat_id, + ip_users.user_tax_code, + ip_users.user_subscribernumber, + ip_users.user_iban, + ip_users.user_gln, + ip_users.user_rcc, + ip_clients.*, + ip_invoice_sumex.*, + ip_invoice_amounts.invoice_id, + ip_quotetoinvoice.quote_id as Qid, + ip_invoice_amounts.invoice_amount_id, + IFnull(ip_invoice_amounts.invoice_item_subtotal, '0.00') AS invoice_item_subtotal, + IFnull(ip_invoice_amounts.invoice_item_tax_total, '0.00') AS invoice_item_tax_total, + IFnull(ip_invoice_amounts.invoice_tax_total, '0.00') AS invoice_tax_total, + IFnull(ip_invoice_amounts.invoice_total, '0.00') AS invoice_total, + IFnull(ip_invoice_amounts.invoice_paid, '0.00') AS invoice_paid, + IFnull(ip_invoice_amounts.invoice_balance, '0.00') AS invoice_balance, + ip_invoice_amounts.invoice_sign AS invoice_sign, + (CASE WHEN ip_invoices.invoice_status_id NOT IN (1,4) AND DATEDIFF(NOW(), invoice_date_due) > 0 THEN 1 ELSE 0 END) is_overdue, + DATEDIFF(NOW(), invoice_date_due) AS days_overdue, + (CASE (SELECT COUNT(*) FROM ip_invoices_recurring WHERE ip_invoices_recurring.invoice_id = ip_invoices.invoice_id and ip_invoices_recurring.recur_next_date <> '0000-00-00') WHEN 0 THEN 0 ELSE 1 END) AS invoice_is_recurring, + ip_invoices.*", false); + } + + public function default_order_by() + { + $this->db->order_by('ip_invoices.invoice_number DESC'); + $this->db->group_by('ip_invoices.invoice_number'); + } + + public function default_join() + { + $this->db->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id'); + $this->db->join('ip_users', 'ip_users.user_id = ip_invoices.user_id'); + $this->db->join('ip_invoice_amounts', 'ip_invoice_amounts.invoice_id = ip_invoices.invoice_id', 'left'); + $this->db->join('ip_invoice_sumex', 'sumex_invoice = ip_invoices.invoice_id', 'left'); + $this->db->join('ip_quotes', 'ip_quotes.invoice_id = ip_invoices.invoice_id', 'left'); + $this->db->join('ip_payments', 'ip_payments.invoice_id = ip_invoices.invoice_id', 'left'); + $this->db->join('ip_quotetoinvoice', 'ip_invoices.invoice_id = ip_quotetoinvoice.invoice_id', 'left'); + + // print_r( $this->db->last_query()); + } + + + + /** + * @return array + */ + public function validation_rules() + { + return array( + 'client_id' => array( + 'field' => 'client_id', + 'label' => trans('client'), + 'rules' => 'required' + ), + 'invoice_date_created' => array( + 'field' => 'invoice_date_created', + 'label' => trans('invoice_date'), + 'rules' => 'required' + ), + 'invoice_time_created' => array( + 'rules' => 'required' + ), + 'invoice_group_id' => array( + 'field' => 'invoice_group_id', + 'label' => trans('invoice_group'), + 'rules' => 'required' + ), + 'invoice_password' => array( + 'field' => 'invoice_password', + 'label' => trans('invoice_password') + ), + 'user_id' => array( + 'field' => 'user_id', + 'label' => trans('user'), + 'rule' => 'required' + ), + + ); + } + + /** + * @return array + */ + public function validation_rules_save_invoice() + { + return array( + 'invoice_number' => array( + 'field' => 'invoice_number', + 'label' => trans('invoice') . ' #', + 'rules' => 'is_unique[ip_invoices.invoice_number' . (($this->id) ? '.invoice_id.' . $this->id : '') . ']' + ), + 'invoice_date_created' => array( + 'field' => 'invoice_date_created', + 'label' => trans('date'), + 'rules' => 'required' + ), + 'invoice_date_due' => array( + 'field' => 'invoice_date_due', + 'label' => trans('due_date'), + 'rules' => 'required' + ), + 'invoice_time_created' => array( + 'rules' => 'required' + ), + 'invoice_password' => array( + 'field' => 'invoice_password', + 'label' => trans('invoice_password') + ) + ); + } + + /** + * @param null $db_array + * @param bool $include_invoice_tax_rates + * @return int|null + */ + public function create($db_array = null, $include_invoice_tax_rates = true) + { + + $invoice_id = parent::save(null, $db_array); + + $inv = $this->where('ip_invoices.invoice_id', $invoice_id)->get()->row(); + $invoice_group = $inv->invoice_group_id; + + // Create an invoice amount record + $db_array = array( + 'invoice_id' => $invoice_id + ); + + $this->db->insert('ip_invoice_amounts', $db_array); + + if ($include_invoice_tax_rates) { + // Create the default invoice tax record if applicable + if (get_setting('default_invoice_tax_rate')) { + $db_array = array( + 'invoice_id' => $invoice_id, + 'tax_rate_id' => get_setting('default_invoice_tax_rate'), + 'include_item_tax' => get_setting('default_include_item_tax', 0), + 'invoice_tax_rate_amount' => 0 + ); + + $this->db->insert('ip_invoice_tax_rates', $db_array); + } + } + $invgroup = $this->mdl_invoice_groups->where('invoice_group_id', $invoice_group)->get()->row(); + if (preg_match("/sumex/i", $invgroup->invoice_group_name)) { + // If the Invoice Group includes "Sumex", make the invoice a Sumex one + $db_array = array( + 'sumex_invoice' => $invoice_id + ); + $this->db->insert('ip_invoice_sumex', $db_array); + } + + return $invoice_id; + } + + /** + * Copies invoice items, tax rates, etc from source to target + * @param int $source_id + * @param int $target_id + */ + public function copy_invoice($source_id, $target_id) + { + $this->load->model('invoices/mdl_items'); + + $invoice_items = $this->mdl_items->where('invoice_id', $source_id)->get()->result(); + + foreach ($invoice_items as $invoice_item) { + $db_array = array( + 'invoice_id' => $target_id, + 'item_tax_rate_id' => $invoice_item->item_tax_rate_id, + 'item_name' => $invoice_item->item_name, + 'item_description' => $invoice_item->item_description, + 'item_quantity' => $invoice_item->item_quantity, + 'item_price' => $invoice_item->item_price, + 'item_order' => $invoice_item->item_order + ); + + $this->mdl_items->save(null, $db_array); + } + + $invoice_tax_rates = $this->mdl_invoice_tax_rates->where('invoice_id', $source_id)->get()->result(); + + foreach ($invoice_tax_rates as $invoice_tax_rate) { + $db_array = array( + 'invoice_id' => $target_id, + 'tax_rate_id' => $invoice_tax_rate->tax_rate_id, + 'include_item_tax' => $invoice_tax_rate->include_item_tax, + 'invoice_tax_rate_amount' => $invoice_tax_rate->invoice_tax_rate_amount + ); + + $this->mdl_invoice_tax_rates->save(null, $db_array); + } + + // Copy the custom fields + $this->load->model('custom_fields/mdl_invoice_custom'); + $db_array = $this->mdl_invoice_custom->where('invoice_id', $source_id)->get()->row_array(); + + if (count($db_array) > 2) { + unset($db_array['invoice_custom_id']); + $db_array['invoice_id'] = $target_id; + $this->mdl_invoice_custom->save_custom($target_id, $db_array); + } + } + + /** + * Copies invoice items, tax rates, etc from source to target + * @param int $source_id + * @param int $target_id + */ + public function copy_credit_invoice($source_id, $target_id) + { + $this->load->model('invoices/mdl_items'); + + // echo "target/cre".$target_id; + // echo "source/inv".$source_id; + // die(); + + $invoice_items = $this->mdl_items->where('invoice_id', $source_id)->get()->result(); + + // $custom_items = $this->mdl_items->get_invoice_custom_values($source_id); + + //print_r($invoice_items); + //die(); + + + + + foreach ($invoice_items as $invoice_item) { + $db_array = array( + 'invoice_id' => $target_id, + //'item_tax_rate_id' => $invoice_item->item_tax_rate_id, + 'Sgst_item_tax_rate_id'=>$invoice_item->Sgst_item_tax_rate_id, + 'Cgst_item_tax_rate_id'=>$invoice_item->Cgst_item_tax_rate_id, + 'Igst_item_tax_rate_id'=>$invoice_item->Igst_item_tax_rate_id, + 'item_name' => $invoice_item->item_name, + 'item_product_unit' =>$invoice_item->item_product_unit, + 'item_product_unit_id'=> $invoice_item->item_product_unit_id, + 'item_product_id'=>$invoice_item->item_product_id, + 'item_description' => $invoice_item->item_description, + 'item_quantity' => -$invoice_item->item_quantity, + 'item_price' => $invoice_item->item_price, + 'item_order' => $invoice_item->item_order + ); + + $this->mdl_items->save(null, $db_array); + + + } + + $invoice_tax_rates = $this->mdl_invoice_tax_rates->where('invoice_id', $source_id)->get()->result(); + + + + foreach ($invoice_tax_rates as $invoice_tax_rate) { + $db_array = array( + 'invoice_id' => $target_id, + 'tax_rate_id' => $invoice_tax_rate->tax_rate_id, + 'include_item_tax' => $invoice_tax_rate->include_item_tax, + 'invoice_tax_rate_amount' => -$invoice_tax_rate->invoice_tax_rate_amount + ); + + $this->mdl_invoice_tax_rates->save(null, $db_array); + } + + + + /// Copy the custom fields + $this->load->model('custom_fields/mdl_invoice_custom'); + $db_array = $this->mdl_invoice_custom->where('ip_invoice_custom.invoice_id', $source_id)->get()->row_array(); + + $custom_item = $this->get_invoice_custom_values($source_id); + + +//echo "vdc"; + foreach($custom_item as $cus) + { + //$invoice_id = $target_id; + + $customarray= array( + 'invoice_id'=>$target_id, + 'invoice_custom_fieldid'=>$cus->invoice_custom_fieldid, + 'invoice_custom_fieldvalue'=>$cus->invoice_custom_fieldvalue + + + ); + + $this->save_credit_custom($customarray); + + } + + + $updatearray = array('invoice_status_id'=>'4'); + + $inv_status= $this->saveinvoicestatus($source_id,$updatearray); + + + + //print_r($db_array); + + //die(); + + // if (count($db_array) > 2) { + // unset($db_array['invoice_custom_id']); + // $db_array['invoice_id'] = $target_id; + // $this->mdl_invoice_custom->save_custom($target_id, $db_array); + // } + } + + /** + * @return array + */ + public function db_array() + { + $db_array = parent::db_array(); + + + // print_r($db_array); + // $receivedstatus='ST066'; + $credit_status='0'; + + // Get the client id for the submitted invoice + $this->load->model('clients/mdl_clients'); + + // Check if is SUMEX + $this->load->model('invoice_groups/mdl_invoice_groups'); + + $db_array['invoice_date_created'] = date_to_mysql($db_array['invoice_date_created']); + $db_array['invoice_date_due'] = $this->get_date_due($db_array['invoice_date_created']); + $db_array['invoice_terms'] = get_setting('default_invoice_terms'); + //$db_array['receivedstatus'] = $receivedstatus; + // $db_array['credit_status'] = $credit_status; + + if (!isset($db_array['invoice_status_id'])) { + $db_array['invoice_status_id'] = 1; + } + + $generate_invoice_number = get_setting('generate_invoice_number_for_draft'); + + if ($db_array['invoice_status_id'] === 1 && $generate_invoice_number == 1) { + $db_array['invoice_number'] = $this->get_invoice_number($db_array['invoice_group_id']); + } elseif ($db_array['invoice_status_id'] != 1) { + $db_array['invoice_number'] = $this->get_invoice_number($db_array['invoice_group_id']); + } else { + $db_array['invoice_number'] = ''; + } + + // Set default values + $db_array['payment_method'] = (empty($db_array['payment_method']) ? 0 : $db_array['payment_method']); + + // Generate the unique url key + $db_array['invoice_url_key'] = $this->get_url_key(); + + return $db_array; + } + + /** + * @param string $invoice_date_created + * @return string + */ + public function get_date_due($invoice_date_created) + { + $invoice_date_due = new DateTime($invoice_date_created); + $invoice_date_due->add(new DateInterval('P' . get_setting('invoices_due_after') . 'D')); + return $invoice_date_due->format('Y-m-d'); + } + + /** + * @param $invoice_group_id + * @return mixed + */ + public function get_invoice_number($invoice_group_id) + { + $this->load->model('invoice_groups/mdl_invoice_groups'); + return $this->mdl_invoice_groups->generate_invoice_number($invoice_group_id); + } + + /** + * @return string + */ + public function get_url_key() + { + $this->load->helper('string'); + return random_string('alnum', 15); + } + + /** + * @param $invoice_id + * @return mixed + */ + public function get_invoice_group_id($invoice_id) + { + $invoice = $this->get_by_id($invoice_id); + return $invoice->invoice_group_id; + } + + /** + * @param int $parent_invoice_id + * @return mixed + */ + public function get_parent_invoice_number($parent_invoice_id) + { + $parent_invoice = $this->get_by_id($parent_invoice_id); + return $parent_invoice->invoice_number; + } + + /** + * @return mixed + */ + public function get_custom_values($id) + { + $this->load->module('custom_fields/Mdl_invoice_custom'); + return $this->invoice_custom->get_by_invid($id); + } + + + /** + * @param int $invoice_id + */ + public function delete($invoice_id) + { + parent::delete($invoice_id); + + $this->load->helper('orphan'); + delete_orphans(); + } + + // Used from the guest module, excludes draft and paid + public function is_open() + { + $this->filter_where_in('invoice_status_id', array(2, 3)); + return $this; + } + + // Used to check if the invoice is Sumex + public function is_sumex() + { + $this->where('sumex_id is NOT NULL', null, FALSE); + return $this; + } + + public function guest_visible() + { + $this->filter_where_in('invoice_status_id', array(2, 3, 4)); + return $this; + } + + public function is_draft() + { + $this->filter_where('invoice_status_id', 1); + return $this; + } + + public function is_sent() + { + $this->filter_where('invoice_status_id', 2); + return $this; + } + + public function is_viewed() + { + $this->filter_where('invoice_status_id', 3); + return $this; + } + + public function is_paid() + { + $this->filter_where('invoice_status_id', 4); + return $this; + } + + public function is_overdue() + { + $this->filter_having('is_overdue', 1); + return $this; + } + + public function by_client($client_id) + { + $this->filter_where('ip_invoices.client_id', $client_id); + return $this; + } + + /** + * @param $invoice_id + */ + public function mark_viewed($invoice_id) + { + $invoice = $this->get_by_id($invoice_id); + + if (!empty($invoice)) { + if ($invoice->invoice_status_id == 2) { + $this->db->where('invoice_id', $invoice_id); + $this->db->where('invoice_id', $invoice_id); + $this->db->set('invoice_status_id', 3); + $this->db->update('ip_invoices'); + } + + // Set the invoice to read-only if feature is not disabled and setting is view + if ($this->config->item('disable_read_only') == false && get_setting('read_only_toggle') == 3) { + $this->db->where('invoice_id', $invoice_id); + $this->db->set('is_read_only', 1); + $this->db->update('ip_invoices'); + } + } + } + + /** + * @param $invoice_id + */ + public function mark_sent($invoice_id) + { + $invoice = $this->mdl_invoices->get_by_id($invoice_id); + if (!empty($invoice)) { + if ($invoice->invoice_status_id == 1) { + // Generate new invoice number if applicable + if (get_setting('generate_invoice_number_for_draft') == 0) { + $invoice_number = $this->mdl_invoices->get_invoice_number($invoice->invoice_group_id); + } else { + $invoice_number = $invoice->invoice_number; + } + + // Set new date and save + $this->db->where('invoice_id', $invoice_id); + $this->db->set('invoice_status_id', 2); + $this->db->set('invoice_number', $invoice_number); + $this->db->update('ip_invoices'); + } + + // Set the invoice to read-only if feature is not disabled and setting is sent + if ($this->config->item('disable_read_only') == false && get_setting('read_only_toggle') == 2) { + $this->db->where('invoice_id', $invoice_id); + $this->db->set('is_read_only', 1); + $this->db->update('ip_invoices'); + } + } + } + + + + function Save_quote_to_invtable($invoicedetails) + { + $this->db->trans_start(); + $this->db->insert('ip_quotetoinvoice', $invoicedetails); + $insert_id = $this->db->affected_rows(); + $this->db->trans_complete(); + return TRUE; + } + + + public function CheckInvId($invoice_id) + { + + $this->db->select('count(invoice_id) as invcount'); + $this->db->from('ip_quotetoinvoice'); + $this->db->where('invoice_id ',$invoice_id); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + + } + + + function GetOrder_qty($quoteid,$item_product_id) + { + + $this->db->select('item_quantity as orderedqty,item_suppliedquantity as supqty, item_balancequantity as balqty '); + $this->db->from('ip_quote_items'); + $this->db->where('quote_id',$quoteid); + $this->db->where('item_product_id',$item_product_id); + $query = $this->db->get(); + return $query->result(); + + } + + function check_item($quoteid,$itemproductid) + { + + // echo $quoteid; + // die(); + $this->db->select('*'); + $this->db->from('ip_quote_items'); + $this->db->where('quote_id',$quoteid); + $this->db->where('item_product_id',$itemproductid); + $query = $this->db->get(); + return $query->result(); + } + + + function Update_Qty($quoteid,$updatearray,$item_product_id) + { + // echo $item_product_id; + // die(); + $this->db->where('quote_id', $quoteid); + $this->db->where('item_product_id',$item_product_id); + $this->db->update('ip_quote_items', $updatearray); + //print_r( $this->db->last_query()); + + //return TRUE; + + } + + function Check_Qid($quoteid) + { + + $this->db->select('quote_id as quotecount,invoice_id'); + $this->db->from('ip_quotetoinvoice'); + $this->db->where('quote_id ',$quoteid); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + + } + + + function GetInvOrdered($invoice_id) + { + + $this->db->select('item_quantity,invoice_id'); + $this->db->from('ip_invoice_items'); + $this->db->where('invoice_id ',$invoice_id); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + } + + + function GetquoteOrdered($quoteid1) + { + + + $this->db->select('item_quantity,item_balancequantity,item_suppliedquantity'); + $this->db->from('ip_quote_items'); + $this->db->where('quote_id ',$quoteid1); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + + } + + + function get_clientid($invoice_id) + { + + $this->db->select('client_id'); + $this->db->from('ip_invoices'); + $this->db->where('invoice_id ',$invoice_id); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + } + + + // function get_taxcheck($invoice_id) + // { + + // $this->db->select('taxcheck'); + // $this->db->from('ip_invoice_item_amounts'); + // $this->db->join('ip_invoice_items', 'ip_invoice_items.item_id = ip_invoice_item_amounts.item_id'); + // $this->db->where('ip_invoice_items.invoice_id ',$invoice_id); + // $query = $this->db->get(); + // // print_r( $this->db->last_query()); + // return $query->result(); + + // } + + + public function get_invoice_custom_values($source_id) + { + + //echo $source_id; + $this->db->select('*'); + $this->db->from('ip_invoice_custom'); + $this->db->where('ip_invoice_custom.invoice_id',$source_id); + $query = $this->db->get(); + // print_r($this->db->last_query()); + return $query->result(); + return $this; + } + + + public function save_credit_custom($customarray) + { + $this->db->trans_start(); + $this->db->insert('ip_invoice_custom', $customarray); + $insert_id = $this->db->affected_rows(); + $this->db->trans_complete(); + return true; + } + + + public function saveinvoicestatus($source_id,$updatearray) + { + // echo "ff"; + + // print_r($updatearray); + $this->db->where('invoice_id', $source_id); + $this->db->update('ip_invoices',$updatearray); + $insert_id = $this->db->affected_rows(); + //return $insert_id; + + return true; + } + + + public function getcreditstatus($invoice_id) + { + $this->db->select('credit_status'); + $this->db->from('ip_invoices'); + $this->db->where('ip_invoices.invoice_id',$invoice_id); + $query = $this->db->get(); + return $query->result(); + //return $this; + } + + + public function getinv_parentqty($invoice_id) + { + $this->db->select('creditinvoice_parent_id'); + $this->db->from('ip_invoices'); + $this->db->where('ip_invoices.invoice_id',$invoice_id); + $query = $this->db->get(); + // print_r($this->db->last_query()); + + // print_r($query->result()); + + $qty = ''; + + foreach($query->result() as $re) + { + $qty = $re->creditinvoice_parent_id; + } + + //echo "qt".$qty; + if($qty =="") + { + + } + else + { + $this->db->select('item_quantity'); + $this->db->from('ip_invoice_items'); + $this->db->where('invoice_id',$qty); + $qtyquery = $this->db->get(); + return $qtyquery->result(); + + } + } + + +} diff --git a/application/modules/invoices_1/models/Mdl_invoices_recurring.php b/application/modules/invoices_1/models/Mdl_invoices_recurring.php new file mode 100644 index 0000000..5a1c516 --- /dev/null +++ b/application/modules/invoices_1/models/Mdl_invoices_recurring.php @@ -0,0 +1,135 @@ + 'calendar_week_1', + '14D' => 'calendar_week_2', + '21D' => 'calendar_week_3', + '28D' => 'calendar_week_4', + '1M' => 'calendar_month_1', + '2M' => 'calendar_month_2', + '3M' => 'calendar_month_3', + '4M' => 'calendar_month_4', + '5M' => 'calendar_month_5', + '6M' => 'calendar_month_6', + '1Y' => 'calendar_year_1', + ); + + public function default_select() + { + $this->db->select("SQL_CALC_FOUND_ROWS ip_invoices.*, + ip_clients.client_name, + ip_invoices_recurring.*, + IF(recur_end_date > date(NOW()) OR recur_end_date = '0000-00-00', 'active', 'inactive') AS recur_status", false); + } + + public function default_join() + { + $this->db->join('ip_invoices', 'ip_invoices.invoice_id = ip_invoices_recurring.invoice_id'); + $this->db->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id'); + } + + /** + * @return array + */ + public function validation_rules() + { + return array( + 'invoice_id' => array( + 'field' => 'invoice_id', + 'rules' => 'required' + ), + 'recur_start_date' => array( + 'field' => 'recur_start_date', + 'label' => trans('start_date'), + 'rules' => 'required' + ), + 'recur_end_date' => array( + 'field' => 'recur_end_date', + 'label' => trans('end_date') + ), + 'recur_frequency' => array( + 'field' => 'recur_frequency', + 'label' => trans('every'), + 'rules' => 'required' + ), + ); + } + + /** + * @return array + */ + public function db_array() + { + $db_array = parent::db_array(); + + $db_array['recur_start_date'] = date_to_mysql($db_array['recur_start_date']); + $db_array['recur_next_date'] = $db_array['recur_start_date']; + + if ($db_array['recur_end_date']) { + $db_array['recur_end_date'] = date_to_mysql($db_array['recur_end_date']); + } else { + $db_array['recur_end_date'] = '0000-00-00'; + } + + return $db_array; + } + + /** + * @param $invoice_recurring_id + */ + public function stop($invoice_recurring_id) + { + $db_array = array( + 'recur_end_date' => date('Y-m-d'), + 'recur_next_date' => '0000-00-00' + ); + + $this->db->where('invoice_recurring_id', $invoice_recurring_id); + $this->db->update('ip_invoices_recurring', $db_array); + } + + /** + * Sets filter to only recurring invoices which should be generated now + * @return \Mdl_Invoices_Recurring + */ + public function active() + { + $this->filter_where("recur_next_date <= date(NOW()) AND (recur_end_date > date(NOW()) OR recur_end_date = '0000-00-00')"); + return $this; + } + + /** + * @param $invoice_recurring_id + */ + public function set_next_recur_date($invoice_recurring_id) + { + $invoice_recurring = $this->where('invoice_recurring_id', $invoice_recurring_id)->get()->row(); + + $recur_next_date = increment_date($invoice_recurring->recur_next_date, $invoice_recurring->recur_frequency); + + $db_array = array( + 'recur_next_date' => $recur_next_date + ); + + $this->db->where('invoice_recurring_id', $invoice_recurring_id); + $this->db->update('ip_invoices_recurring', $db_array); + } + +} diff --git a/application/modules/invoices_1/models/Mdl_item_amounts.php b/application/modules/invoices_1/models/Mdl_item_amounts.php new file mode 100644 index 0000000..ca29721 --- /dev/null +++ b/application/modules/invoices_1/models/Mdl_item_amounts.php @@ -0,0 +1,83 @@ +console.log('PHP: ".$item_id."');"); + + // die(); + + $amount=''; + $this->load->model('invoices/mdl_items'); + $item = $this->mdl_items->get_by_id($item_id); + + $item_subtotal = $item->item_quantity * $item->item_price; + $amount = $item->item_subtotal - $item->item_discount; + $item_tax_total = $amount * (($item->Sgst_item_tax_rate_percent + $item->Cgst_item_tax_rate_percent +$item->Igst_item_tax_rate_percent) / 100); + $item_discount_total = $item->item_discount_amount * $item->item_quantity; + $item_total = $item_subtotal + $item_tax_total - $item_discount_total; + + $item_cgst= $amount * ($item->Cgst_item_tax_rate_percent)/100; + $item_sgst= $amount * ($item->Sgst_item_tax_rate_percent)/100; + $item_igst= $amount * ($item->Igst_item_tax_rate_percent)/100; + + + // if($item_subtotal == $item_total) + // { + // $taxcheck=0; + // } + // else + // { + // $taxcheck=1; + // } + + + + $db_array = array( + 'item_id' => $item_id, + 'item_subtotal' => $item_subtotal, + 'item_tax_total' => $item_tax_total, + 'item_discount' => $item_discount_total, + 'item_total' => $item_total, + 'item_cgst_amt'=> $item_cgst, + 'item_sgst_amt'=> $item_sgst, + + 'item_igst_amt'=> $item_igst + + + ); + + $this->db->where('item_id', $item_id); + if ($this->db->get('ip_invoice_item_amounts')->num_rows()) { + $this->db->where('item_id', $item_id); + $this->db->update('ip_invoice_item_amounts', $db_array); + } else { + $this->db->insert('ip_invoice_item_amounts', $db_array); + } + } + +} diff --git a/application/modules/invoices_1/models/Mdl_items.php b/application/modules/invoices_1/models/Mdl_items.php new file mode 100644 index 0000000..6e9bc0e --- /dev/null +++ b/application/modules/invoices_1/models/Mdl_items.php @@ -0,0 +1,501 @@ +db->query($sql); + return $query->result(); + + } + public function month() + { + + + +if (date('m') >= 4) { + $yearl = date('Y').'-'.(date('Y')+1); + } else { + $yearl = (date('Y')-1).'-'.date('Y'); + } + $ab=$yearl; + $fa=substr($ab,0,-5); + $aa=substr($ab,5,5); + +$sql="SELECT (SELECT count(distinct inv.invoice_id) FROM ip_invoices inv +join ip_invoice_custom icf on icf.invoice_id = inv.invoice_id +where inv.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8' and MONTH(inv.invoice_date_created) = MONTH(CURRENT_DATE()) and +(inv.invoice_date_created >= '".$fa."-04-01' and inv.invoice_date_created <= '".$aa."-03-31') and creditinvoice_parent_id is null) as months,ifnull(sum(it.item_quantity),0) as sum_of_quantity,ifnull(sum(if(it.item_quantity=0,1,it.item_quantity) * it.item_price),0) as sum_of_month FROM ip_invoice_items it +join ip_invoices inv on inv.invoice_id = it.invoice_id +join ip_invoice_custom icf on icf.invoice_id = inv.invoice_id +where inv.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8' and MONTH(inv.invoice_date_created) = MONTH(CURRENT_DATE()) and +(inv.invoice_date_created >= '".$fa."-04-01' and inv.invoice_date_created <= '".$aa."-03-31')"; + + + + + + $query = $this->db->query($sql); + return $query->result(); + + } + + + public function year() + { + if (date('m') >= 4) { + $yearl = date('Y').'-'.(date('Y')+1); + } else { + $yearl = (date('Y')-1).'-'.date('Y'); + } + $ab=$yearl; + $fa=substr($ab,0,-5); + $aa=substr($ab,5,5); + $sql="SELECT (SELECT count(distinct inv.invoice_id) FROM ip_invoices inv +join ip_invoice_custom icf on icf.invoice_id = inv.invoice_id +where inv.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8' and +(inv.invoice_date_created >= '".$fa."-04-01' and inv.invoice_date_created <= '".$aa."-03-31') and creditinvoice_parent_id is null) as year,ifnull(sum(iit.item_quantity),0) as sum_of_quantity,ifnull(sum(if(iit.item_quantity=0,1,iit.item_quantity) * iit.item_price),0) as sum_of_year +FROM ip_invoice_items iit +join ip_invoices ii on ii.invoice_id = iit.invoice_id +join ip_invoice_custom icf on icf.invoice_id = ii.invoice_id +where ii.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8' and (ii.invoice_date_created >= '".$fa."-04-01' and ii.invoice_date_created <= '".$aa."-03-31');"; + +$query = $this->db->query($sql); + return $query->result(); + + } + + + + public function vehicle() + { + $sql="select iit.invoice_id as invoice_id,iic.invoice_custom_fieldvalue as invoice_custom_fieldvalue from ip_invoice_custom iic +join ip_invoice_items iit on iit.invoice_id = iic.invoice_id where invoice_custom_fieldid = '8'"; + $query = $this->db->query($sql); + return $query->result(); + + } + public function item_name() + { + $sql="SELECT product_description as item_name FROM ip_products"; + $query = $this->db->query($sql); + return $query->result(); + + } + +// public function year_wise($a,$b) +// { +// $sql="SELECT inv.invoice_date_created as months,sum(it.item_quantity) as quantity,sum(it.item_quantity * it.item_price) as value FROM ip_invoice_items it +// join ip_invoices inv on inv.invoice_id = it.invoice_id where inv.invoice_status_id != 1 and (YEAR(inv.invoice_date_created) = ? and MONTH(inv.invoice_date_created) >= 4 ) or ( YEAR(inv.invoice_date_created) = ? and MONTH(inv.invoice_date_created) <= 3 ) +// group by month(months) +// ORDER BY month(months);"; +// $query = $this->db->query($sql,array($a,$b)); +// return $query->result(); + +// } + + +public function year_wise($a,$b) + { + $sql="SELECT inv.invoice_date_created as months,sum(it.item_quantity) as quantity,sum(it.item_quantity * it.item_price) as value FROM ip_invoice_items it +join ip_invoices inv on inv.invoice_id = it.invoice_id +join ip_invoice_custom icf on icf.invoice_id = inv.invoice_id +where inv.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8'and +(inv.invoice_date_created) >= '$a-04-01' and date(inv.invoice_date_created) <= '$b-03-31' +group by month(months) +ORDER BY month(months);"; +//echo $sql; + $query = $this->db->query($sql); + return $query->result(); + + } + + + + + + + public function month_wise($new) + { + //echo $new; + $month= date("m",strtotime($new)); + $year = date("Y",strtotime($new)); + //echo $month;// + //echo $year;die(); + $sql="select clt.client_id as client_id,clt.client_name as client_name,ip.product_description as product_name,sum(item_quantity) as quantity,sum(item_quantity * item_price) as value from ip_clients clt + join ip_invoices inv on inv.client_id = clt.client_id + join ip_invoice_items items on items.invoice_id = inv.invoice_id + join ip_products ip on ip.product_id = items.item_product_id + join ip_invoice_custom icf on icf.invoice_id = inv.invoice_id + where inv.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8' and month(inv.invoice_date_created) = ? and year(inv.invoice_date_created) = ? +group by client_name,product_name"; + + + $query = $this->db->query($sql,array($month,$year)); + //print_r($query->result()); + // echo $sql; + return $query->result(); + + } + public function year_wise_total($a,$b) + { + + $sql="select clt.client_id as client_id,clt.client_name as client_name,ip.product_description as product_name,sum(item_quantity) as quantity,sum(item_quantity * item_price) as value +from ip_clients clt +join ip_invoices inv on inv.client_id = clt.client_id +join ip_invoice_items items on items.invoice_id = inv.invoice_id +join ip_invoice_custom icf on icf.invoice_id = inv.invoice_id +join ip_products ip on ip.product_id = items.item_product_id +where inv.invoice_status_id != 1 and icf.invoice_custom_fieldid = '8' and (inv.invoice_date_created) >= '".$a."-04-01' and date(inv.invoice_date_created) <= '".$b."-03-31' group by client_name,product_name"; + $query = $this->db->query($sql); + //echo $sql; + //print_r($a); + return $query->result(); + + } + public function fiscalYear() + { + $sql="SELECT + CASE WHEN MONTH(inv.invoice_date_created)>=4 THEN + concat(YEAR(inv.invoice_date_created), '-',YEAR(inv.invoice_date_created)+1) + ELSE concat(YEAR(inv.invoice_date_created)-1,'-', YEAR(inv.invoice_date_created)) END AS financial_year, + SUM(it.item_quantity) +FROM ip_invoice_items it +join ip_invoices inv on inv.invoice_id = it.invoice_id +where inv.invoice_status_id != 1 +GROUP BY financial_year "; + $query = $this->db->query($sql); + //print_r($query->result()); + return $query->result(); + } + public function selectmonth($a,$b) + { + $sql="SELECT + monthname(invoice_date_created) as months +FROM ip_invoices +where case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = $a and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = $b+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = $a-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = $b and MONTH(invoice_date_created) <= 3 ) +end +GROUP BY months +ORDER BY FIELD(months, +'December', 'November', 'October', +'September', 'August', 'July', +'June', 'May', 'April', +'March', 'February', 'January') DESC, months ASC"; + $query = $this->db->query($sql,array($a,$b)); + + return $query->result(); + } + public function customer() + { + + $sql="SELECT client_name,client_id FROM ip_clients +order by client_name;"; + + $query = $this->db->query($sql); + //print_r($a); + return $query->result(); + + } + + + + public function default_select() + { + $this->db->select('ip_invoice_item_amounts.*, ip_products.*, ip_invoice_items.*, + Sgst_item_tax_rates.tax_rate_percent AS Sgst_item_tax_rate_percent, + Sgst_item_tax_rates.tax_rate_name AS Sgst_item_tax_rate_name,(((ip_invoice_items.item_quantity * ip_invoice_items.item_price) - (ip_invoice_items.item_quantity * ip_invoice_items.item_discount_amount)) * Sgst_item_tax_rates.tax_rate_percent /100) AS Sgst_item_tax_rate_amount,Cgst_item_tax_rates.tax_rate_percent AS Cgst_item_tax_rate_percent, + Cgst_item_tax_rates.tax_rate_name AS Cgst_item_tax_rate_name,(((ip_invoice_items.item_quantity * ip_invoice_items.item_price) - (ip_invoice_items.item_quantity * ip_invoice_items.item_discount_amount)) * Cgst_item_tax_rates.tax_rate_percent /100) AS Cgst_item_tax_rate_amount,Igst_item_tax_rates.tax_rate_percent AS Igst_item_tax_rate_percent, + Igst_item_tax_rates.tax_rate_name AS Igst_item_tax_rate_name,(((ip_invoice_items.item_quantity * ip_invoice_items.item_price) - (ip_invoice_items.item_quantity * ip_invoice_items.item_discount_amount)) * Igst_item_tax_rates.tax_rate_percent /100) AS Igst_item_tax_rate_amount'); + } + + public function default_order_by() + { + $this->db->order_by('ip_invoice_items.item_order'); + } + + public function default_join() + { + $this->db->join('ip_invoice_item_amounts', 'ip_invoice_item_amounts.item_id = ip_invoice_items.item_id', 'left'); + $this->db->join('ip_tax_rates AS Sgst_item_tax_rates', 'Sgst_item_tax_rates.tax_rate_id = ip_invoice_items.Sgst_item_tax_rate_id', 'left'); + $this->db->join('ip_tax_rates AS Cgst_item_tax_rates', 'Cgst_item_tax_rates.tax_rate_id = ip_invoice_items.Cgst_item_tax_rate_id', 'left'); + $this->db->join('ip_tax_rates AS Igst_item_tax_rates', 'Igst_item_tax_rates.tax_rate_id = ip_invoice_items.Igst_item_tax_rate_id', 'left'); + $this->db->join('ip_products', 'ip_products.product_id = ip_invoice_items.item_product_id', 'left'); + + } + + /** + * @return array + */ + public function validation_rules() + { + return array( + 'invoice_id' => array( + 'field' => 'invoice_id', + 'label' => trans('invoice'), + 'rules' => 'required' + ), + 'item_sku' => array( + 'field' => 'item_sku', + 'label' => trans('item_sku'), + 'rules' => 'required|unique' + ), + 'item_name' => array( + 'field' => 'item_name', + 'label' => trans('item_name'), + 'rules' => 'required' + ), + 'item_description' => array( + 'field' => 'item_description', + 'label' => trans('description') + ), + 'item_quantity' => array( + 'field' => 'item_quantity', + 'label' => trans('quantity'), + 'rules' => 'required' + ), + 'item_price' => array( + 'field' => 'item_price', + 'label' => trans('price'), + 'rules' => 'required' + ), + 'item_tax_rate_id' => array( + 'field' => 'item_tax_rate_id', + 'label' => trans('item_tax_rate') + ), + 'item_product_id' => array( + 'field' => 'item_product_id', + 'label' => trans('original_product') + ), + 'item_date' => array( + 'field' => 'item_date', + 'label' => trans('item_date') + ) + ); + } + + + function get_product() + { + + //$this->db->select('product_id,product_description'); + + $this->db->join('ip_units unit','unit.unit_id = ip_products.unit_id'); + $this->db->from('ip_products'); + $query = $this->db->get(); + //print_r($query->result()); + + // print_r( $this->db->last_query()); + return $query->result(); + + } + + function get_quotes($client_id) + { + + $this->db->select('ip_quotes.quote_id,quote_number,quote_pono'); + // $this->db->join('ip_units unit','unit.unit_id = ip_products.unit_id'); + $this->db->from('ip_quotes'); + $this->db->join('ip_quote_items','ip_quote_items.quote_id = ip_quotes.quote_id'); + $this->db->where('client_id ',$client_id); + $this->db->where('item_status ',1); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + + } + + + // function get_quoteproduct($quote_id) + // { + + // $this->db->select('item_name,item_description,item_quantity,item_balancequantity,item_suppliedquantity,item_price,unit_id,Sgst_item_tax_rate_id,Cgst_item_tax_rate_id,Igst_item_tax_rate_id,product_id,item_product_id'); + // $this->db->from('ip_quote_items'); + // $this->db->join('ip_quotes','ip_quote_items.quote_id = ip_quotes.quote_id'); + // $this->db->join('ip_products','ip_quote_items.item_product_id = ip_products.product_id'); + // $this->db->where('ip_quote_items.quote_id =', $quote_id); + // $query = $this->db->get(); + // return $query->result(); + // } + + + + + function get_quoteproduct($quote_id) + { + + $this->db->select('item_name,item_description,item_quantity,item_balancequantity,item_suppliedquantity,item_price,unit_id,Sgst_item_tax_rate_id,Cgst_item_tax_rate_id,Igst_item_tax_rate_id,product_id,item_product_id,quote_pono,po_date_created'); + $this->db->from('ip_quote_items'); + $this->db->join('ip_quotes','ip_quote_items.quote_id = ip_quotes.quote_id'); + $this->db->join('ip_products','ip_quote_items.item_product_id = ip_products.product_id'); + $this->db->where('ip_quote_items.quote_id =', $quote_id); + $query = $this->db->get(); + return $query->result(); + } + + + + + + function get_tax() + { + + $this->db->select('*'); + $this->db->from('ip_tax_rates'); + $query = $this->db->get(); + //print_r($query->result()); + //print_r( $this->db->last_query()); + return $query->result(); + + } + + /** + * @param null $id + * @param null $db_array + * @return int|null + */ + public function save($id = null, $db_array = null) + { + + $id = parent::save($id, $db_array); + + // echo $id; + // die(); + + $this->load->model('invoices/mdl_item_amounts'); + + $this->mdl_item_amounts->calculate($id); + + $this->load->model('invoices/mdl_invoice_amounts'); + + if (is_object($db_array) && isset($db_array->invoice_id)) { + $this->mdl_invoice_amounts->calculate($db_array->invoice_id); + } elseif (is_array($db_array) && isset($db_array['invoice_id'])) { + $this->mdl_invoice_amounts->calculate($db_array['invoice_id']); + } + + return $id; + } + + /** + * @param int $item_id + */ + public function delete($item_id) + { + // Get item: + // the invoice id is needed to recalculate invoice amounts + // and the task id to update status if the item refers a task + $query = $this->db->get_where($this->table, + array('item_id' => $item_id)); + if ($query->num_rows() == 0) { + return null; + } + + $row = $query->row(); + $invoice_id = $row->invoice_id; + + // Delete the item + parent::delete($item_id); + + // Delete the item amounts + $this->db->where('item_id', $item_id); + $this->db->delete('ip_invoice_item_amounts'); + + // Recalculate invoice amounts + $this->load->model('invoices/mdl_invoice_amounts'); + $this->mdl_invoice_amounts->calculate($invoice_id); + return $row; + } + + + public function Check_invoice($invoice_id,$item_id) + { + $this->db->select('*'); + $this->db->from('ip_invoice_items'); + + $this->db->where('item_product_id',$item_id); + $this->db->where('invoice_id',$invoice_id); + + + + $query = $this->db->get(); + //print_r( $this->db->last_query()); + return $query->result(); + } + + + + // public function get_invoice_custom_values($source_id) + // { + + // //echo $source_id; + // $this->db->select('*'); + // $this->db->from('ip_invoice_custom'); + // $this->db->where('ip_invoice_custom.invoice_id',$source_id); + // $query = $this->db->get(); + // // print_r($this->db->last_query()); + // return $query->result(); + // } + + + public function SaveFinalHistory($final_productarray) + { + $this->db->trans_start(); + $this->db->insert('T_FinalProduct_History',$final_productarray); + $insert_id = $this->db->affected_rows(); + $this->db->trans_complete(); + return true; + } + + + public function GetInvoiceDeatisl($invoice_id) + { + $this->db->select('invoice_number'); + $this->db->from('ip_invoices'); + $this->db->where('invoice_id',$invoice_id); + $query = $this->db->get(); + // print_r( $this->db->last_query()); + return $query->result(); + + } + + + + public function UpdateFinalHistory($final_productarray,$invoice_id,$itemproductid) + { + $this->db->where('invoice_id', $invoice_id); + $this->db->where('ProductCode', $itemproductid); + $this->db->update('T_FinalProduct_History', $final_productarray); + return TRUE; + } + + + + + + + +} \ No newline at end of file diff --git a/application/modules/invoices_1/models/Mdl_reports.php b/application/modules/invoices_1/models/Mdl_reports.php new file mode 100644 index 0000000..0b42d35 --- /dev/null +++ b/application/modules/invoices_1/models/Mdl_reports.php @@ -0,0 +1,1488 @@ +db->select('client_id, client_name, client_surname, CONCAT(client_name," ", client_surname) AS client_namesurname'); + + if ($from_date and $to_date and $client) { + + $from_date = date_to_mysql($from_date); + $to_date = date_to_mysql($to_date); + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) + + ) AS quantity"); + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE invoice_date_created >=' . $this->db->escape($from_date) . ' + AND invoice_date_created <= ' . $this->db->escape($to_date) . ' and client_name = '.$this->db->escape($client).' and invoice_status_id != 1 + )'); + + } + + else if ($from_date and $to_date) { + + $from_date = date_to_mysql($from_date); + $to_date = date_to_mysql($to_date); + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) + + ) AS quantity"); + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND invoice_date_created >= " . $this->db->escape($from_date) . " + AND invoice_date_created <= " . $this->db->escape($to_date) . " + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE invoice_date_created >=' . $this->db->escape($from_date) . ' + AND invoice_date_created <= ' . $this->db->escape($to_date) . ' and invoice_status_id != 1 + )'); + + } else if ($a and $b and $c and $client){ + + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND + case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + + + ) + + ) AS quantity"); + + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . ' and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = ' . $this->db->escape($b) . '+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . '-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = ' . $this->db->escape($b) . ' and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = ' . $this->db->escape($c) . ' and client_name = '.$this->db->escape($client).' and invoice_status_id != 1 + + )'); + + + + } + else if ($a and $b and $client){ + + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND + case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + + + ) + + ) AS quantity"); + + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and client_name = ".$this->db->escape($client)." and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE client_name = '.$this->db->escape($client).' and invoice_status_id != 1 + and case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . ' and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = ' . $this->db->escape($b) . '+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . '-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = ' . $this->db->escape($b) . ' and MONTH(invoice_date_created) <= 3 ) + end + + + )'); + + + + } + else if ($a and $b and $c){ + + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND + case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + + + ) + + ) AS quantity"); + + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = " . $this->db->escape($c) . " + + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . ' and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = ' . $this->db->escape($b) . '+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . '-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = ' . $this->db->escape($b) . ' and MONTH(invoice_date_created) <= 3 ) + end + AND monthname(invoice_date_created) = ' . $this->db->escape($c) . ' and invoice_status_id != 1 + + )'); + + + + } + else if ($a and $b){ + + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND + case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + + + ) + + ) AS quantity"); + + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = " . $this->db->escape($a) . " and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = " . $this->db->escape($b) . "+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = " . $this->db->escape($a) . "-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = " . $this->db->escape($b) . " and MONTH(invoice_date_created) <= 3 ) + end + + + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE invoice_status_id != 1 + and case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . ' and MONTH(invoice_date_created) >= 4 ) or ( YEAR( invoice_date_created) = ' . $this->db->escape($b) . '+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = ' . $this->db->escape($a) . '-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = ' . $this->db->escape($b) . ' and MONTH(invoice_date_created) <= 3 ) + end + + + )'); + + + + } + else if($client){ + // $a = date_to_mysql($a); + // $b = date_to_mysql($b); + // $c = date_to_mysql($c); + + $this->db->select(" + ( + SELECT COUNT(*) FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND client_name = " . $this->db->escape($client) . " + + ) AS invoice_count"); + $this->db->select(" + ( + select sum(item_quantity) from ip_invoice_items it + + WHERE it.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND client_name = " . $this->db->escape($client) . " + + ) + + ) AS quantity"); + + + $this->db->select(" + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND client_name = " . $this->db->escape($client) . " + ) + ) AS sales"); + + $this->db->select(" + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE ip_invoice_amounts.invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and invoice_status_id != 1 + AND client_name = " . $this->db->escape($client) . " + ) + ) AS sales_with_tax"); + + $this->db->where(' + client_id IN + ( + SELECT client_id FROM ip_invoices + WHERE client_name = ' . $this->db->escape($client) . ' and invoice_status_id != 1 + + )'); + + + + } + //$this->db->group_by('client_namesurname,quantity,invoice_count'); + $this->db->order_by('client_namesurname'); + + return $this->db->get('ip_clients')->result(); + } + + /** + * @param null $from_date + * @param null $to_date + * @return mixed + */ + public function payment_history($from_date = null, $to_date = null) + { + $this->load->model('payments/mdl_payments'); + + if ($from_date and $to_date) { + $from_date = date_to_mysql($from_date); + $to_date = date_to_mysql($to_date); + + $this->mdl_payments->where('payment_date >=', $from_date); + $this->mdl_payments->where('payment_date <=', $to_date); + } + + return $this->mdl_payments->get()->result(); + } + + /** + * @return mixed + */ + // public function invoice_a() + // { + + // $sql="SELECT invoice_amount_id,invoice_id,invoice_sign,invoice_item_subtotal,invoice_tax_total,invoice_total FROM kasiram9_InvoiceDEV.ip_invoice_amounts;"; + // $query = $this->db->query($sql); + // return $query->result(); + // print_r($query); + // } + public function invoice_aging() + { + $this->db->select('client_name, client_surname'); + + $this->db->select(' + ( + SELECT SUM(invoice_balance) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and ip_invoices.invoice_status_id != 1 + AND invoice_date_due <= DATE_SUB(NOW(),INTERVAL 1 DAY) + AND invoice_date_due >= DATE_SUB(NOW(), INTERVAL 30 DAY) + ) + ) AS range_1', false); + + $this->db->select(' + ( + SELECT SUM(invoice_balance) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and ip_invoices.invoice_status_id != 1 + AND invoice_date_due <= DATE_SUB(NOW(),INTERVAL 30 DAY) + AND invoice_date_due >= DATE_SUB(NOW(), INTERVAL 60 DAY) + ) + ) AS range_2', false); + $this->db->select(' + ( + SELECT SUM(invoice_balance) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and ip_invoices.invoice_status_id != 1 + AND invoice_date_due <= DATE_SUB(NOW(),INTERVAL 60 DAY) + AND invoice_date_due >= DATE_SUB(NOW(), INTERVAL 90 DAY) + ) + ) AS range_3', false); + + $this->db->select(' + ( + SELECT SUM(invoice_balance) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and ip_invoices.invoice_status_id != 1 + AND invoice_date_due <= DATE_SUB(NOW(),INTERVAL 90 DAY) + ) + ) AS range_4', false); + + $this->db->select(' + ( + SELECT SUM(invoice_balance) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices + WHERE ip_invoices.client_id = ip_clients.client_id and ip_invoices.invoice_status_id != 1 + AND invoice_date_due <= DATE_SUB(NOW(), INTERVAL 1 DAY) + ) + ) AS total_balance', false); + + $this->db->having('range_1 >', 0); + $this->db->or_having('range_2 >', 0); + $this->db->or_having('range_3 >', 0); + $this->db->or_having('range_4 >', 0); + $this->db->or_having('total_balance >', 0); + + return $this->db->get('ip_clients')->result(); + } + + + /** + * @param null $from_date + * @param null $to_date + * @param null $minQuantity + * @param null $maxQuantity + * @param bool $taxChecked + * @return mixed + */ + public function sales_by_year($from_date = null, $to_date = null, $minQuantity = null, $maxQuantity = null, $taxChecked = False) + { + if ($minQuantity == "") { + $minQuantity = 0; + } + + if ($from_date == "") { + $from_date = date("Y-m-d"); + } else { + $from_date = date_to_mysql($from_date); + } + + if ($to_date == "") { + $to_date = date("Y-m-d"); + } else { + $to_date = date_to_mysql($to_date); + } + + $from_date_year = intval(substr($from_date, 0, 4)); + $to_date_year = intval(substr($to_date, 0, 4)); + + $this->db->select('client_name as Name'); + $this->db->select('client_name'); + $this->db->select('client_surname'); + $this->db->select('CONCAT(client_name," ", client_surname) AS client_namesurname'); + + if ($taxChecked == false) { + + if ($maxQuantity) { + + $this->db->select('client_id'); + $this->db->select('client_vat_id AS VAT_ID'); + $this->db->select(' + ( + SELECT SUM(amounts.invoice_item_subtotal) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + ) + ) AS total_payment', false); + + for ($index = $from_date_year; $index <= $to_date_year; $index++) { + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-01-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-02-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-03-%\' + ) + ) + ) AS payment_t1_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-04-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-05-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-06-%\' + ) + ) + ) AS payment_t2_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-07-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-08-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-09-%\' + ) + ) + ) AS payment_t3_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-10-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-11-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-12-%\' + ) + ) + ) AS payment_t4_' . $index . '', false); + + } + + $this->db->where(' + ( + SELECT SUM(amounts.invoice_item_subtotal) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv.invoice_date_created + AND ' . $minQuantity . ' <= + ( + SELECT SUM(amounts2.invoice_item_subtotal) FROM ip_invoice_amounts amounts2 + WHERE amounts2.invoice_id IN + ( + SELECT inv2.invoice_id FROM ip_invoices inv2 + WHERE inv2.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv2.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv2.invoice_date_created + ) + ) AND ' . $maxQuantity . ' >= + ( + SELECT SUM(amounts3.invoice_item_subtotal) FROM ip_invoice_amounts amounts3 + WHERE amounts3.invoice_id IN + ( + SELECT inv3.invoice_id FROM ip_invoices inv3 + WHERE inv3.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv3.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv3.invoice_date_created + ) + ) + ) + ) <>0'); + + } else { + + $this->db->select('client_id'); + $this->db->select('client_vat_id AS VAT_ID'); + $this->db->select('client_name as Name'); + + $this->db->select(' + ( + SELECT SUM(amounts.invoice_item_subtotal) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + ) + ) AS total_payment', false); + + for ($index = $from_date_year; $index <= $to_date_year; $index++) { + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-01-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-02-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-03-%\' + ) + ) + ) AS payment_t1_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-04-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-05-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-06-%\' + ) + ) + ) AS payment_t2_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-07-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-08-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-09-%\' + ) + ) + ) AS payment_t3_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_item_subtotal) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-10-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-11-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-12-%\' + ) + ) + ) AS payment_t4_' . $index . '', false); + + } + + $this->db->where(' + ( + SELECT SUM(amounts.invoice_item_subtotal) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv.invoice_date_created + AND ' . $minQuantity . ' <= + ( + SELECT SUM(amounts2.invoice_item_subtotal) FROM ip_invoice_amounts amounts2 + WHERE amounts2.invoice_id IN + ( + SELECT inv2.invoice_id FROM ip_invoices inv2 + WHERE inv2.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv2.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv2.invoice_date_created + ) + ) + ) + ) <>0'); + + } + + } else if ($taxChecked == true) { + + if ($maxQuantity) { + + $this->db->select('client_id'); + $this->db->select('client_vat_id AS VAT_ID'); + $this->db->select('client_name as Name'); + + $this->db->select(' + ( + SELECT SUM(amounts.invoice_total) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + ) + ) AS total_payment', false); + + for ($index = $from_date_year; $index <= $to_date_year; $index++) { + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-01-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-02-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-03-%\' + ) + ) + ) AS payment_t1_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-04-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-05-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-06-%\' + ) + ) + ) AS payment_t2_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-07-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-08-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-09-%\' + ) + ) + ) AS payment_t3_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-10-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-11-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-12-%\' + ) + ) + ) AS payment_t4_' . $index . '', false); + + } + + $this->db->where(' + ( + SELECT SUM(amounts.invoice_total) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv.invoice_date_created + AND ' . $minQuantity . ' <= + ( + SELECT SUM(amounts2.invoice_total) FROM ip_invoice_amounts amounts2 + WHERE amounts2.invoice_id IN + ( + SELECT inv2.invoice_id FROM ip_invoices inv2 + WHERE inv2.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv2.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv2.invoice_date_created + ) + ) AND ' . $maxQuantity . ' >= + ( + SELECT SUM(amounts3.invoice_total) FROM ip_invoice_amounts amounts3 + WHERE amounts3.invoice_id IN + ( + SELECT inv3.invoice_id FROM ip_invoices inv3 + WHERE inv3.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv3.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv3.invoice_date_created + ) + ) + ) + ) <>0'); + + } else { + + $this->db->select('client_id'); + $this->db->select('client_vat_id AS VAT_ID'); + $this->db->select('client_name as Name'); + + $this->db->select(' + ( + SELECT SUM(amounts.invoice_total) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + ) + ) AS total_payment', false); + + for ($index = $from_date_year; $index <= $to_date_year; $index++) { + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-01-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-02-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-03-%\' + ) + ) + ) AS payment_t1_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-04-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-05-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-06-%\' + ) + ) + ) AS payment_t2_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-07-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-08-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-09-%\' + ) + ) + ) AS payment_t3_' . $index . '', false); + + $this->db->select(' + ( + SELECT SUM(invoice_total) FROM ip_invoice_amounts + WHERE invoice_id IN + ( + SELECT invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . '<= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . '>= inv.invoice_date_created + AND + ( + inv.invoice_date_created LIKE \'%' . $index . '-10-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-11-%\' + OR inv.invoice_date_created LIKE \'%' . $index . '-12-%\' + ) + ) + ) AS payment_t4_' . $index . '', false); + + } + + $this->db->where(' + ( + SELECT SUM(amounts.invoice_total) FROM ip_invoice_amounts amounts + WHERE amounts.invoice_id IN + ( + SELECT inv.invoice_id FROM ip_invoices inv + WHERE inv.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv.invoice_date_created + AND ' . $minQuantity . ' <= + ( + SELECT SUM(amounts2.invoice_total) FROM ip_invoice_amounts amounts2 + WHERE amounts2.invoice_id IN + ( + SELECT inv2.invoice_id FROM ip_invoices inv2 + WHERE inv2.client_id=ip_clients.client_id + AND ' . $this->db->escape($from_date) . ' <= inv2.invoice_date_created + AND ' . $this->db->escape($to_date) . ' >= inv2.invoice_date_created + ) + ) + ) + ) <>0'); + + } + + } + + $this->db->order_by('client_namesurname'); + return $this->db->get('ip_clients')->result(); + } + public function cumulative_report() + { + $sql="select distinct Year.client_id,Year.client_name,Year.product_id,Year.product_name,Year.invoice_count,Year.Qty,Year.Value,Month.Qty as MQty,Month.Value as MValue,Today.Qty as TQty,Today.Value as TValue from + (SELECT invoice.client_id as client_id,client.client_name as client_name,ifnull(count(invoice.invoice_id),0) as invoice_count,pro.product_id,pro.product_name,ifnull(sum(items.item_quantity),0) as Qty,ifnull(sum(amt.item_subtotal),0) as Value from ip_invoices invoice + join ip_clients client on invoice.client_id =client.client_id + left join ip_invoice_items items on invoice.invoice_id = items.invoice_id + left join ip_products pro on items.item_product_id = pro.product_id + left join ip_invoice_item_amounts amt on items.item_id = amt.item_id + where case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = YEAR(CURRENT_DATE) and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = YEAR(CURRENT_DATE)+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = YEAR(CURRENT_DATE)-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = YEAR(CURRENT_DATE) and MONTH(invoice_date_created) <= 3 ) + end and invoice.invoice_status_id != 1 + group by client_id,pro.product_id) as Year left join + + (SELECT invoice.client_id as client_id,client.client_name as client_name,ifnull(count(invoice.invoice_id),0) as invoice_count,pro.product_id,pro.product_name,ifnull(sum(items.item_quantity),0) as Qty,ifnull(sum(amt.item_subtotal),0) as Value from ip_invoices invoice + join ip_clients client on invoice.client_id =client.client_id + left join ip_invoice_items items on invoice.invoice_id = items.invoice_id + left join ip_products pro on items.item_product_id = pro.product_id + left join ip_invoice_item_amounts amt on items.item_id = amt.item_id + where month(invoice.invoice_date_created)=month(CURRENT_DATE()) and invoice.invoice_status_id != 1 + group by client_id,pro.product_id) as Month on Year.client_name = Month.client_name and Year.product_id = Month.product_id + + left join + (SELECT invoice.client_id as client_id,client.client_name as client_name,ifnull(count(invoice.invoice_id),0) as invoice_count,pro.product_id,pro.product_name,ifnull(sum(items.item_quantity),0) as Qty,ifnull(sum(amt.item_subtotal),0) as Value from ip_invoices invoice + join ip_clients client on invoice.client_id =client.client_id + left join ip_invoice_items items on invoice.invoice_id = items.invoice_id + left join ip_products pro on items.item_product_id = pro.product_id + left join ip_invoice_item_amounts amt on items.item_id = amt.item_id + where invoice.invoice_date_created=CURRENT_DATE and invoice.invoice_status_id != 1 + group by client_id,pro.product_id) as Today on Year.client_name = Today.client_name and Year.product_id = Today.product_id + + group by Year.client_id,Year.product_id;"; + $query = $this->db->query($sql); + return $query->result(); + + } + + + public function cumulative_report_year($clientid,$productid) + { + + $sql = "SELECT invoice.client_id as client_id,client.client_name as client_name,invoice.invoice_id as invoice_count,pro.product_id,pro.product_name,items.item_quantity as Qty,amt.item_subtotal as Value from ip_invoices invoice + join ip_clients client on invoice.client_id =client.client_id + left join ip_invoice_items items on invoice.invoice_id = items.invoice_id + left join ip_products pro on items.item_product_id = pro.product_id + left join ip_invoice_item_amounts amt on items.item_id = amt.item_id + where case + when (month(invoice_date_created) >=4) then + (YEAR(invoice_date_created) = YEAR(CURRENT_DATE) and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = YEAR(CURRENT_DATE)+1 and MONTH(invoice_date_created) <= 3 ) + else + (YEAR(invoice_date_created) = YEAR(CURRENT_DATE)-1 and MONTH(invoice_date_created) >= 4 ) or ( YEAR(invoice_date_created) = YEAR(CURRENT_DATE) and MONTH(invoice_date_created) <= 3 ) + end + and invoice.invoice_status_id != 1 and invoice.client_id = ? and items.item_product_id = ?"; + + + $query = $this->db->query($sql,array($clientid,$productid)); + return $query->result(); + + + } + + public function cumulative_report_month($clientid,$productid) + { + $sql = "SELECT invoice.client_id as client_id,client.client_name as client_name,invoice.invoice_id as invoice_count,pro.product_id,pro.product_name,items.item_quantity as MQty,amt.item_subtotal as MValue from ip_invoices invoice + join ip_clients client on invoice.client_id =client.client_id + left join ip_invoice_items items on invoice.invoice_id = items.invoice_id + left join ip_products pro on items.item_product_id = pro.product_id + left join ip_invoice_item_amounts amt on items.item_id = amt.item_id + where month(invoice.invoice_date_created)=month(CURRENT_DATE()) and invoice.invoice_status_id != 1 + and invoice.client_id = ? and items.item_product_id = ?"; + + $query = $this->db->query($sql,array($clientid,$productid)); + return $query->result(); + } + + public function cumulative_report_day($clientid,$productid) + { + + $sql = "SELECT invoice.invoice_number as invoice_number,invoice.client_id as client_id,client.client_name as client_name,invoice.invoice_id as invoice_count,pro.product_id,pro.product_name,items.item_quantity as TQty,amt.item_subtotal as TValue from ip_invoices invoice + join ip_clients client on invoice.client_id =client.client_id + left join ip_invoice_items items on invoice.invoice_id = items.invoice_id + left join ip_products pro on items.item_product_id = pro.product_id + left join ip_invoice_item_amounts amt on items.item_id = amt.item_id + where invoice.invoice_date_created=CURRENT_DATE and invoice.invoice_status_id != 1 and + invoice.client_id = ? and items.item_product_id = ? + "; + $query = $this->db->query($sql,array($clientid,$productid)); + return $query->result(); + + } + public function sales($cust=null,$prod=null,$a=null,$b=null,$c=null,$from=null,$to=null) + { + + $sql = "select ii.invoice_id as invoice_id,ii.client_id as client_id,ii.invoice_number as invoice_number,ii.invoice_date_created as invoice_date_created,TIME_FORMAT(ii.invoice_time_created,'%l:%i %p') as invoice_time_created,icf.invoice_custom_fieldvalue as vehicle_no,ip.product_description as product_description,concat(ic.client_name,'-',ic.client_surname)as client_name,sum(iit.item_quantity) as item_quantity,sum(iit.item_price) as item_price,sum(iia.item_subtotal) as item_subtotal, + sum(ifnull(((sgst.tax_rate_percent * (iit.item_quantity * iit.item_price))/100),0)) + as sgst, + sum(ifnull(((iit.item_quantity * iit.item_price) * cgst.tax_rate_percent)/100,0)) + as cgst, + sum(ifnull((igst.tax_rate_percent * (iit.item_quantity * iit.item_price))/100,0)) + as igst, + sum((iia.item_subtotal + ifnull(((sgst.tax_rate_percent * iia.item_subtotal)/100),0) + + + ifnull(((iia.item_subtotal * cgst.tax_rate_percent)/100),0) + + + ifnull(((igst.tax_rate_percent * iia.item_subtotal)/100),0))) + as total + from ip_invoices ii + join ip_invoice_custom icf on icf.invoice_id = ii.invoice_id + join ip_invoice_items iit on iit.invoice_id = ii.invoice_id + join ip_invoice_item_amounts iia on iia.item_id = iit.item_id + join ip_clients ic on ic.client_id = ii.client_id + join ip_products ip on ip.product_id = iit.item_product_id + left join ip_tax_rates sgst on sgst.tax_rate_id = iit.sgst_item_tax_rate_id + left join ip_tax_rates cgst on cgst.tax_rate_id = iit.cgst_item_tax_rate_id + left join ip_tax_rates igst on igst.tax_rate_id = iit.igst_item_tax_rate_id + where icf.invoice_custom_fieldid = '8' and ii.invoice_status_id != 1 "; + + + if ($prod!= ''){ + + $sql.="and iit.item_description = '".$prod."'"; + + } + + if ($cust!= '') + { + $sql.="and ic.client_name = '".$cust."'"; + } + if ($a and $b != ''){ + + $sql.=" and (ii.invoice_date_created >= '".$a."-04-01' and ii.invoice_date_created <= '".$b."-03-31')"; + + } + + if ($c!= ''){ + + $sql.="and monthname(ii.invoice_date_created) = '".$c."'"; + + } + + if ($from and $to != ''){ + $fromdate= date("Y-m-d",strtotime($from)); + $todate=date("Y-m-d",strtotime($to)); + + $sql.="and ii.invoice_date_created >= '".$fromdate."' + and ii.invoice_date_created <= '".$todate."'"; + + } + + + // echo $fromdate; + // echo $sql; + $sql.="group by invoice_number,item_description"; + $query = $this->db->query($sql); + return $query->result(); + + + } + public function sales_l($cname=null,$fa=null,$aa=null,$m=null,$frm=null,$t=null,$prod=null,$datec=null,$dmon=null) + { + + $sql = "select ii.invoice_id as invoice_id,ii.client_id as client_id,ii.invoice_number as invoice_number,ii.invoice_date_created as invoice_date_created,TIME_FORMAT(ii.invoice_time_created,'%l:%i %p') as invoice_time_created,icf.invoice_custom_fieldvalue as vehicle_no,ip.product_description as product_description,concat(ic.client_name,'-',ic.client_surname)as client_name,sum(iit.item_quantity) as item_quantity,sum(iit.item_price) as item_price,sum(iia.item_subtotal) as item_subtotal, + sum(ifnull(((sgst.tax_rate_percent * (iit.item_quantity * iit.item_price))/100),0)) + as sgst, + sum(ifnull(((iit.item_quantity * iit.item_price) * cgst.tax_rate_percent)/100,0)) + as cgst, + sum(ifnull((igst.tax_rate_percent * (iit.item_quantity * iit.item_price))/100,0)) + as igst, + sum((iia.item_subtotal + ifnull(((sgst.tax_rate_percent * iia.item_subtotal)/100),0) + + + ifnull(((iia.item_subtotal * cgst.tax_rate_percent)/100),0) + + + ifnull(((igst.tax_rate_percent * iia.item_subtotal)/100),0))) + as total + from ip_invoices ii + join ip_invoice_custom icf on icf.invoice_id = ii.invoice_id + join ip_invoice_items iit on iit.invoice_id = ii.invoice_id + join ip_invoice_item_amounts iia on iia.item_id = iit.item_id + join ip_clients ic on ic.client_id = ii.client_id + join ip_products ip on ip.product_id = iit.item_product_id + left join ip_tax_rates sgst on sgst.tax_rate_id = iit.sgst_item_tax_rate_id + left join ip_tax_rates cgst on cgst.tax_rate_id = iit.cgst_item_tax_rate_id + left join ip_tax_rates igst on igst.tax_rate_id = iit.igst_item_tax_rate_id + where icf.invoice_custom_fieldid = '8' and ii.invoice_status_id != 1 "; + + + + if ($cname!= ''){ + + $sql.="and ic.client_name = '".$cname."'"; + + } + + + + if ($fa and $aa != ''){ + + $sql.=" and (ii.invoice_date_created >= '".$fa."-04-01' and ii.invoice_date_created <= '".$aa."-03-31')"; + + } + if ($m!= ''){ + + $sql.="and monthname(ii.invoice_date_created) = '".$m."'"; + + } + + if ($frm and $t != ''){ + $fromd= date("Y-m-d",strtotime($frm)); + $tod=date("Y-m-d",strtotime($t)); + + $sql.="and ii.invoice_date_created >= '".$fromd."' + and ii.invoice_date_created <= '".$tod."'"; + + } + if ($prod!= ''){ + + $sql.=" and iit.item_description = '".$prod."' "; + + } + if ($dmon!= ''){ + $mon=substr($dmon,0,-5); + $mony=substr($dmon,3,4); + + $sql.="and year(ii.invoice_date_created) = year(CURRENT_DATE()) and month(ii.invoice_date_created) = MONTH(CURRENT_DATE())"; + + } + if ($datec!= ''){ + + $sql.="and ii.invoice_date_created = '".$datec."'"; + + } + + + // echo $mon; + // echo $mony; + // echo $sql; + $sql.=" group by invoice_number,item_description"; + $query = $this->db->query($sql); + return $query->result(); + + + } + public function sales_dashboard() + { + + $sql = "select ii.invoice_id as invoice_id,ii.client_id as client_id,ii.invoice_number as invoice_number,ii.invoice_date_created as invoice_date_created,TIME_FORMAT(ii.invoice_time_created,'%l:%i %p') as invoice_time_created,icf.invoice_custom_fieldvalue as vehicle_no,ip.product_description as product_description,concat(ic.client_name,'-',ic.client_surname)as client_name,sum(iit.item_quantity) as item_quantity,sum(iit.item_price) as item_price,sum(iia.item_subtotal) as item_subtotal, + sum(ifnull(((sgst.tax_rate_percent * (iit.item_quantity * iit.item_price))/100),0)) + as sgst, + sum(ifnull(((iit.item_quantity * iit.item_price) * cgst.tax_rate_percent)/100,0)) + as cgst, + sum(ifnull((igst.tax_rate_percent * (iit.item_quantity * iit.item_price))/100,0)) + as igst, + sum((iia.item_subtotal + ifnull(((sgst.tax_rate_percent * iia.item_subtotal)/100),0) + + + ifnull(((iia.item_subtotal * cgst.tax_rate_percent)/100),0) + + + ifnull(((igst.tax_rate_percent * iia.item_subtotal)/100),0))) + as total + from ip_invoices ii + join ip_invoice_custom icf on icf.invoice_id = ii.invoice_id + join ip_invoice_items iit on iit.invoice_id = ii.invoice_id + join ip_invoice_item_amounts iia on iia.item_id = iit.item_id + join ip_clients ic on ic.client_id = ii.client_id + join ip_products ip on ip.product_id = iit.item_product_id + left join ip_tax_rates sgst on sgst.tax_rate_id = iit.sgst_item_tax_rate_id + left join ip_tax_rates cgst on cgst.tax_rate_id = iit.cgst_item_tax_rate_id + left join ip_tax_rates igst on igst.tax_rate_id = iit.igst_item_tax_rate_id + where icf.invoice_custom_fieldid = '8' and ii.invoice_status_id != 1 and ii.invoice_date_created = CURRENT_DATE"; + $sql.=" group by invoice_number,item_description"; + $query = $this->db->query($sql); + return $query->result(); + + + } + +} diff --git a/application/modules/invoices_1/models/Mdl_templates.php b/application/modules/invoices_1/models/Mdl_templates.php new file mode 100644 index 0000000..22f6307 --- /dev/null +++ b/application/modules/invoices_1/models/Mdl_templates.php @@ -0,0 +1,70 @@ +load->helper('directory'); + + if ($type == 'pdf') { + + $templates = directory_map(APPPATH . '/views/invoice_templates/pdf', true); + } elseif ($type == 'public') { + $templates = directory_map(APPPATH . '/views/invoice_templates/public', true); + } + + $templates = $this->remove_extension($templates); + + return $templates; + } + + /** + * @param $files + * @return mixed + */ + private function remove_extension($files) + { + foreach ($files as $key => $file) { + $files[$key] = str_replace('.php', '', $file); + } + + return $files; + } + + /** + * @param string $type + * @return array|mixed + */ + public function get_quote_templates($type = 'pdf') + { + $this->load->helper('directory'); + + if ($type == 'pdf') { + $templates = directory_map(APPPATH . '/views/quote_templates/pdf', true); + } elseif ($type == 'public') { + $templates = directory_map(APPPATH . '/views/quote_templates/public', true); + } + + $templates = $this->remove_extension($templates); + + return $templates; + } + +} diff --git a/application/modules/invoices_1/models/view.php b/application/modules/invoices_1/models/view.php new file mode 100644 index 0000000..0ab14f9 --- /dev/null +++ b/application/modules/invoices_1/models/view.php @@ -0,0 +1,787 @@ +controller->view_data["custom_values"]; +$data=array(); +//print_r($cv); +$CustomVal = ''; +$Secondary = ''; + +//echo $quoteid; +//echo($qid); + +if($quoteid == '' && $qid != '') +{ + $quo = $qid; +} + +else if($qid == '' && $quoteid != '') +{ + $quo = $quoteid; +} + +else if($quoteid != '' || $qid != '') +{ + $quo = $qid; +} + +else +{ + $quo = ''; +} + + + + +if(!empty($Duedate)) +{ + foreach ($Duedate as $Due) + { + $CustomVal = $Due->client_custom_fieldvalue; + } +} + + +if(!empty($GetSecondary)) +{ + foreach ($GetSecondary as $GetSec) + { + $Secondary = $GetSec->Secondary; + } + + +} + + $inv_st=''; + //print_r($inv_status); + +foreach($inv_status as $st) +{ + $inv_st= $st->invoice_status_id; +} + +//echo $inv_st; + +$primarystatecode=''; +foreach ($GetClientPrimaryStateCode as $primary) +{ + $primarystatecode=$primary->client_custom_fieldvalue; +} + +$secondarystatecode=''; + +foreach ($GetClientSecondaryStateCode as $secondary) +{ + $secondarystatecode=$secondary->client_custom_fieldvalue; +} + + + + +//print_r($fields); +// echo $secondarystatecode; +// echo $primarystatecode; +//print_r($quotes); + + // echo $CustomVal ; +?> + + + + + +config->item('disable_read_only') == true) { + $invoice->is_read_only = 0; +} +?> + +
+ + + + invoice_status_id == 1 && !$invoice->creditinvoice_parent_id) { ?> + + +
+ + + + + + +| + | + | + | + | + | + | + | + |
|---|---|---|---|---|---|---|---|
| + + recur_status); ?> + + | ++ + invoice_number; ?> + + | ++ client_id, htmlsc($invoice->client_name)); ?> + | ++ recur_start_date); ?> + | ++ recur_end_date); ?> + | ++ recur_frequency]); ?> + | ++ recur_next_date); ?> | ++ + | +
| + | + |
|---|---|
| + + + + | + ++ + | + +
| + | + | + | + | + | + | + | + |
|---|---|---|---|---|---|---|---|
| + + + invoice_status_id]['label']; + if ($invoice->invoice_sign == '-1') { ?> + + is_read_only == 1) { ?> + + + + + | + ++ + invoice_number ? $invoice->invoice_number : $invoice->invoice_id); ?> + + | + ++ invoice_date_created); ?> + | + ++ + invoice_date_due); ?> + + | + ++ + + + | + ++ invoice_total); ?> + | + ++ invoice_balance); ?> + | + ++ + | +
| + | + | + | + | + | + | + | + | + | + | + | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| + + | + + + + + + + + | + sumex_id == ""): ?> + + +
+
+ |
+
+
+
+
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+ |
+
+
+
+ |
+
+ + + |
| + |
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+
+
+
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+ |
+ sumex_id == ""): ?>
+
+
+
+
+
+
+
+ |
+
+
+
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+ |
+
+
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+ |
+
+
+
+ is_read_only == 1) {
+ echo 'disabled="disabled"';
+ } ?>>
+
+ |
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+ |
+
+ + is_read_only != 1): ?> + + + + + | +
+ +
| + | + | + | + + |
|---|---|---|---|
| invoice_item_subtotal); ?> | +invoice_item_tax_total); ?> | ++ + + + | +invoice_total); ?> | +
+ + + + invoice_status_id == 1 && !$invoice->creditinvoice_parent_id) { ?> + + +
+ + + + + + ++ invoice_number ? '#' . $invoice->invoice_number : $invoice->invoice_id); + ?> +
+ + + + + ++ + invoice_status_id == 1) { ?> + + +
+ + client_address_1) ? $invoice->client_address_1 . '
' : ''; ?> + client_address_2) ? $invoice->client_address_2 . '
' : ''; ?> + client_city) ? $invoice->client_city : ''; ?> + client_state) ? $invoice->client_state : ''; ?> + client_zip) ? $invoice->client_zip : ''; ?> + client_country) ? '
' . $invoice->client_country : ''; ?> + +
+ client_phone): ?> + + : + client_phone; ?> + +
+ + client_email): ?> + + : + client_email; ?> + + +
+ ' . trans('birthdate') . ': ' . format_date($invoice->client_birthdate); ?> +
+ ' . trans('gender') . ': ' . format_gender($invoice->client_gender); ?> +
+
|
+
+
+
+
+ |
+
|
+
+
+
+
+ |
+
|
+
+
+
+ |
+
|
+
+
+
+
+ |
+
|
+
+
+
+
+ |
+
|
+
+
+
+
+ |
+
+ +
+ + + + +
+ : + invoice_url_key)); ?> +
+ + +