diff --git a/app/Import/Transformer/Quickbooks/ProductTransformer.php b/app/Import/Transformer/Quickbooks/ProductTransformer.php new file mode 100644 index 000000000000..f86a49eca1ed --- /dev/null +++ b/app/Import/Transformer/Quickbooks/ProductTransformer.php @@ -0,0 +1,88 @@ + 'Name', + 'notes' => 'Description', + 'cost' => 'PurchaseCost', + 'price' => 'UnitPrice', + 'quantity' => 'QtyOnHand', + 'in_stock_quantity' => 'QtyOnHand', + 'created_at' => 'CreateTime', + 'updated_at' => 'LastUpdatedTime', + ]; + /** + * Transforms the JSON data into a ProductModel object. + * + * @param array $data + * @return ProductModel + */ + /** + * Transforms a Customer array into a Product model. + * + * @param array $data + * @return array|bool + */ + public function transform($data) + { + $transformed_data = []; + foreach($this->fillable as $key => $field) { + $transformed_data[$key] = method_exists($this, $method = sprintf("get%s", str_replace(".","",$field)) )? call_user_func([$this, $method],$data,$field) : $this->getString($data, $field); + } + + $transformed_data = (new Model)->fillable(array_keys($this->fillable))->fill($transformed_data); + + return $transformed_data->toArray() + ['company_id' => $this->company->id ] ; + } + + public function getString($data, $field) + { + return Arr::get($data, $field); + } + + public function getQtyOnHand($data, $field = null) { + return (int) $this->getString($data, $field); + } + + public function getPurchaseCost($data, $field = null) { + return (float) $this->getString($data, $field); + } + + + public function getUnitPrice($data, $field = null) { + return (float) $this->getString($data, $field); + } + + public function getCreateTime($data, $field = null) + { + return $this->parseDateOrNull($data['MetaData'], 'CreateTime'); + } + + public function getLastUpdatedTime($data, $field = null) + { + return $this->parseDateOrNull($data['MetaData'],'LastUpdatedTime'); + } +}