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; }
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'); }
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; }
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); }
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(); }
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(); }
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); }
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(); $db_array['item_price'] = standardize_amount($db_array['item_price']); return $db_array; }
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); }