Updates for exchange rate validation

This commit is contained in:
David Bomba 2023-07-16 20:34:31 +10:00
parent a3febc9388
commit 6bbf3dface
14 changed files with 99 additions and 22 deletions

View File

@ -135,25 +135,44 @@ class QuoteItemExport extends BaseExport
$transformed_items = []; $transformed_items = [];
foreach ($quote->line_items as $item) { $transformed_items = [];
$item_array = [];
foreach (array_values($this->input['report_keys']) as $key) { foreach ($quote->line_items as $item) {
if (str_contains($key, 'item.')) { $item_array = [];
$key = str_replace('item.', '', $key);
$item_array[$key] = $item->{$key}; foreach (array_values($this->input['report_keys']) as $key) { //items iterator produces item array
if (str_contains($key, "item.")) {
$key = str_replace("item.", "", $key);
$keyval = $key;
$keyval = str_replace("custom_value", "quote", $key);
if($key == 'type_id')
$keyval = 'type';
if($key == 'tax_id')
$keyval = 'tax_category';
if (property_exists($item, $key)) {
$item_array[$keyval] = $item->{$key};
} else {
$item_array[$keyval] = '';
}
} }
} }
$entity = []; $entity = [];
foreach (array_values($this->input['report_keys']) as $key) { foreach (array_values($this->input['report_keys']) as $key) { //create an array of report keys only
$keyval = array_search($key, $this->entity_keys); $keyval = array_search($key, $this->entity_keys);
if (array_key_exists($key, $transformed_items)) { if (array_key_exists($key, $transformed_items)) {
$entity[$keyval] = $transformed_items[$key]; $entity[$keyval] = $transformed_items[$key];
} else { } else {
$entity[$keyval] = ''; $entity[$keyval] = "";
} }
} }
@ -173,16 +192,26 @@ class QuoteItemExport extends BaseExport
foreach (array_values($this->input['report_keys']) as $key) { foreach (array_values($this->input['report_keys']) as $key) {
$keyval = array_search($key, $this->entity_keys); $keyval = array_search($key, $this->entity_keys);
if(!$keyval) {
$keyval = array_search(str_replace("quote.", "", $key), $this->entity_keys) ?? $key;
}
if(!$keyval) {
$keyval = $key;
}
if (array_key_exists($key, $transformed_quote)) { if (array_key_exists($key, $transformed_quote)) {
$entity[$keyval] = $transformed_quote[$key]; $entity[$keyval] = $transformed_quote[$key];
} else { } elseif (array_key_exists($keyval, $transformed_quote)) {
$entity[$keyval] = ''; $entity[$keyval] = $transformed_quote[$keyval];
}
else {
$entity[$keyval] = $this->resolveKey($keyval, $quote, $this->quote_transformer);
} }
} }
return $this->decorateAdvancedFields($quote, $entity); return $this->decorateAdvancedFields($quote, $entity);
} }
private function decorateAdvancedFields(Quote $quote, array $entity) :array private function decorateAdvancedFields(Quote $quote, array $entity) :array
{ {
if (in_array('currency_id', $this->input['report_keys'])) { if (in_array('currency_id', $this->input['report_keys'])) {

View File

@ -49,7 +49,7 @@ class CreditFactory
$credit->user_id = $user_id; $credit->user_id = $user_id;
$credit->company_id = $company_id; $credit->company_id = $company_id;
$credit->recurring_id = null; $credit->recurring_id = null;
$credit->exchange_rate = 1;
return $credit; return $credit;
} }
} }

View File

@ -49,7 +49,8 @@ class PurchaseOrderFactory
$purchase_order->user_id = $user_id; $purchase_order->user_id = $user_id;
$purchase_order->company_id = $company_id; $purchase_order->company_id = $company_id;
$purchase_order->recurring_id = null; $purchase_order->recurring_id = null;
$purchase_order->exchange_rate = 1;
return $purchase_order; return $purchase_order;
} }
} }

View File

@ -46,6 +46,7 @@ class QuoteFactory
$quote->user_id = $user_id; $quote->user_id = $user_id;
$quote->company_id = $company_id; $quote->company_id = $company_id;
$quote->paid_to_date = 0; $quote->paid_to_date = 0;
$quote->exchange_rate = 1;
return $quote; return $quote;
} }

View File

@ -67,7 +67,8 @@ class StoreCreditRequest extends Request
$rules['tax_name1'] = 'bail|sometimes|string|nullable'; $rules['tax_name1'] = 'bail|sometimes|string|nullable';
$rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name2'] = 'bail|sometimes|string|nullable';
$rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
if ($this->invoice_id) { if ($this->invoice_id) {
$rules['invoice_id'] = new ValidInvoiceCreditRule(); $rules['invoice_id'] = new ValidInvoiceCreditRule();
} }
@ -88,7 +89,11 @@ class StoreCreditRequest extends Request
$input = $this->decodePrimaryKeys($input); $input = $this->decodePrimaryKeys($input);
$input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : [];
//$input['line_items'] = json_encode($input['line_items']);
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -67,7 +67,8 @@ class UpdateCreditRequest extends Request
$rules['tax_name1'] = 'bail|sometimes|string|nullable'; $rules['tax_name1'] = 'bail|sometimes|string|nullable';
$rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name2'] = 'bail|sometimes|string|nullable';
$rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }
@ -81,6 +82,10 @@ class UpdateCreditRequest extends Request
$input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : [];
} }
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$input['id'] = $this->credit->id; $input['id'] = $this->credit->id;
$this->replace($input); $this->replace($input);

