Example #1
0
 public function db_array()
 {
     $db_array = parent::db_array();
     $db_array['task_finish_date'] = date_to_mysql($db_array['task_finish_date']);
     $db_array['task_price'] = standardize_amount($db_array['task_price']);
     return $db_array;
 }
Example #2
0
 public function save()
 {
     $this->load->model('invoices/mdl_items');
     $this->load->model('invoices/mdl_invoices');
     $invoice_id = $this->input->post('invoice_id');
     if ($this->mdl_invoices->run_validation('validation_rules_save_invoice')) {
         $items = json_decode($this->input->post('items'));
         foreach ($items as $item) {
             if ($item->item_name) {
                 $this->mdl_items->save($invoice_id, isset($item->item_id) ? $item->item_id : NULL, $item);
             }
         }
         $db_array = array('invoice_number' => $this->input->post('invoice_number'), 'invoice_terms' => $this->input->post('invoice_terms'), 'invoice_date_created' => date_to_mysql($this->input->post('invoice_date_created')), 'invoice_date_due' => date_to_mysql($this->input->post('invoice_date_due')));
         $this->mdl_invoices->save($invoice_id, $db_array);
         $response = array('success' => 1);
     } else {
         $this->load->helper('json_error');
         $response = array('success' => 0, 'validation_errors' => json_errors());
     }
     if ($this->input->post('custom')) {
         $db_array = array();
         foreach ($this->input->post('custom') as $custom) {
             // I hate myself for this...
             $db_array[str_replace(']', '', str_replace('custom[', '', $custom['name']))] = $custom['value'];
         }
         $this->load->model('custom_fields/mdl_invoice_custom');
         $this->mdl_invoice_custom->save_custom($invoice_id, $db_array);
     }
     echo json_encode($response);
 }
Example #3
0
 public function save()
 {
     $this->load->model('quotes/mdl_quote_items');
     $this->load->model('quotes/mdl_quotes');
     $this->load->model('item_lookups/mdl_item_lookups');
     $this->load->library('encrypt');
     $quote_id = $this->input->post('quote_id');
     $this->mdl_quotes->set_id($quote_id);
     if ($this->mdl_quotes->run_validation('validation_rules_save_quote')) {
         $items = json_decode($this->input->post('items'));
         foreach ($items as $item) {
             if ($item->item_name) {
                 $item->item_quantity = $item->item_quantity ? standardize_amount($item->item_quantity) : floatval(0);
                 $item->item_price = $item->item_quantity ? standardize_amount($item->item_price) : floatval(0);
                 $item->item_discount_amount = $item->item_discount_amount ? standardize_amount($item->item_discount_amount) : null;
                 $item->item_product_id = $item->item_product_id ? $item->item_product_id : null;
                 $item_id = $item->item_id ?: null;
                 unset($item->item_id);
                 $this->mdl_quote_items->save($item_id, $item);
             }
         }
         if ($this->input->post('quote_discount_amount') === '') {
             $quote_discount_amount = floatval(0);
         } else {
             $quote_discount_amount = $this->input->post('quote_discount_amount');
         }
         if ($this->input->post('quote_discount_percent') === '') {
             $quote_discount_percent = floatval(0);
         } else {
             $quote_discount_percent = $this->input->post('quote_discount_percent');
         }
         // Generate new quote number if needed
         $quote_number = $this->input->post('quote_number');
         $quote_status_id = $this->input->post('quote_status_id');
         if (empty($quote_number) && $quote_status_id != 1) {
             $quote_group_id = $this->mdl_quotes->get_invoice_group_id($quote_id);
             $quote_number = $this->mdl_quotes->get_quote_number($quote_group_id);
         }
         $db_array = array('quote_number' => $quote_number, 'quote_date_created' => date_to_mysql($this->input->post('quote_date_created')), 'quote_date_expires' => date_to_mysql($this->input->post('quote_date_expires')), 'quote_status_id' => $quote_status_id, 'quote_password' => $this->input->post('quote_password'), 'notes' => $this->input->post('notes'), 'quote_discount_amount' => $quote_discount_amount, 'quote_discount_percent' => $quote_discount_percent);
         $this->mdl_quotes->save($quote_id, $db_array);
         // Recalculate for discounts
         $this->load->model('quotes/mdl_quote_amounts');
         $this->mdl_quote_amounts->calculate($quote_id);
         $response = array('success' => 1);
     } else {
         $this->load->helper('json_error');
         $response = array('success' => 0, 'validation_errors' => json_errors());
     }
     if ($this->input->post('custom')) {
         $db_array = array();
         foreach ($this->input->post('custom') as $custom) {
             // I hate myself for this...
             $db_array[str_replace(']', '', str_replace('custom[', '', $custom['name']))] = $custom['value'];
         }
         $this->load->model('custom_fields/mdl_quote_custom');
         $this->mdl_quote_custom->save_custom($quote_id, $db_array);
     }
     echo json_encode($response);
 }
