Common Implementations – AP Invoice Import
Snippet:
public string Import(IEnumerable<InvoiceLine> lines)
{
// TODO: To increase efficiency, comment out any unused DB links.
using (HuAPConnection Connection = new HuAPConnection())
using (HuView APIBC = Connection.GetView("AP0020"))
using (HuView APIBH = Connection.GetView("AP0021"))
using (HuView APIBD = Connection.GetView("AP0022"))
using (HuView APIBS = Connection.GetView("AP0023"))
using (HuView APIBHO = Connection.GetView("AP0402"))
using (HuView APIBDO = Connection.GetView("AP0401"))
{
APIBC.Compose(APIBH);
APIBH.Compose(APIBC, APIBD, APIBS, APIBHO);
APIBD.Compose(APIBH, APIBC, APIBDO);
APIBS.Compose(APIBH);
APIBHO.Compose(APIBH);
APIBDO.Compose(APIBD);
APIBC.Browse("((BTCHSTTS = 1) OR (BTCHSTTS = 7))");
using (HuView APIVPT = Connection.GetView("AP0039"))
{
APIBC.RecordCreate(1);
APIBC["PROCESSCMD"] = "1"; // Process Command Code
APIBC.Process();
APIBC.Read();
APIBC["BTCHDESC"] = "Generated invoice batch";
APIBC.Update();
// Group invoices by vendor num and doc num
foreach (IGrouping<string, InvoiceLine> invoice in lines.GroupBy(line => line.VendorNumber + " - " + line.DocuementNumber))
{
APIBH.RecordCreate(2);
APIBD.Cancel();
APIBH["IDVEND"] = invoice.First().VendorNumber; // Vendor Number
APIBH["PROCESSCMD"] = "7"; // Process Command Code
APIBH.Process();
APIBH["PROCESSCMD"] = "4"; // Process Command Code
APIBH.Process();
APIBH["IDINVC"] = invoice.First().DocuementNumber; // Document Number
APIBH["DATEINVC"] = invoice.First().DocumentDate;
APIBH["DATEBUS"] = invoice.First().PostingDate;
// Clear default detail lines - we only want lines based on import file
while (APIBD.Fetch())
{
APIBD.Delete();
}
foreach (InvoiceLine invoiceLine in invoice)
{
APIBD.RecordClear();
APIBD.RecordCreate(0);
APIBD["PROCESSCMD"] = "0"; // Process Command Code
APIBD.Process();
APIBD["IDGLACCT"] = invoiceLine.Account; // G/L Account
APIBD["AMTDIST"] = invoiceLine.Amount; // Distributed Amount
APIBD.Insert();
}
APIBH["AMTGROSTOT"] = -(decimal)APIBH["AMTUNDISTR"]; // Document Total Including Tax
APIBH.Insert();
}
}
return APIBC["CNTBTCH"].ToString();
}
}
Explanation:
APIBC – AP Invoice batches
APIBH – AP Invoice header
APIBD – AP Invoice detail line