From fba28ec422119c01ef9d19585c716fed2f3ca6b4 Mon Sep 17 00:00:00 2001 From: Adrian Walls Date: Mon, 18 Sep 2017 14:48:03 +0100 Subject: [PATCH] Added SalesReceipt Support for transaction date --- src/Builders/Invoice.php | 28 +++++ src/Builders/Items/SalesReceipt.php | 160 ++++++++++++++++++++++++++++ src/Builders/SalesReceipt.php | 14 +++ 3 files changed, 202 insertions(+) create mode 100644 src/Builders/Items/SalesReceipt.php diff --git a/src/Builders/Invoice.php b/src/Builders/Invoice.php index 945efcd..849f714 100644 --- a/src/Builders/Invoice.php +++ b/src/Builders/Invoice.php @@ -112,4 +112,32 @@ public function addTaxableAmount($amount, $id) return $this; } + + /** + * Set due date. + * + * @param string $dueDate YYYY-MM-DD + * + * @return $this + */ + public function setDueDate($dueDate) + { + $this->data['DueDate'] = $dueDate; + + return $this; + } + + /** + * Set transaction date. + * + * @param string $txnDate YYYY-MM-DD + * + * @return $this + */ + public function setTxnDate($txnDate) + { + $this->data['TxnDate'] = $txnDate; + + return $this; + } } diff --git a/src/Builders/Items/SalesReceipt.php b/src/Builders/Items/SalesReceipt.php new file mode 100644 index 0000000..2619515 --- /dev/null +++ b/src/Builders/Items/SalesReceipt.php @@ -0,0 +1,160 @@ +data['Amount'] = $amount; + + return $this; + } + + /** + * @param string $description + * + * @return $this + */ + public function setDescription($description) + { + $this->data['Description'] = $description; + + return $this; + } + + /** + * Set Item's name. This is not needed if name is set through setItem(). + * + * @param string $name Name of Item. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function setUnitPrice($name) + { + $this->data[$this->data['DetailType']]['UnitPrice'] = $name; + + return $this; + } + + /** + * Set Class Reference (from Products & Services) associated to this Item. + * + * @param string $id Item ID + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function setClassRef($id) + { + $this->data[$this->data['DetailType']]['ClassRef']['value'] = $id; + + return $this; + } + + /** + * Set Item Reference (from Products & Services) associated to this Item. + * + * @param string $id Item ID + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function setItemRef($id) + { + $this->data[$this->data['DetailType']]['ItemRef']['value'] = $id; + + return $this; + } + + /** + * Set Item's quantity. + * + * @param int $quantity Item quantity. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function setQuantity($quantity) + { + $this->data[$this->data['DetailType']]['Qty'] = $quantity; + + return $this; + } + + /** + * Set this Item as Sales Item. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function asSalesItem() + { + $this->setDetailType('SalesItemLineDetail'); + + return $this; + } + + /** + * Set this Item as Discount. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function asDiscount() + { + $this->setDetailType('DiscountLineDetail'); + + return $this; + } + + /** + * Set discount's percentage value. + * + * @param float $percent Discount percentage. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function setPercent($percent) + { + $this->data[$this->data['DetailType']]['PercentBased'] = true; + $this->data[$this->data['DetailType']]['DiscountPercent'] = $percent; + + return $this; + } + + /** + * Set discount's value. + * + * @param float $value Discount value. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function setValue($value) + { + $this->setAmount($value); + $this->data[$this->data['DetailType']]['PercentBased'] = false; + + return $this; + } + + /** + * Set this item to be taxable. + * + * @param bool $taxable Set to TRUE to make it taxable or FALSE otherwise. TRUE by default. + * @param mixed $id TaxCode ID. + * + * @return \ReneDeKat\Quickbooks\Builders\Items\Invoice + */ + public function isTaxable($taxable = true, $id = 'TAX') + { + if ($taxable) { + $this->data[$this->data['DetailType']]['TaxCodeRef']['value'] = $id; + } elseif (isset($this->data[$this->data['DetailType']]['TaxCodeRef'])) { + unset($this->data[$this->data['DetailType']]['TaxCodeRef']); + } + + return $this; + } +} + diff --git a/src/Builders/SalesReceipt.php b/src/Builders/SalesReceipt.php index cac78c3..d171d56 100644 --- a/src/Builders/SalesReceipt.php +++ b/src/Builders/SalesReceipt.php @@ -20,4 +20,18 @@ public function setTxnDate($txnDate) return $this; } + + /** + * Set due date. + * + * @param string $dueDate YYYY-MM-DD + * + * @return $this + */ + public function setDueDate($dueDate) + { + $this->data['DueDate'] = $dueDate; + + return $this; + } }