function AdjustInvoice($taxSvcSoapClient, $invoiceNumber, $companyCode) { // first find the document to adjust $request = new GetTaxHistoryRequest(); $request->setCompanyCode($companyCode); // Dashboard Company Code $request->setDocType(DocumentType::$SalesInvoice); $request->setDetailLevel(DetailLevel::$Tax); // we need fully populated GetTaxRequest $request->setDocCode($invoiceNumber); try { $result = $taxSvcSoapClient->getTaxHistory($request); if ($result->getResultCode() != SeverityLevel::$Success) { foreach ($result->getMessages() as $msg) { echo $msg->getName() . ": " . $msg->getSummary() . "\n"; } } else { $adjreq = new AdjustTaxRequest(); $adjreq->setAdjustmentReason(8); $adjreq->setAdjustmentDescription("Because I Said So"); /* AdjustMentReason Codes: 0 Not Adjusted, 1 Sourcing Issue, 2 Reconciled with General Ledger, 3 Exemption Certificate Applied, 4 Price or Quantity Adjusted, 5 Item Returned, 6 Item Exchanged, 7 Bad Debt, 8 Other (Explain - Must provide AdjustmentDescription) */ $gtreq = $result->getGetTaxRequest(); $STDIN = fopen('php://stdin', 'r'); echo "Enter New Amount for Line 1: "; $amt = rtrim(fgets($STDIN)); $gtreq->getLine("1")->setAmount($amt); $adjreq->setGetTaxRequest($gtreq); echo "Calling AdjustTax\n"; $adjres = $taxSvcSoapClient->AdjustTax($adjreq); if ($adjres->getResultCode() != SeverityLevel::$Success) { echo "AdjustTax returned " . $adjres->getResultCode() . "\n"; foreach ($result->getMessages() as $msg) { echo $msg->getName() . ": " . $msg->getSummary() . "\n"; } } else { echo "Invoice " . $adjres->getDocCode() . " Adjusted"; } } } catch (SoapFault $exception) { $msg = "Exception: "; if ($exception) { $msg .= $exception->faultstring; } echo $msg . "\n"; echo $client->__getLastRequest() . "\n"; echo $client->__getLastResponse() . "\n"; } }
function testAdjustTax() { global $client; $dateTime = new DateTime(); $docCode = "PHPAdjustTaxTest" . date_format($dateTime, "dmyGis"); $getTaxRequest = $this->CreateTaxRequest($docCode); $getTaxRequest->setCommit(true); $getTaxResult = $client->getTax($getTaxRequest); $this->assertEqual(SeverityLevel::$Success, $getTaxResult->getResultCode()); $adjustTaxRequest = new AdjustTaxRequest(); $adjustTaxRequest->setAdjustmentReason(8); $adjustTaxRequest->setAdjustmentDescription("For testing"); $getTaxRequest->getLine("1")->setAmount(2000); $adjustTaxRequest->setGetTaxRequest($getTaxRequest); $adjustTaxResult = $client->adjustTax($adjustTaxRequest); $this->assertEqual(SeverityLevel::$Success, $adjustTaxResult->getResultCode()); $var = $adjustTaxResult->getTotalTax(); $cancelRequest = new CancelTaxRequest(); $cancelRequest->setDocCode($getTaxRequest->getDocCode()); // $cancelRequest->setDocId($getTaxResult->getDocId()); $cancelRequest->setDocType($getTaxRequest->getDocType()); $cancelRequest->setCompanyCode($getTaxRequest->getCompanyCode()); $cancelRequest->setCancelCode(CancelCode::$AdjustmentCancelled); $cancelResult = $client->cancelTax($cancelRequest); $this->assertEqual(SeverityLevel::$Success, $cancelResult->getResultCode()); //Change status to DocDeleted and call cancel again $cancelRequest->setCancelCode(CancelCode::$DocDeleted); $cancelResult = $client->cancelTax($cancelRequest); $this->assertEqual(SeverityLevel::$Success, $cancelResult->getResultCode()); }