View File

@ -72,7 +72,8 @@ class StoreInvoiceRequest extends Request
$rules['tax_name1'] = 'bail|sometimes|string|nullable'; $rules['tax_name1'] = 'bail|sometimes|string|nullable';
$rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name2'] = 'bail|sometimes|string|nullable';
$rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }

View File

@ -72,7 +72,8 @@ class UpdateInvoiceRequest extends Request
$rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name2'] = 'bail|sometimes|string|nullable';
$rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable';
$rules['status_id'] = 'bail|sometimes|not_in:5'; //do not all cancelled invoices to be modfified. $rules['status_id'] = 'bail|sometimes|not_in:5'; //do not all cancelled invoices to be modfified.
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
// not needed. // not needed.
// $rules['partial_due_date'] = 'bail|sometimes|required_unless:partial,0,null'; // $rules['partial_due_date'] = 'bail|sometimes|required_unless:partial,0,null';
@ -95,6 +96,10 @@ class UpdateInvoiceRequest extends Request
unset($input['documents']); unset($input['documents']);
} }
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }

View File

@ -60,7 +60,8 @@ class StorePurchaseOrderRequest extends Request
} }
$rules['status_id'] = 'nullable|integer|in:1,2,3,4,5'; $rules['status_id'] = 'nullable|integer|in:1,2,3,4,5';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }
@ -77,6 +78,10 @@ class StorePurchaseOrderRequest extends Request
$input['amount'] = 0; $input['amount'] = 0;
$input['balance'] = 0; $input['balance'] = 0;
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -63,6 +63,7 @@ class UpdatePurchaseOrderRequest extends Request
} }
$rules['status_id'] = 'sometimes|integer|in:1,2,3,4,5'; $rules['status_id'] = 'sometimes|integer|in:1,2,3,4,5';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }
@ -79,6 +80,10 @@ class UpdatePurchaseOrderRequest extends Request
$input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : []; $input['line_items'] = isset($input['line_items']) ? $this->cleanItems($input['line_items']) : [];
} }
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -55,6 +55,7 @@ class StoreQuoteRequest extends Request
$rules['discount'] = 'sometimes|numeric'; $rules['discount'] = 'sometimes|numeric';
$rules['is_amount_discount'] = ['boolean']; $rules['is_amount_discount'] = ['boolean'];
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
// $rules['number'] = new UniqueQuoteNumberRule($this->all()); // $rules['number'] = new UniqueQuoteNumberRule($this->all());
$rules['line_items'] = 'array'; $rules['line_items'] = 'array';
@ -72,6 +73,10 @@ class StoreQuoteRequest extends Request
$input['amount'] = 0; $input['amount'] = 0;
$input['balance'] = 0; $input['balance'] = 0;
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }
} }

View File

@ -57,6 +57,7 @@ class UpdateQuoteRequest extends Request
$rules['line_items'] = 'array'; $rules['line_items'] = 'array';
$rules['discount'] = 'sometimes|numeric'; $rules['discount'] = 'sometimes|numeric';
$rules['is_amount_discount'] = ['boolean']; $rules['is_amount_discount'] = ['boolean'];
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }
@ -75,6 +76,10 @@ class UpdateQuoteRequest extends Request
unset($input['documents']); unset($input['documents']);
} }
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$input['id'] = $this->quote->id; $input['id'] = $this->quote->id;
$this->replace($input); $this->replace($input);

View File

@ -67,7 +67,8 @@ class StoreRecurringInvoiceRequest extends Request
$rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name2'] = 'bail|sometimes|string|nullable';
$rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable';
$rules['due_date_days'] = 'bail|sometimes|string'; $rules['due_date_days'] = 'bail|sometimes|string';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }
@ -143,6 +144,10 @@ class StoreRecurringInvoiceRequest extends Request
unset($input['number']); unset($input['number']);
} }
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }

View File

@ -61,7 +61,8 @@ class UpdateRecurringInvoiceRequest extends Request
$rules['tax_name1'] = 'bail|sometimes|string|nullable'; $rules['tax_name1'] = 'bail|sometimes|string|nullable';
$rules['tax_name2'] = 'bail|sometimes|string|nullable'; $rules['tax_name2'] = 'bail|sometimes|string|nullable';
$rules['tax_name3'] = 'bail|sometimes|string|nullable'; $rules['tax_name3'] = 'bail|sometimes|string|nullable';
$rules['exchange_rate'] = 'bail|sometimes|gt:0';
return $rules; return $rules;
} }
@ -121,6 +122,10 @@ class UpdateRecurringInvoiceRequest extends Request
unset($input['documents']); unset($input['documents']);
} }
if (array_key_exists('exchange_rate', $input) && is_null($input['exchange_rate'])) {
$input['exchange_rate'] = 1;
}
$this->replace($input); $this->replace($input);
} }