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"; } }
public function tax($type, $params = array()) { $this->_connectToAvalara(); $client = new TaxServiceSoap(Configuration::get('AVALARATAX_MODE')); if ($type == 'commit') { $request = new CommitTaxRequest(); } elseif ($type == 'post') { $request = new PostTaxRequest(); $request->setDocDate($params['DocDate']); $request->setTotalAmount($params['TotalAmount']); $request->setTotalTax($params['TotalTax']); } elseif ($type == 'cancel') { $request = new CancelTaxRequest(); if ($params['CancelCode'] == 'D') { $code = CancelCode::$DocDeleted; } elseif ($params['CancelCode'] == 'P') { $code = CancelCode::$PostFailed; } elseif ($params['CancelCode'] == 'V') { $code = CancelCode::$DocVoided; } else { die('Invalid cancel code.'); } $request->setCancelCode($code); } elseif ($type == 'history') { $request = new GetTaxHistoryRequest(); $request->setDetailLevel(DetailLevel::$Document); } if ($type != 'isAuthorized') { $request->setDocCode('Order ' . (int) $params['DocCode']); $request->setDocType(DocumentType::$SalesInvoice); $request->setCompanyCode(Configuration::get('AVALARATAX_COMPANY_CODE')); } $buffer = array(); try { if ($type == 'commit') { $result = $client->commitTax($request); } elseif ($type == 'post') { $result = $client->postTax($request); } elseif ($type == 'cancel') { $result = $client->cancelTax($request); } elseif ($type == 'isAuthorized') { $result = $client->isAuthorized('GetTax'); } elseif ($type == 'history') { $result = $client->getTaxHistory($request); $buffer['Invoice'] = $result->getGetTaxRequest()->getDocCode(); $buffer['Status'] = $result->getGetTaxResult()->getDocStatus(); } $buffer['ResultCode'] = $result->getResultCode(); if ($result->getResultCode() != SeverityLevel::$Success) { foreach ($result->getMessages() as $msg) { $buffer['Messages']['Name'] = Tools::safeOutput($msg->getName()); $buffer['Messages']['Summary'] = Tools::safeOutput($msg->getSummary()); } } } catch (SoapFault $exception) { $buffer['Exception']['FaultString'] = Tools::safeOutput($exception->faultstring); $buffer['Exception']['LastRequest'] = Tools::safeOutput($client->__getLastRequest()); $buffer['Exception']['LastResponse'] = Tools::safeOutput($client->__getLastResponse()); } return $buffer; }
require '../../AvaTax4PHP/AvaTax.php'; // include in all Avalara Scripts require '../Credentials.php'; // where service URL, account, license key are set $STDIN = fopen('php://stdin', 'r'); $client = new TaxServiceSoap('Development'); $request = new GetTaxHistoryRequest(); $input = "bogus"; // Locate Document by Invoice Number echo "Enter Invoice Number (Document Code): "; $input = rtrim(fgets($STDIN)); $request->setDocCode($input); $request->setCompanyCode('DEFAULT'); // Dashboard Company Code $request->setDocType(DocumentType::$SalesInvoice); $request->setDetailLevel(DetailLevel::$Document); try { $result = $client->getTaxHistory($request); echo 'GetTaxHistory ResultCode is: ' . $result->getResultCode() . "\n"; if ($result->getResultCode() != SeverityLevel::$Success) { foreach ($result->getMessages() as $msg) { echo $msg->getName() . ": " . $msg->getSummary() . "\n"; } } else { echo "Invoice Number: " . $result->getGetTaxRequest()->getDocCode(); echo "Current Status: " . $result->getGetTaxResult()->getDocStatus() . "\n"; } } catch (SoapFault $exception) { $msg = "Exception: "; if ($exception) {
function testTaxDetailStateAssignedNo() { global $client; $getTaxRequest = $this->CreateTaxRequest("testStateAssignedNo"); $getTaxRequest->setDetailLevel(DetailLevel::$Diagnostic); //Set origin Address $origin = new Address(); $origin->setLine1("Avalara"); $origin->setLine2("900 winslow way"); $origin->setLine3("Suite 100"); $origin->setCity("Bainbridge Island"); $origin->setRegion("WA"); $origin->setPostalCode("98110-1896"); $origin->setCountry("USA"); $getTaxRequest->setOriginAddress($origin); //Set destination address $destination = new Address(); $destination->setLine1("400 Embassy Row NE Ste 580"); $destination->setCity("Atlanta"); $destination->setRegion("GA"); $destination->setPostalCode("30328-7000"); $destination->setCountry("USA"); $getTaxRequest->setDestinationAddress($destination); //StateAssignedNo returned by GetTax $getTaxResult = $client->getTax($getTaxRequest); $this->assertEqual(SeverityLevel::$Success, $getTaxResult->getResultCode()); $isStateAssignedNo = false; $resultTaxDetail = $getTaxResult->getTaxSummary(); if (count($resultTaxDetail) > 0) { $taxDetail; for ($i = 0; $i < count($resultTaxDetail); $i++) { $taxDetail = $resultTaxDetail[$i]; if ($taxDetail->getStateAssignedNo() != null && $taxDetail->getStateAssignedNo() != "") { $this->assertEqual("060", $taxDetail->getStateAssignedNo()); $isStateAssignedNo = true; } } } $this->assertTrue($isStateAssignedNo, "Failed to fetch State Assigned No for the given address"); $isStateAssignedNo = false; $taxLines = $getTaxResult->getTaxLines(); $taxDetails = $taxLines[0]->getTaxDetails(); if (count($taxLines) > 0 && count($taxDetails) > 0) { for ($i = 0; $i < count($taxDetails); $i++) { $taxDetail = $taxDetails[$i]; if ($taxDetail->getStateAssignedNo() != null && $taxDetail->getStateAssignedNo() != "") { $this->assertEqual("060", $taxDetail->getStateAssignedNo()); $isStateAssignedNo = true; } } } $this->assertTrue($isStateAssignedNo, "Failed to fetch State Assigned No for the given address"); // 2. StateAssignedNo is returned by GetTaxHistory $historyRequest = new GetTaxHistoryRequest(); $historyRequest->setCompanyCode($getTaxRequest->getCompanyCode()); $historyRequest->setDocType($getTaxRequest->getDocType()); $historyRequest->setDocCode($getTaxRequest->getDocCode()); $historyRequest->setDetailLevel(DetailLevel::$Diagnostic); $historyResult = $client->getTaxHistory($historyRequest); $this->assertEqual(SeverityLevel::$Success, $historyResult->getResultCode()); $this->assertNotNull($historyResult->getGetTaxRequest()); $this->assertNotNull($historyResult->getGetTaxResult()); $isStateAssignedNo = false; $historyTaxSummary = $historyResult->getGetTaxResult()->getTaxSummary(); if (count($historyTaxSummary) > 0) { $taxDetail; for ($i = 0; $i < count($historyTaxSummary); $i++) { $taxDetail = $historyTaxSummary[$i]; if ($taxDetail->getStateAssignedNo() != null && $taxDetail->getStateAssignedNo() != "") { $this->assertEqual("060", $taxDetail->getStateAssignedNo()); $isStateAssignedNo = true; } } } $this->assertTrue($isStateAssignedNo, "Failed to fetch State Assigned No for the given address"); $isStateAssignedNo = false; $taxLines = $historyResult->getGetTaxResult()->getTaxLines(); $taxDetails = $taxLines[0]->getTaxDetails(); if (count($taxLines) > 0 && count($taxDetails) > 0) { for ($i = 0; $i < count($taxDetails); $i++) { $taxDetail = $taxDetails[$i]; if ($taxDetail->getStateAssignedNo() != null && $taxDetail->getStateAssignedNo() != "") { $this->assertEqual("060", $taxDetail->getStateAssignedNo()); $isStateAssignedNo = true; } } } $this->assertTrue($isStateAssignedNo, "Failed to fetch State Assigned No for the given address"); }