/**
 * Adds interval to user formatted date and returns user formatted date
 * To be used when date is being output back to user
 * @param $date - user formatted date
 * @param $increment - interval (1D, 2M, 1Y, etc)
 * @return user formatted date
 */
function increment_user_date($date, $increment)
{
    $CI =& get_instance();
    $mysql_date = date_to_mysql($date);
    $new_date = new DateTime($mysql_date);
    $new_date->add(new DateInterval('P' . $increment));
    return $new_date->format($CI->mdl_settings->setting('date_format'));
}
Example #5
0
 public function save()
 {
     $this->load->model('quotes/mdl_quote_items');
     $this->load->model('quotes/mdl_quotes');
     $this->load->model('item_lookups/mdl_item_lookups');
     $this->load->library('encrypt');
     $quote_id = $this->input->post('quote_id');
     $this->mdl_quotes->set_id($quote_id);
     if ($this->mdl_quotes->run_validation('validation_rules_save_quote')) {
         $items = json_decode($this->input->post('items'));
         # print_r($items);
         foreach ($items as $item) {
             if ($item->item_name) {
                 $item->item_quantity = standardize_amount($item->item_quantity);
                 $item->item_price = standardize_amount($item->item_price);
                 $item->item_discount_amount = standardize_amount($item->item_discount_amount);
                 # $item->item_cost = $item_cost;
                 $item_id = $item->item_id ?: NULL;
                 $save_item_as_lookup = isset($item->save_item_as_lookup) ? $item->save_item_as_lookup : 0;
                 unset($item->item_id, $item->save_item_as_lookup);
                 $this->mdl_quote_items->save($quote_id, $item_id, $item);
                 if ($save_item_as_lookup) {
                     $db_array = array('item_name' => $item->item_name, 'item_description' => $item->item_description, 'item_price' => $item->item_price);
                     $this->mdl_item_lookups->save(NULL, $db_array);
                 }
             }
         }
         if ($this->input->post('quote_discount_amount') === '') {
             $quote_discount_amount = floatval(0);
         } else {
             $quote_discount_amount = $this->input->post('quote_discount_amount');
         }
         if ($this->input->post('quote_discount_percent') === '') {
             $quote_discount_percent = floatval(0);
         } else {
             $quote_discount_percent = $this->input->post('quote_discount_percent');
         }
         $db_array = array('quote_total_cost' => $this->input->post('quote_total_cost'), 'quote_nett_profit' => $this->input->post('quote_nett_profit'), 'quote_total_profit' => $this->input->post('quote_total_profit'), 'quote_number' => $this->input->post('quote_number'), 'quote_date_created' => date_to_mysql($this->input->post('quote_date_created')), 'quote_date_expires' => date_to_mysql($this->input->post('quote_date_expires')), 'quote_status_id' => $this->input->post('quote_status_id'), 'quote_password' => $this->input->post('quote_password'), 'notes' => $this->input->post('notes'), 'quote_discount_amount' => $quote_discount_amount, 'quote_discount_percent' => $quote_discount_percent);
         $this->mdl_quotes->save($quote_id, $db_array);
         // Recalculate for discounts
         $this->load->model('quotes/mdl_quote_amounts');
         $this->mdl_quote_amounts->calculate($quote_id);
         $response = array('success' => 1);
     } else {
         $this->load->helper('json_error');
         $response = array('success' => 0, 'validation_errors' => json_errors());
     }
     if ($this->input->post('custom')) {
         $db_array = array();
         foreach ($this->input->post('custom') as $custom) {
             // I hate myself for this...
             $db_array[str_replace(']', '', str_replace('custom[', '', $custom['name']))] = $custom['value'];
         }
         $this->load->model('custom_fields/mdl_quote_custom');
         $this->mdl_quote_custom->save_custom($quote_id, $db_array);
     }
     echo json_encode($response);
 }
Example #6
0
 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();
 }
 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;
 }
 public function db_array()
 {
     $db_array = parent::db_array();
     // Get the client id for the submitted invoice
     $this->load->model('clients/mdl_clients');
     $db_array['client_id'] = $this->mdl_clients->client_lookup($db_array['client_name']);
     unset($db_array['client_name']);
     $db_array['invoice_date_created'] = date_to_mysql($db_array['invoice_date_created']);
     // Calculate the invoice date due
     $invoice_due_date = new DateTime($db_array['invoice_date_created']);
     $invoice_due_date->add(new DateInterval('P' . $this->mdl_settings->setting('invoices_due_after') . 'D'));
     $db_array['invoice_date_due'] = $invoice_due_date->format('Y-m-d');
     // Get the next invoice number for the selected invoice group
     $this->load->model('invoice_groups/mdl_invoice_groups');
     $db_array['invoice_number'] = $this->mdl_invoice_groups->generate_invoice_number($db_array['invoice_group_id']);
     $db_array['invoice_terms'] = $this->mdl_settings->setting('default_invoice_terms');
     // Generate the unique url key
     $db_array['invoice_url_key'] = $this->get_url_key();
     return $db_array;
 }
Example #9
0
 public function save()
 {
     $this->load->model('invoices/mdl_items');
     $this->load->model('invoices/mdl_invoices');
     $this->load->model('item_lookups/mdl_item_lookups');
     $invoice_id = $this->input->post('invoice_id');
     $this->mdl_invoices->set_id($invoice_id);
     if ($this->mdl_invoices->run_validation('validation_rules_save_invoice')) {
         $items = json_decode($this->input->post('items'));
         foreach ($items as $item) {
             if ($item->item_name) {
                 $item->item_quantity = standardize_amount($item->item_quantity);
                 $item->item_price = standardize_amount($item->item_price);
                 $item_id = $item->item_id ?: NULL;
                 $save_item_as_lookup = isset($item->save_item_as_lookup) ? $item->save_item_as_lookup : 0;
                 unset($item->item_id, $item->save_item_as_lookup);
                 $this->mdl_items->save($invoice_id, $item_id, $item);
                 if ($save_item_as_lookup) {
                     $db_array = array('item_name' => $item->item_name, 'item_description' => $item->item_description, 'item_price' => $item->item_price);
                     $this->mdl_item_lookups->save(NULL, $db_array);
                 }
             }
         }
         $db_array = array('invoice_number' => $this->input->post('invoice_number'), 'invoice_terms' => $this->input->post('invoice_terms'), 'invoice_date_created' => date_to_mysql($this->input->post('invoice_date_created')), 'invoice_date_due' => date_to_mysql($this->input->post('invoice_date_due')), 'invoice_status_id' => $this->input->post('invoice_status_id'));
         $this->mdl_invoices->save($invoice_id, $db_array);
         $response = array('success' => 1);
     } else {
         $this->load->helper('json_error');
         $response = array('success' => 0, 'validation_errors' => json_errors());
     }
     if ($this->input->post('custom')) {
         $db_array = array();
         foreach ($this->input->post('custom') as $custom) {
             // I hate myself for this...
             $db_array[str_replace(']', '', str_replace('custom[', '', $custom['name']))] = $custom['value'];
         }
         $this->load->model('custom_fields/mdl_invoice_custom');
         $this->mdl_invoice_custom->save_custom($invoice_id, $db_array);
     }
     echo json_encode($response);
 }
Example #10
0
 /**
  * index
  *
  * @param String vid id del cliente en la bd
  */
 public function index($cli = null)
 {
     $fi = $this->input->post('fi');
     $ff = $this->input->post('ff');
     if ($fi == FALSE) {
         $fi = date('d/m/Y');
     }
     if ($ff == FALSE) {
         $ff = date('d/m/Y');
     }
     $content['fi'] = $fi;
     $content['ff'] = $ff;
     $fi = date_to_mysql($fi) . ' 00:00';
     $ff = date_to_mysql($ff) . ' 23:00';
     if (is_null($cli)) {
         $cli = $this->input->post('cli');
         if ($cli == FALSE) {
             $cli = NULL;
         }
     }
     $fechas_seleccionadas_comision = array('fi' => $fi, 'ff' => $ff);
     $content['cli'] = $cli;
     // Informacion del cliente
     $content['cliente'] = $this->proy_model->get($cli);
     // Recuperar la informacion de los referente 1
     $content['referentes_uno'] = $this->proy_model->get_referrings($cli, 1, array('fi' => $fi, 'ff' => $ff));
     // echo json_encode($content);
     // Recuperar la informacion de los referente 2
     $content['referentes_dos'] = $this->proy_model->get_referrings($cli, 2, array('fi' => $fi, 'ff' => $ff));
     //adicion de estado pago
     $content['payed'] = $this->proy_model->checLiqProm(date_to_mysql($content['fi']), date_to_mysql($content['ff']), $cli);
     $this->session->set_userdata($fechas_seleccionadas_comision);
     // que tengan ventas.
     // Set comisions dates to Session
     $this->load->view('comisiones_format_view', $content);
     //$this->run('comisiones_format_view',$content,' Liquidación de Comisiones ', $menu, array('date', 'jquery.datePicker'), array('datePicker'));
 }
 public function db_array()
 {
     $db_array = parent::db_array();
     $db_array['payment_date'] = date_to_mysql($db_array['payment_date']);
     return $db_array;
 }
Example #12
0
 public function db_array()
 {
     $db_array = parent::db_array();
     // Get the client id for the submitted invoice
     $this->load->model('clients/mdl_clients');
     $db_array['client_id'] = $this->mdl_clients->client_lookup($db_array['client_name']);
     unset($db_array['client_name']);
     $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_number'] = $this->get_invoice_number($db_array['invoice_group_id']);
     $db_array['invoice_terms'] = $this->mdl_settings->setting('default_invoice_terms');
     if (!isset($db_array['invoice_status_id'])) {
         $db_array['invoice_status_id'] = 1;
     }
     // Generate the unique url key
     $db_array['invoice_url_key'] = $this->get_url_key();
     return $db_array;
 }
