Esempio n. 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;
 }
Esempio n. 2
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);
 }
 public function testStandardizeAmount()
 {
     $this->assertEquals(standardize_amount(123.45), '123.45', 'pos: 1');
     $this->assertEquals(standardize_amount('1 234,02'), '1234.02', 'pos: 2');
     $this->assertEquals(standardize_amount('3 456,10'), '3456.10', 'pos: 3');
     $this->assertEquals(standardize_amount('3456.1'), '3456.1', 'pos: 4');
     $this->assertEquals(standardize_amount('3456,01 EURO'), '3456.01 EURO', 'pos: 5');
 }
Esempio n. 4
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);
 }
 public function db_array()
 {
     $db_array = parent::db_array();
     $db_array['product_price'] = empty($db_array['product_price']) ? null : standardize_amount($db_array['product_price']);
     $db_array['purchase_price'] = empty($db_array['purchase_price']) ? null : standardize_amount($db_array['purchase_price']);
     $db_array['family_id'] = empty($db_array['family_id']) ? null : $db_array['family_id'];
     $db_array['tax_rate_id'] = empty($db_array['tax_rate_id']) ? null : $db_array['tax_rate_id'];
     return $db_array;
 }
Esempio n. 6
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);
 }
Esempio n. 7
0
 public function form($id = NULL)
 {
     if ($this->input->post('btn_cancel')) {
         redirect('tax_rates');
     }
     if ($this->mdl_tax_rates->run_validation()) {
         $this->mdl_tax_rates->form_values['tax_rate_percent'] = standardize_amount($this->mdl_tax_rates->form_values['tax_rate_percent']);
         // We need to use the correct decimal point for sql IPT-310
         $db_array = $this->mdl_tax_rates->db_array();
         $db_array['tax_rate_percent'] = standardize_amount($this->input->post('tax_rate_percent'));
         $this->mdl_tax_rates->save($id, $db_array);
         redirect('tax_rates');
     }
     if ($id and !$this->input->post('btn_submit')) {
         if (!$this->mdl_tax_rates->prep_form($id)) {
             show_404();
         }
     }
     $this->layout->buffer('content', 'tax_rates/form');
     $this->layout->render();
 }
Esempio n. 8
0
 public function form($id = NULL)
 {
     if ($this->input->post('btn_cancel')) {
         redirect('products');
     }
     if ($this->mdl_products->run_validation()) {
         // We need to use the correct decimal point for sql IPT-310
         $db_array = $this->mdl_products->db_array();
         $db_array['product_price'] = standardize_amount($db_array['product_price']);
         $db_array['purchase_price'] = standardize_amount($db_array['purchase_price']);
         $this->mdl_products->save($id, $db_array);
         redirect('products');
     }
     if ($id and !$this->input->post('btn_submit')) {
         if (!$this->mdl_products->prep_form($id)) {
             show_404();
         }
     }
     $this->load->model('families/mdl_families');
     $this->load->model('tax_rates/mdl_tax_rates');
     $this->layout->set(array('families' => $this->mdl_families->get()->result(), 'tax_rates' => $this->mdl_tax_rates->get()->result()));
     $this->layout->buffer('content', 'products/form');
     $this->layout->render();
 }
Esempio n. 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) {
             // 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);
 }
Esempio n. 10
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;
 }
Esempio n. 11
0
 public function db_array()
 {
     $db_array = parent::db_array();
     $db_array['item_price'] = standardize_amount($db_array['item_price']);
     return $db_array;
 }
Esempio n. 12
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);
 }