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";
    }
}
Пример #2
0
 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;
 }
<?php

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: ";
 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");
 }