Example #13
0
 public function save()
 {
     $this->load->model('invoices/mdl_items');
     $this->load->model('invoices/mdl_invoices');
     $this->load->model('item_lookups/mdl_item_lookups');
     $invoice_id = $this->input->post('invoice_id');
     $this->mdl_invoices->set_id($invoice_id);
     if ($this->mdl_invoices->run_validation('validation_rules_save_invoice')) {
         $items = json_decode($this->input->post('items'));
         foreach ($items as $item) {
             // Check if an item has either a quantity + price or name or description
             if (!empty($item->item_name)) {
                 $item->item_quantity = $item->item_quantity ? standardize_amount($item->item_quantity) : floatval(0);
                 $item->item_price = $item->item_quantity ? standardize_amount($item->item_price) : floatval(0);
                 $item->item_discount_amount = $item->item_discount_amount ? standardize_amount($item->item_discount_amount) : null;
                 $item->item_product_id = $item->item_product_id ? $item->item_product_id : null;
                 $item_id = $item->item_id ?: null;
                 unset($item->item_id);
                 $this->mdl_items->save($item_id, $item);
             } else {
                 // Throw an error message and use the form validation for that
                 $this->load->library('form_validation');
                 $this->form_validation->set_rules('item_name', trans('item'), 'required');
                 $this->form_validation->run();
                 $response = array('success' => 0, 'validation_errors' => array('item_name' => form_error('item_name', '', '')));
                 echo json_encode($response);
                 exit;
             }
         }
         $invoice_status = $this->input->post('invoice_status_id');
         if ($this->input->post('invoice_discount_amount') === '') {
             $invoice_discount_amount = floatval(0);
         } else {
             $invoice_discount_amount = $this->input->post('invoice_discount_amount');
         }
         if ($this->input->post('invoice_discount_percent') === '') {
             $invoice_discount_percent = floatval(0);
         } else {
             $invoice_discount_percent = $this->input->post('invoice_discount_percent');
         }
         // Generate new invoice number if needed
         $invoice_number = $this->input->post('invoice_number');
         if (empty($invoice_number) && $invoice_status != 1) {
             $invoice_group_id = $this->mdl_invoices->get_invoice_group_id($invoice_id);
             $invoice_number = $this->mdl_invoices->get_invoice_number($invoice_group_id);
         }
         $db_array = array('invoice_number' => $invoice_number, 'invoice_terms' => $this->input->post('invoice_terms'), 'invoice_date_created' => date_to_mysql($this->input->post('invoice_date_created')), 'invoice_date_due' => date_to_mysql($this->input->post('invoice_date_due')), 'invoice_password' => $this->input->post('invoice_password'), 'invoice_status_id' => $invoice_status, 'payment_method' => $this->input->post('payment_method'), 'invoice_discount_amount' => $invoice_discount_amount, 'invoice_discount_percent' => $invoice_discount_percent);
         // check if status changed to sent, the feature is enabled and settings is set to sent
         if ($this->config->item('disable_read_only') === false) {
             if ($invoice_status == $this->mdl_settings->setting('read_only_toggle')) {
                 $db_array['is_read_only'] = 1;
             }
         }
         $this->mdl_invoices->save($invoice_id, $db_array);
         // Recalculate for discounts
         $this->load->model('invoices/mdl_invoice_amounts');
         $this->mdl_invoice_amounts->calculate($invoice_id);
         $response = array('success' => 1);
     } else {
         $this->load->helper('json_error');
         $response = array('success' => 0, 'validation_errors' => json_errors());
     }
     // Save all custom fields
     if ($this->input->post('custom')) {
         $db_array = array();
         foreach ($this->input->post('custom') as $custom) {
             $db_array[str_replace(']', '', str_replace('custom[', '', $custom['name']))] = $custom['value'];
         }
         $this->load->model('custom_fields/mdl_invoice_custom');
         $this->mdl_invoice_custom->save_custom($invoice_id, $db_array);
     }
     echo json_encode($response);
 }
Example #14
0
 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));
     if ($taxChecked == FALSE) {
         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_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_name');
     return $this->db->get('ip_clients')->result();
 }
