此代码不会每次使用Quickbooks ConsoleByte PHP开发工具包时都保存行项目
我在Quickbooks中有标记为00001到00020的行项目 对于基本的“计划”行,我的第一个发票行总是在月初。然后,当我单击日历日期时,输入最多10个字段值,然后按“提交”,一个javascript例程触发并调用此附加脚本 如果我在POST var中传递一个非零的数字qty,它将导致在现有发票上创建一个行项目,并将结果作为json返回,该json是用“echo json_encode(array('result'=>'success')”创建的,类似于这样的内容 有时有效,有时无效 我一定是在某个地方出了业务逻辑错误……我太累了,不能再思考了。我的大脑受伤了 有人能在我尝试做的事情中看到明显的编码“失礼”吗?我对Quickbooks PHP相当陌生 代码如下:此代码不会每次使用Quickbooks ConsoleByte PHP开发工具包时都保存行项目,php,quickbooks-online,Php,Quickbooks Online,我在Quickbooks中有标记为00001到00020的行项目 对于基本的“计划”行,我的第一个发票行总是在月初。然后,当我单击日历日期时,输入最多10个字段值,然后按“提交”,一个javascript例程触发并调用此附加脚本 如果我在POST var中传递一个非零的数字qty,它将导致在现有发票上创建一个行项目,并将结果作为json返回,该json是用“echo json_encode(array('result'=>'success')”创建的,类似于这样的内容 有时有效,有时无效 我一定
<?php
//header('Access-Control-Allow-Origin: *');
//header('Content-type: application/json');
$debug = FALSE;
session_start();
include "config.php";
$I00001=0;
$I00002=0;
$I00003=0;
$I00004=0;
$I00005=0;
$I00006=0;
$I00007=0;
$I00008=0;
$I00009=0;
$I00010=0;
$I00020=0;
if (isset($_POST['I00001'])) { $I00001= intval($_POST['I00001']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00001'] not set!")); die();};
if (isset($_POST['I00002'])) { $I00002= intval($_POST['I00002']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00002'] not set!")); die();};
if (isset($_POST['I00003'])) { $I00003= intval($_POST['I00003']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00003'] not set!")); die();};
if (isset($_POST['I00004'])) { $I00004= intval($_POST['I00004']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00004'] not set!")); die();};
if (isset($_POST['I00005'])) { $I00005= intval($_POST['I00005']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00005'] not set!")); die();};
if (isset($_POST['I00006'])) { $I00006= intval($_POST['I00006']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00006'] not set!")); die();};
if (isset($_POST['I00007'])) { $I00007= intval($_POST['I00007']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00007'] not set!")); die();};
if (isset($_POST['I00008'])) { $I00008= intval($_POST['I00008']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00008'] not set!")); die();};
if (isset($_POST['I00009'])) { $I00009= intval($_POST['I00009']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00009'] not set!")); die();};
if (isset($_POST['I00010'])) { $I00010= intval($_POST['I00010']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00010'] not set!")); die();};
if (isset($_POST['I00020'])) { $I00020= intval($_POST['I00020']); } else { header('Content-type: application/json; charset=UTF-8'); echo json_encode(array("result"=>"POST['I00011'] not set!")); die();};
$InvoiceDate = urldecode($_POST['InvoiceDate']);
$dateOfWaybills = urldecode($_POST['dateOfWaybills']);
$customerName = urldecode($_POST['customerName']);
/*
$dateOfWaybills='2018-05-01';
$customerName='HolyHandGrenadeOfAntioch';
$invoiceDate='2018-05-01';
$dateOfWaybills = urldecode($dateOfWaybills);
$customerName = urldecode($customerName);
//echo $customerName;
$I00001=3;
$I00002=0;
$I00003=0;
$I00004=0;
$I00005=0;
$I00006=0;
$I00007=0;
$I00008=0;
*/
setlocale(LC_MONETARY, 'en_CA'); //Canadian dollar
$CustomerService = new QuickBooks_IPP_Service_Customer();
$customer = new QuickBooks_IPP_Object_Customer();
$cqry = "SELECT * FROM Customer WHERE FullyQualifiedName = '".$customerName."'";
$customer = $CustomerService->query($Context, $realm, $cqry);
if ($customer) {
foreach ($customer as $Customer) {
$CustomerRef = $Customer->getId();
}
}
else
{
echo json_encode(array('error : no customer ($cqry)'=>$CustomerService->lastError()));
die();
}
$InvoiceService = new QuickBooks_IPP_Service_Invoice(); // to search for the invoice dated first of the month for customer customerName
$ItemService = new QuickBooks_IPP_Service_Item();
$c1 = str_replace('{','',$CustomerRef);
$c2 = str_replace('}', '', $c1);
$customerId = str_replace('-','',$c2);
$Invoice = new QuickBooks_IPP_Object_Invoice(); // to create the invoice (object)
$InvoiceService = new QuickBooks_IPP_Service_Invoice(); // to save the invoice (methods)
//All invoices are dated on the 1st of the month.
$qry = "SELECT * FROM Invoice WHERE DocNumber = '".$customerId.".".$InvoiceDate."'";
$invoices = $InvoiceService->query($Context, $realm, $qry);
if (!($invoices)) {
$qryResult = array();
$qryResult['result'] = $invoices[0];
die();
} else {
$Invoice = $invoices[0];
$theIdOfThisInvoice = $Invoice->getId();
}
$TaxCodeService = new QuickBooks_IPP_Service_TaxCode();
$taxcodes = $TaxCodeService->query($Context, $realm, "SELECT * FROM TaxCode WHERE name = 'GST'");
$this_tax_code = "";
if ($taxcodes) {
foreach ($taxcodes as $TaxCode) {
$taxCode = $TaxCode->getId();
}
}
// Which Billable Item (Service)
if ($I00001 != 0) {
$itemRef = '00001';
$quantity = intval($I00001);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line1 = new QuickBooks_IPP_Object_Line();
$Line1->addSalesItemLineDetail($SalesItemLineDetail);
$Line1->setDetailType('SalesItemLineDetail');
$Line1->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line1->setDescription($mook->getDescription());
$Line1->setCustomerRef($customerRef);
$Invoice->addline($Line1);
if ($debug == TRUE) {
print_r($Invoice);
}
}
if ($I00002 != 0) {
$itemRef = '00002';
$quantity = intval($I00002);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line2 = new QuickBooks_IPP_Object_Line();
$Line2->addSalesItemLineDetail($SalesItemLineDetail);
$Line2->setDetailType('SalesItemLineDetail');
$Line2->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line2->setDescription($mook->getDescription());
$Line2->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line2);
}
if ($I00003 != 0) {
$itemRef = '00003';
$quantity = intval($I00003);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line3 = new QuickBooks_IPP_Object_Line();
$Line3->addSalesItemLineDetail($SalesItemLineDetail);
$Line3->setDetailType('SalesItemLineDetail');
$Line3->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line3->setDescription($mook->getDescription());
$Line3->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line3);
}
if ($I00004 != 0) {
$itemRef = '00004';
$quantity = intval($I00004);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line4 = new QuickBooks_IPP_Object_Line();
$Line4->addSalesItemLineDetail($SalesItemLineDetail);
$Line4->setDetailType('SalesItemLineDetail');
$Line4->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line4->setDescription($mook->getDescription());
$Line4->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line4);
}
if ($I00005 != 0) {
$itemRef = '00005';
$quantity = intval($I00005);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line5 = new QuickBooks_IPP_Object_Line();
$Line5->addSalesItemLineDetail($SalesItemLineDetail);
$Line5->setDetailType('SalesItemLineDetail');
$Line5->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line5->setDescription($mook->getDescription());
$Line5->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line5);
}
if ($I00006 != 0) {
$itemRef = '00006';
$quantity = intval($I00006);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line6 = new QuickBooks_IPP_Object_Line();
$Line6->addSalesItemLineDetail($SalesItemLineDetail);
$Line6->setDetailType('SalesItemLineDetail');
$Line6->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line6->setDescription($mook->getDescription());
$Line6->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line6);
}
if ($I00007 != 0) {
$itemRef = '00007';
$quantity = intval($I00007);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line7 = new QuickBooks_IPP_Object_Line();
$Line7->addSalesItemLineDetail($SalesItemLineDetail);
$Line7->setDetailType('SalesItemLineDetail');
$Line7->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line7->setDescription($mook->getDescription());
$Line7->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line7);
}
if ($I00008 != 0) {
$itemRef = '00008';
$quantity = intval($I00008);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line8 = new QuickBooks_IPP_Object_Line();
$Line8->addSalesItemLineDetail($SalesItemLineDetail);
$Line8->setDetailType('SalesItemLineDetail');
$Line8->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line8->setDescription($mook->getDescription());
$Line8->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line8);
}
if ($I00009 != 0) {
$itemRef = '00009';
$quantity = intval($I00009);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line9 = new QuickBooks_IPP_Object_Line();
$Line9->addSalesItemLineDetail($SalesItemLineDetail);
$Line9->setDetailType('SalesItemLineDetail');
$Line9->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line9->setDescription($mook->getDescription());
$Line9->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line9);
}
if ($I00010 != 0) {
$itemRef = '00010';
$quantity = intval($I00010);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = QuickBooks_IPP_IDS::usableIDType($customerId);
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line10 = new QuickBooks_IPP_Object_Line();
$Line10->addSalesItemLineDetail($SalesItemLineDetail);
$Line10->setDetailType('SalesItemLineDetail');
$Line10->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line10->setDescription($mook->getDescription());
$Line10->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line10);
}
if ($I00020 != 0) {
$itemRef = '00020';
$quantity = intval($I00020);
// Lookup item $itemRef
$qry_itemRef = "SELECT * FROM Item WHERE Name = '" . $itemRef . "'";
$ItemService = new QuickBooks_IPP_Service_Item();
$mook = $ItemService->query($Context, $realm, $qry_itemRef);
// it's really the first list item
$mook = $mook[0];
$name = $itemRef;
$customerRef = $customerId;
$SalesItemLineDetail = new QuickBooks_IPP_Object_SalesItemLineDetail();
// Which Billable Item (Service)
$SalesItemLineDetail->setItemRef($mook->getId());
$SalesItemLineDetail->setCustomerRef($customerRef);
$SalesItemLineDetail->setUnitPrice(floatval($mook->getUnitPrice() ));
$SalesItemLineDetail->setQty($quantity);
$SalesItemLineDetail->setAmount(floatval($mook->getUnitPrice() * $quantity));
$SalesItemLineDetail->setTaxCodeRef($taxCode);
$SalesItemLineDetail->setServiceDate($dateOfWaybills);
$Line20 = new QuickBooks_IPP_Object_Line();
$Line20->addSalesItemLineDetail($SalesItemLineDetail);
$Line20->setDetailType('SalesItemLineDetail');
$Line20->setAmount(floatval($mook->getUnitPrice() * $quantity));
$Line20->setDescription($mook->getDescription());
$Line20->setCustomerRef($customerRef);
// Keep adding lines onto invoice
$Invoice->addline($Line20);
}
if ($resp = $InvoiceService->update($Context, $realm, $theIdOfThisInvoice, $Invoice))
{
header('Content-Type: application/json; charset=UTF-8');
echo json_encode(array("result" => $IPP->lastResponse()));
die();
} else {
header('Content-Type: application/json; charset=UTF-8');
$result = $IPP->lastRequest." : ".$IPP->lastResponse();
echo json_encode(array("error" => $result));
die();
}
?>
我知道这可能会导致你的大脑受伤的原因。你可能应该尝试创建一个日志,因为这既可以帮助你调试,也可以帮助其他人帮助你。在保持你提到的不一致行为的同时,是否可以删除这些代码?我支持这一点——你需要添加一些日志记录,并明确找出哪里出了问题。这听起来与QuickBooks并没有太大关系,只是听起来您需要进行一些调试,并查看Chrome网络选项卡,看看哪里出了问题,哪里出了问题。@Zev-答案是否定的。代码以原子方式执行此操作: