public static List <Supplier_Invoice_Line_Replacement_DataType> build_po_invoiceline(LineInvoiceModelDTO lineobjdata, List <Supplier_Invoice_Line_Replacement_DataType> lineitem) { List <Audited_Accounting_WorktagObjectType> listworktagobj = new List <Audited_Accounting_WorktagObjectType>(); Spend_CategoryObjectType catobjtype = new Spend_CategoryObjectType(); // if(lineobjdata.Line_Cost_Center!=null) if (lineobjdata.Line_Cost_Center != null) { listworktagobj.Add(new Audited_Accounting_WorktagObjectType() { ID = new List <Audited_Accounting_WorktagObjectIDType>() { new Audited_Accounting_WorktagObjectIDType { type = "Cost_Center_Reference_ID", Value = lineobjdata.Line_Cost_Center } }.ToArray() }); } else { listworktagobj = null; } if (lineobjdata.Line_Spend_Category_ID != null) { catobjtype.ID = new Spend_CategoryObjectIDType[] { new Spend_CategoryObjectIDType { type = "Spend_Category_ID", Value = lineobjdata.Line_Spend_Category_ID } }; } else { catobjtype = null; } Audited_Accounting_WorktagObjectType[] worktagobj2 = new Audited_Accounting_WorktagObjectType[] { new Audited_Accounting_WorktagObjectType { ID = new Audited_Accounting_WorktagObjectIDType[] { new Audited_Accounting_WorktagObjectIDType { type = "Cost_Center_Reference_ID", Value = lineobjdata.Line_Cost_Center }, new Audited_Accounting_WorktagObjectIDType { type = "Organization_Reference_ID", Value = "SIA-WAM Zaki Mohd" }, new Audited_Accounting_WorktagObjectIDType { type = "Custom_Organization_Reference_ID", Value = "SIA-WAM Zaki Mohd" } } } }; Purchase_Order_LineObjectType PurchaseObj = new Purchase_Order_LineObjectType() { ID = new Purchase_Order_LineObjectIDType[] { new Purchase_Order_LineObjectIDType { parent_type = "Document_Number", parent_id = "PO-0000019678", Value = "1", type = "Line_Number" } }, Descriptor = "somedes" }; lineitem.Add(new Supplier_Invoice_Line_Replacement_DataType { Extended_Amount = lineobjdata.Line_Extended_Amount, Quantity = 1, Unit_Cost = lineobjdata.Line_Extended_Amount, QuantitySpecified = true, Unit_CostSpecified = true, Spend_Category_Reference = null, Purchase_Order_Line_Reference = PurchaseObj, Worktags_Reference = null, }); return(lineitem); }
public static Supplier_Invoice_DataType process_po_Invoice(InvoiceModel XMLinvoicemodel) { Supplier_Invoice_DataType sisd = new Supplier_Invoice_DataType(); WorkDay_Resourse_ManagementEntities1 Entity = new WorkDay_Resourse_ManagementEntities1(); // PO_Header_Invoice headerinfo = Entity.PO_Header_Invoice.Where(x => x.Supplier_ID == XMLinvoicemodel.OCR_supplier_ID).FirstOrDefault(); //////if (headerinfo != null) // { List <Supplier_Invoice_Line_Replacement_DataType> ReplacementLineobject = new List <Supplier_Invoice_Line_Replacement_DataType>(); List <PO_Details> po_details = Entity.PO_Details.Where(x => x.Supllier_ID.Equals(XMLinvoicemodel.OCR_supplier_ID)).ToList(); if (po_details.Count > 0) { decimal total_po_amount = po_details.Sum(x => x.Po_Amount) ?? 0; if (XMLinvoicemodel.OCR_Invoice_Amount > total_po_amount) { foreach (PO_Details item in po_details) { LineInvoiceModelDTO lineobjdataDTO = new LineInvoiceModelDTO(); lineobjdataDTO.Line_Extended_Amount = Convert.ToDecimal(item.Po_Amount); lineobjdataDTO.Line_Spend_Category_ID = null; lineobjdataDTO.Line_Cost_Center = null; lineobjdataDTO.Line_PO_Number = XMLinvoicemodel.OCR_PO_Number; ReplacementLineobject = build_po_invoiceline(lineobjdataDTO, ReplacementLineobject); } PO_Details newitem = po_details[po_details.Count - 1]; decimal amountleft = XMLinvoicemodel.OCR_Invoice_Amount - total_po_amount; LineInvoiceModelDTO lineobjdata = new LineInvoiceModelDTO(); lineobjdata.Line_Extended_Amount = amountleft; lineobjdata.Line_Spend_Category_ID = newitem.Spend_Catagory; lineobjdata.Line_Cost_Center = newitem.Cost_Centre; ReplacementLineobject = build_po_invoiceline(lineobjdata, ReplacementLineobject); } else if (XMLinvoicemodel.OCR_Invoice_Amount < total_po_amount) { PO_Details newitem = po_details.FirstOrDefault(); decimal amountleft = Decimal.Subtract(XMLinvoicemodel.OCR_Invoice_Amount, 0.01M); LineInvoiceModelDTO lineobjdata = new LineInvoiceModelDTO(); lineobjdata.Line_Extended_Amount = amountleft; lineobjdata.Line_PO_Number = XMLinvoicemodel.OCR_PO_Number; ReplacementLineobject = build_po_invoiceline(lineobjdata, ReplacementLineobject); PO_Details newlistdata = po_details.FirstOrDefault(); decimal newamountleft = 0.01M; LineInvoiceModelDTO newlineobjdata = new LineInvoiceModelDTO(); newlineobjdata.Line_Extended_Amount = newamountleft; newlineobjdata.Line_Spend_Category_ID = newlistdata.Spend_Catagory; lineobjdata.Line_Cost_Center = newlistdata.Cost_Centre; ReplacementLineobject = build_po_invoiceline(lineobjdata, ReplacementLineobject); } sisd = build_po_header(XMLinvoicemodel); sisd.Invoice_Line_Replacement_Data = ReplacementLineobject.ToArray(); } else { List <Supplier_Invoice_Line_Replacement_DataType> Supplier_invoice_line_replacement_Line = new List <Supplier_Invoice_Line_Replacement_DataType>(); var dta = Entity.Companies.ToList(); Company Company = Entity.Companies.Where(x => x.Company_Name.Trim() == XMLinvoicemodel.OCR_Bill_to.Trim()).FirstOrDefault(); if (Company != null) { NonPO_Line_Details_Default item = Entity.NonPO_Line_Details_Default.Where(x => x.Company_ID.Equals(Company.Company_ID)).FirstOrDefault(); LineInvoiceModelDTO lineobjdata = new LineInvoiceModelDTO(); lineobjdata.Line_Extended_Amount = XMLinvoicemodel.OCR_Invoice_Amount; lineobjdata.Line_Spend_Category_ID = item.Spend_Category; lineobjdata.Line_PO_Number = XMLinvoicemodel.OCR_PO_Number; lineobjdata.Line_Cost_Center = item.Cost_Center; sisd = build_po_header(XMLinvoicemodel); sisd.Invoice_Line_Replacement_Data = build_NON_PO_invoiceline(Supplier_invoice_line_replacement_Line, lineobjdata).ToArray(); } else { Console.WriteLine("No record company record found found"); } } return(sisd); }
//Generate data for Non-PO Invoice public static List <Supplier_Invoice_Line_Replacement_DataType> build_NON_PO_invoiceline(List <Supplier_Invoice_Line_Replacement_DataType> Supplier_invoice_line_replacement_Line, LineInvoiceModelDTO InvoicemodelDTO) { List <Audited_Accounting_WorktagObjectType> listworktagobj = new List <Audited_Accounting_WorktagObjectType>(); listworktagobj.Add(new Audited_Accounting_WorktagObjectType() { ID = new List <Audited_Accounting_WorktagObjectIDType>() { new Audited_Accounting_WorktagObjectIDType { type = "Cost_Center_Reference_ID", Value = InvoicemodelDTO.Line_Cost_Center }, }.ToArray() }); listworktagobj.Add(new Audited_Accounting_WorktagObjectType() { ID = new List <Audited_Accounting_WorktagObjectIDType>() { new Audited_Accounting_WorktagObjectIDType { type = "Custom_Organization_Reference_ID", Value = InvoicemodelDTO.Line_Custom_Organization_Reference_ID } }.ToArray() }); if (!string.IsNullOrEmpty(InvoicemodelDTO.Line_Employee_ID)) { listworktagobj.Add(new Audited_Accounting_WorktagObjectType() { ID = new List <Audited_Accounting_WorktagObjectIDType>() { new Audited_Accounting_WorktagObjectIDType { type = "Employee_ID", Value = InvoicemodelDTO.Line_Employee_ID } }.ToArray() }); } if (!string.IsNullOrEmpty(InvoicemodelDTO.Line_Project_ID)) { listworktagobj.Add(new Audited_Accounting_WorktagObjectType() { ID = new List <Audited_Accounting_WorktagObjectIDType>() { new Audited_Accounting_WorktagObjectIDType { type = "Project_ID", Value = InvoicemodelDTO.Line_Project_ID } }.ToArray() }); } // projec Spend_CategoryObjectType catobjtype = new Spend_CategoryObjectType() { ID = new Spend_CategoryObjectIDType[] { new Spend_CategoryObjectIDType { type = "Spend_Category_ID", Value = InvoicemodelDTO.Line_Spend_Category_ID } } }; Supplier_invoice_line_replacement_Line.Add(new Supplier_Invoice_Line_Replacement_DataType { Extended_Amount = InvoicemodelDTO.Line_Extended_Amount, Spend_Category_Reference = catobjtype, Worktags_Reference = listworktagobj.ToArray(), Item_Description = InvoicemodelDTO.Line_Item_Description }); return(Supplier_invoice_line_replacement_Line); }
public static Supplier_Invoice_DataType process_NON_PO_Invoice(InvoiceModel invoicemodel) { WorkDay_Resourse_ManagementEntities1 Entity = new WorkDay_Resourse_ManagementEntities1(); Console.WriteLine("Seraching Data in NonPO_Line_Details Table for OCR_supplier_ID: " + invoicemodel.OCR_supplier_ID); List <NonPO_Line_Details> non_po_details = Entity.NonPO_Line_Details.Where(x => x.Supplier_ID.Equals(invoicemodel.OCR_supplier_ID)).ToList(); List <Supplier_Invoice_Line_Replacement_DataType> Supplier_invoice_line_replacement_Line = new List <Supplier_Invoice_Line_Replacement_DataType>(); Console.WriteLine("Record Count in NonPO_Line_Details Table :" + non_po_details.Count); Supplier_Invoice_DataType sisd = new Supplier_Invoice_DataType(); if (non_po_details.Count > 0) { Console.WriteLine("Creating Record with NonPO_Line_Details Table"); Console.WriteLine("Creating " + non_po_details.Count + " Lines for OCR_supplier_ID " + invoicemodel.OCR_supplier_ID); foreach (NonPO_Line_Details item in non_po_details) { LineInvoiceModelDTO lineobjdata = new LineInvoiceModelDTO(); decimal getper = Decimal.Divide(Convert.ToDecimal(item.Percetage), 100); lineobjdata.Line_Extended_Amount = getper * invoicemodel.OCR_Invoice_Amount; lineobjdata.Line_Spend_Category_ID = item.Spend_Catagories; lineobjdata.Line_Cost_Center = item.Cost_Center; lineobjdata.Line_Item_Description = item.Item_Desription; lineobjdata.Line_Custom_Organization_Reference_ID = item.Custom_Org; lineobjdata.Line_Employee_ID = item.Employee; lineobjdata.Line_Project_ID = item.Project; Console.WriteLine("XML Invoice Amount :" + invoicemodel.OCR_Invoice_Amount); Console.WriteLine("% from DB :" + item.Percetage); Console.WriteLine("Calulated Amount :" + lineobjdata.Line_Extended_Amount); Console.WriteLine("------------------------------"); Supplier_invoice_line_replacement_Line = build_NON_PO_invoiceline(Supplier_invoice_line_replacement_Line, lineobjdata); } } else { var dta = Entity.Companies.ToList(); Company Company = Entity.Companies.Where(x => x.Company_Name.Trim() == invoicemodel.OCR_Bill_to.Trim()).FirstOrDefault(); Console.WriteLine("Creating Record with NonPO_Line_Details_Defult Table"); Console.WriteLine("Bill To from XML :" + invoicemodel.OCR_Bill_to); if (Company != null) { Console.WriteLine("Comapny ID from DB " + Company.Company_ID); NonPO_Line_Details_Default item = Entity.NonPO_Line_Details_Default.Where(x => x.Company_ID.Equals(Company.Company_ID)).FirstOrDefault(); LineInvoiceModelDTO lineobjdata = new LineInvoiceModelDTO(); if (item != null) { lineobjdata.Line_Extended_Amount = invoicemodel.OCR_Invoice_Amount; lineobjdata.Line_Spend_Category_ID = item.Spend_Category; lineobjdata.Line_Cost_Center = item.Cost_Center; lineobjdata.Line_Custom_Organization_Reference_ID = item.Custom_Org; Supplier_invoice_line_replacement_Line = build_NON_PO_invoiceline(Supplier_invoice_line_replacement_Line, lineobjdata); } else { Console.WriteLine("No record found in NonPO_Line_Details_Default for Company_ID:" + Company.Company_ID); } } else { Console.WriteLine("No record company record found found"); } } sisd = build_po_header(invoicemodel); sisd.Invoice_Line_Replacement_Data = Supplier_invoice_line_replacement_Line.ToArray(); return(sisd); }