ultimatepos/Modules/Connector/Transformers/NewSellResource.php

199 lines
6.8 KiB
PHP

<?php
namespace Modules\Connector\Transformers;
use App\Utils\Util;
use Illuminate\Http\Resources\Json\JsonResource;
class NewSellResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
$array = parent::toArray($request);
foreach ($array['sell_lines'] as $key => $value) {
//check if mapping exists
if (isset($value['sell_line_purchase_lines'])) {
$purchase_lines = [];
foreach ($value['sell_line_purchase_lines'] as $sell_line_purchase_line) {
//check mapped purchase line
if (isset($sell_line_purchase_line['purchase_line'])) {
//get purchase details of the sell line
$purchase_lines[] = [
'purchase_price' => $sell_line_purchase_line['purchase_line']['purchase_price'],
'pp_inc_tax' => $sell_line_purchase_line['purchase_line']['purchase_price_inc_tax'],
'lot_number' => $sell_line_purchase_line['purchase_line']['lot_number'],
];
}
}
//unset mapping and set purchase details
unset($array['sell_lines'][$key]['sell_line_purchase_lines']);
$array['sell_lines'][$key]['purchase_price'] = $purchase_lines;
}
$product = $value['product'];
$value['product_name'] = $product['name'];
$value['product_custom_field_1'] = $product['product_custom_field1'];
$value['product_type'] = $product['type'];
$value['product_sku'] = $product['sku'];
$value['category'] = ! empty($product['category']) ? array_diff_key($product['category'], array_flip($this->__excludeCommonFields())) : null;
$value['sub_category'] = ! empty($product['sub_category']) ? array_diff_key($product['sub_category'], array_flip($this->__excludeCommonFields())) : null;
$variation = $value['variations'];
$value['product_variations'] = [
'id' => $variation['id'],
'name' => $variation['name'],
'product_id' => $variation['product_id'],
'sub_sku' => $variation['sub_sku'],
'product_variation_id' => $variation['product_variation_id'],
'default_purchase_price' => $variation['default_purchase_price'],
'dpp_inc_tax' => $variation['dpp_inc_tax'],
'default_sell_price' => $variation['default_sell_price'],
'sell_price_inc_tax' => $variation['sell_price_inc_tax'],
];
$array['sell_lines'][$key] = array_diff_key($value, array_flip($this->__excludeSellLineFields()));
}
if (! empty($array['payment_lines'])) {
foreach ($array['payment_lines'] as $key => $value) {
$array['payment_lines'][$key] = array_diff_key($value, array_flip($this->__excludePaymentLineFields()));
}
}
$commonUtil = new Util;
$array['invoice_url'] = $commonUtil->getInvoiceUrl($array['id'], $array['business_id']);
$array['payment_link'] = $commonUtil->getInvoicePaymentLink($array['id'], $array['business_id']);
return array_diff_key($array, array_flip($this->__excludeSellFields()));
return $array;
}
private function __excludeSellFields()
{
return [
'res_waiter_id',
'res_order_status',
'sub_type',
'sub_status',
'adjustment_type',
'shipping_charges',
'shipping_custom_field_1',
'shipping_custom_field_2',
'shipping_custom_field_3',
'shipping_custom_field_4',
'shipping_custom_field_5',
'is_export',
'export_custom_fields_info',
'additional_expense_key_1',
'additional_expense_value_1',
'additional_expense_key_2',
'additional_expense_value_2',
'additional_expense_key_3',
'additional_expense_value_3',
'additional_expense_key_4',
'additional_expense_value_4',
'expense_category_id',
'expense_for',
'commission_agent',
'document',
'exchange_rate',
'transfer_parent_id',
'return_parent_id',
'opening_stock_product_id',
'created_by',
'mfg_parent_production_purchase_id',
'mfg_wasted_units',
'prefer_payment_method',
'prefer_payment_account',
'sales_order_ids',
'purchase_order_ids',
'custom_field_1',
'custom_field_2',
'custom_field_3',
'custom_field_4',
'import_batch',
'import_time',
'types_of_service_id',
'packing_charge',
'packing_charge_type',
'service_custom_field_1',
'service_custom_field_2',
'service_custom_field_3',
'service_custom_field_4',
'service_custom_field_5',
'service_custom_field_6',
'rp_earned',
'order_addresses',
'is_recurring',
'recur_interval',
'recur_interval_type',
'recur_repetitions',
'recur_stopped_on',
'recur_parent_id',
'pay_term_number',
'pay_term_type',
];
}
private function __excludeSellLineFields()
{
return [
'variation_id',
'mfg_waste_percent',
'mfg_ingredient_group_id',
'so_line_id',
'so_quantity_invoiced',
'res_service_staff_id',
'res_line_order_status',
'parent_sell_line_id',
'sub_unit_id',
'product',
'variations',
];
}
private function __excludeCommonFields()
{
return [
'created_at',
'updated_at',
'deleted_at',
];
}
private function __excludePaymentLineFields()
{
return [
'transaction_no',
'card_transaction_number',
'card_number',
'card_holder_name',
'card_month',
'card_year',
'card_security',
'cheque_number',
'bank_account_number',
'created_by',
'paid_through_link',
'gateway',
'is_advance',
'payment_for',
'parent_id',
'note',
'document',
'account_id',
'created_at',
'updated_at',
];
}
}