Example #15
0
 public function save()
 {
     $this->load->model('invoices/mdl_items');
     $this->load->model('invoices/mdl_invoices');
     $this->load->model('item_lookups/mdl_item_lookups');
     $invoice_id = $this->input->post('invoice_id');
     $this->mdl_invoices->set_id($invoice_id);
     if ($this->mdl_invoices->run_validation('validation_rules_save_invoice')) {
         $items = json_decode($this->input->post('items'));
         foreach ($items as $item) {
             // Check if an item has either a quantity + price or name or description
             if (!empty($item->item_quantity) && !empty($item->item_price) || !empty($item->item_name) || !empty($item->item_description)) {
                 $item->item_quantity = standardize_amount($item->item_quantity);
                 $item->item_price = standardize_amount($item->item_price);
                 $item->item_discount_amount = standardize_amount($item->item_discount_amount);
                 $item_id = $item->item_id ?: NULL;
                 unset($item->item_id, $item->save_item_as_lookup);
                 $this->mdl_items->save($invoice_id, $item_id, $item);
             } else {
                 // Throw an error message and use the form validation for that
                 $this->load->library('form_validation');
                 $this->form_validation->set_rules('item_name', lang('item'), 'required');
                 $this->form_validation->set_rules('item_description', lang('description'), 'required');
                 $this->form_validation->set_rules('item_quantity', lang('quantity'), 'required');
                 $this->form_validation->set_rules('item_price', lang('price'), 'required');
                 $this->form_validation->run();
                 $response = array('success' => 0, 'validation_errors' => array('item_name' => form_error('item_name', '', ''), 'item_description' => form_error('item_description', '', ''), 'item_quantity' => form_error('item_quantity', '', ''), 'item_price' => form_error('item_price', '', '')));
                 echo json_encode($response);
                 exit;
             }
         }
         $invoice_status = $this->input->post('invoice_status_id');
         if ($this->input->post('invoice_discount_amount') === '') {
             $invoice_discount_amount = floatval(0);
         } else {
             $invoice_discount_amount = $this->input->post('invoice_discount_amount');
         }
         if ($this->input->post('invoice_discount_percent') === '') {
             $invoice_discount_percent = floatval(0);
         } else {
             $invoice_discount_percent = $this->input->post('invoice_discount_percent');
         }
         $db_array = array('invoice_number' => $this->input->post('invoice_number'), 'invoice_terms' => $this->input->post('invoice_terms'), 'invoice_date_created' => date_to_mysql($this->input->post('invoice_date_created')), 'invoice_date_due' => date_to_mysql($this->input->post('invoice_date_due')), 'invoice_password' => $this->input->post('invoice_password'), 'invoice_status_id' => $invoice_status, 'payment_method' => $this->input->post('payment_method'), 'invoice_discount_amount' => $invoice_discount_amount, 'invoice_discount_percent' => $invoice_discount_percent);
         // check if status changed to sent, the feature is enabled and settings is set to sent
         if ($invoice_status == 2 && $this->config->item('disable_read_only') == FALSE && $this->mdl_settings->setting('read_only_toggle') == 'sent') {
             $db_array['is_read_only'] = 1;
         }
         // check if status changed to viewed, the feature is enabled and settings is set to viewed
         if ($invoice_status == 3 && $this->config->item('disable_read_only') == FALSE && $this->mdl_settings->setting('read_only_toggle') == 'viewed') {
             $db_array['is_read_only'] = 1;
         }
         // check if status changed to paid and the feature is enabled
         if ($invoice_status == 4 && $this->config->item('disable_read_only') == FALSE && $this->mdl_settings->setting('read_only_toggle') == 'paid') {
             $db_array['is_read_only'] = 1;
         }
         $this->mdl_invoices->save($invoice_id, $db_array);
         // Recalculate for discounts
         $this->load->model('invoices/mdl_invoice_amounts');
         $this->mdl_invoice_amounts->calculate($invoice_id);
         $response = array('success' => 1);
     } else {
         $this->load->helper('json_error');
         $response = array('success' => 0, 'validation_errors' => json_errors());
     }
     if ($this->input->post('custom')) {
         $db_array = array();
         foreach ($this->input->post('custom') as $custom) {
             // I hate myself for this...
             $db_array[str_replace(']', '', str_replace('custom[', '', $custom['name']))] = $custom['value'];
         }
         $this->load->model('custom_fields/mdl_invoice_custom');
         $this->mdl_invoice_custom->save_custom($invoice_id, $db_array);
     }
     echo json_encode($response);
 }
Example #16
0
 public function db_array()
 {
     $db_array = parent::db_array();
     $db_array['payment_date'] = date_to_mysql($db_array['payment_date']);
     $db_array['payment_amount'] = standardize_amount($db_array['payment_amount']);
     return $db_array;
 }
 public function db_array()
 {
     $db_array = parent::db_array();
     // Get the client id for the submitted quote
     $this->load->model('clients/mdl_clients');
     $db_array['client_id'] = $this->mdl_clients->client_lookup($db_array['client_name']);
     unset($db_array['client_name']);
     $db_array['quote_date_created'] = date_to_mysql($db_array['quote_date_created']);
     $db_array['quote_date_expires'] = $this->get_date_due($db_array['quote_date_created']);
     $db_array['notes'] = $this->mdl_settings->setting('default_quote_notes');
     if (!isset($db_array['quote_status_id'])) {
         $db_array['quote_status_id'] = 1;
     }
     $generate_quote_number = $this->mdl_settings->setting('generate_quote_number_for_draft');
     if ($db_array['quote_status_id'] === 1 && $generate_quote_number == 1) {
         $db_array['quote_number'] = $this->get_quote_number($db_array['invoice_group_id']);
     } elseif ($db_array['quote_status_id'] != 1) {
         $db_array['quote_number'] = $this->get_quote_number($db_array['invoice_group_id']);
     } else {
         $db_array['quote_number'] = '';
     }
     // Generate the unique url key
     $db_array['quote_url_key'] = $this->get_url_key();
     return $db_array;
 }