Опитвам се да настроя процес, при който фактура се добавя към нашия акаунт в Quickbooks и ако клиентът е маркиран като платен, той настройва плащане, за да покаже това плащане. Настройката на фактурата работи според очакванията, с изключение на това, че когато се опитам да получа идентификационния номер на фактурата, който да се използва при настройване на плащането, изглежда, че не го настройва.
Ето кода:
if(isset($companyName) && $companyName == $customerName) {
$InvoiceService = new QuickBooks_IPP_Service_Invoice();
$Invoice = new QuickBooks_IPP_Object_Invoice();
$Invoice->setDocNumber(1000 + $transaction->salesHistoryId);
$Invoice->setTxnDate($transaction->dateOrdered);
$Line = new QuickBooks_IPP_Object_Line();
$Line->setDescription('Annual Payment');
$Line->setDetailType('SalesItemLineDetail');
$Line->setAmount($transaction->contractPrice);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
$SalesItemLineDetail->setItemRef('7');
$SalesItemLineDetail->setUnitPrice(money_format('%i',$transaction->contractPrice));
$SalesItemLineDetail->setQty(1);
$Line->addSalesItemLineDetail($SalesItemLineDetail);
$Invoice->addLine($Line);
$Invoice->setCustomerRef($customerId);
$invoiceId = $Invoice->getId();
echo ($invoiceId);
$resp = $InvoiceService->add($Context, $realm, $Invoice);
}
if($transaction->paid == '1'){
$PaymentService = new QuickBooks_IPP_Service_Payment();
$Payment = new QuickBooks_IPP_Object_Payment();
$Payment->setPaymentRefNum('Invoice #'. (1000 + $transaction->salesHistoryId));
$Payment->setTxnDate($transaction->dateOrdered);;
$Payment->setTotalAmt($transaction->contractPrice);
$Line = new QuickBooks_IPP_Object_Line();
$Line->setAmount($transaction->contractPrice);
$LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
$LinkedTxn->setTxnId($invoiceId);
$LinkedTxn->setTxnType('Invoice');
$Line->setLinkedTxn($LinkedTxn);
$Payment->addLine($Line);
$Payment->setCustomerRef($customerId);
$resp = $PaymentService->add($Context, $realm, $Payment);
}
Резултатите от моя IPP->lastRequest():
<Payment xmlns="http://schema.intuit.com/finance/v3">
<Line xmlns="http://schema.intuit.com/finance/v3">
<Amount>1295</Amount>
<LinkedTxn xmlns="http://schema.intuit.com/finance/v3">
<TxnId></TxnId>
<TxnType>Invoice</TxnType>
</LinkedTxn>
</Line>
<PaymentRefNum>Invoice #3310</PaymentRefNum>
<TxnDate>2015-06-14 00:00:00</TxnDate>
<TotalAmt>1295</TotalAmt>
<CustomerRef>1930</CustomerRef>
</Payment>HTTP/1.1 400 Bad Request
Date: Mon, 15 Jun 2015 17:24:45 GMT
Content-Type: application/xml
Content-Length: 270
intuit_tid: 2b6330f0-3df5-4336-911d-0ed43acafdd0
Vary: Accept-Encoding
Via: 1.1 ipp-gateway-ap06
Content-Encoding: gzip
Connection: close
Резултатът от IPP->lastResponse():
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2015-06-15T10:24:41.206-07:00"><Fault type="ValidationFault"><Error code="2030" element="LinkedTxn.TxnId"><Message>Invalid ID</Message><Detail>Id should be a valid number. Supplied value:</Detail></Error></Fault></IntuitResponse><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
Предполагам, че от:
<LinkedTxn xmlns="http://schema.intuit.com/finance/v3">
<TxnId></TxnId>
<TxnType>Invoice</TxnType>
</LinkedTxn>
не показва TxnId, че това е проблемът, но не съм сигурен как да го поправя. Всяка помощ се оценява. Благодаря ти!