public void checkePayPaidStatus(string custid, string securityID = "") { SAPDBDataContext db = new SAPDBDataContext(connStr); try { if (custid == "" || custid == null) { return; } SAPbobsCOM.Documents oDoc = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices); string invType = "Invoice"; if (oePaymentFormForm != null) { invType = getFormItemVal(oePaymentFormForm, cbInvType); showStatus("Checking " + invType + " payment status for customer: " + custid + ". Please wait...", SAPbouiCOM.BoMessageTime.bmt_Medium, false); } else if (cfgConnectUseDP == "Y") { invType = "Down Payment"; } showStatus("Checking payment status for customer: " + custid + ". Please wait...", SAPbouiCOM.BoMessageTime.bmt_Medium, false); if (invType == "Down Payment") { oDoc = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDownPayments); } string invSql = " OINV (NOLOCK) "; if (invType == "Down Payment") { invSql = " ODPI (NOLOCK) "; } SecurityToken securityToken = getTokenEx(custid, "", "", ""); if (securityID != "") { securityToken.SecurityId = securityID; } Payment[] pmts = ebiz.SearchEbizWebFormReceivedPayments(securityToken, custid, DateTime.Today.AddDays(-90), DateTime.Today.AddDays(1), null, 0, 1000, ""); trace(string.Format("ebiz.SearchEbizWebFormReceivedPayments found {0} for custid {1}", pmts.Count(), custid)); foreach (Payment p in pmts) { trace(string.Format("eMail Form pmt = {0}, {1}, {2}, {3}, {4}", p.InvoiceNumber, p.CustomerId, p.RefNum, p.AuthCode, p.PaidAmount)); if (p.InvoiceNumber == "Method Request") { continue; } //Invoice inv = ebiz.GetInvoice(securityToken, p.DatePaid, "", p.InvoiceNumber, ""); var q = from x in db.CCPayFormInvoices where x.InvoiceID == p.InvoiceNumber select x; if (q.Count() == 0) { trace("EMAIL Form invoice with payment not found in CCPayFormInvoice invoice no. " + p.InvoiceNumber); CCPayFormInvoice ccinv = new CCPayFormInvoice(); ccinv.CustomerID = p.CustomerId; ccinv.InvoiceID = p.InvoiceNumber; ccinv.InvoiceGUID = getSQLInt(string.Format("select DocEntry from {0} where cardcode='{1}' and docnum = {2}", invSql, p.CustomerId, p.InvoiceNumber)).ToString(); ccinv.UploadedBalance = p.InvoiceAmount.ToString(); ccinv.PaidAmount = "0"; ccinv.Status = "Uploaded"; ccinv.UploadDate = DateTime.Today; db.CCPayFormInvoices.InsertOnSubmit(ccinv); db.SubmitChanges(); q = from x in db.CCPayFormInvoices where x.InvoiceID == p.InvoiceNumber select x; } foreach (CCPayFormInvoice i in q) { try { if (!oDoc.GetByKey(int.Parse(i.InvoiceGUID))) { errorLog("Inv not found: " + i.InvoiceGUID); i.Status = "Invoice not found: " + i.InvoiceGUID; db.SubmitChanges(); continue; } if (oDoc.DocumentStatus == SAPbobsCOM.BoStatus.bost_Close) { i.PaidAmount = p.PaidAmount; i.PaidDate = DateTime.Parse(p.DatePaid); i.Status = "Paid"; db.SubmitChanges(); } else { var qcc = from x in db.CCPayFormPayments where x.CustomerID == p.CustomerId && x.InvoiceID == p.InvoiceNumber && x.PaymentID == p.AuthCode select x; if (qcc.Count() == 0) { SAPbobsCOM.Payments oPmt = (SAPbobsCOM.Payments)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oIncomingPayments); int bplid = getBranchIdFromINV(p.InvoiceNumber); if (bplid != 0) { oPmt.BPLID = bplid; } oPmt.CardCode = i.CustomerID; oPmt.DocDate = DateTime.Now; // oPmt.Remarks = "eBizCharge ePayment Form Payment"; oPmt.DocTypte = SAPbobsCOM.BoRcptTypes.rCustomer; // oPmt.JournalRemarks = "eBizCharge ePayment Form payment"; oPmt.Invoices.DocEntry = int.Parse(i.InvoiceGUID); oPmt.Invoices.InvoiceType = SAPbobsCOM.BoRcptInvTypes.it_Invoice; if (oDoc.DocObjectCode == SAPbobsCOM.BoObjectTypes.oDownPayments) { oPmt.Invoices.InvoiceType = SAPbobsCOM.BoRcptInvTypes.it_DownPayment; } oPmt.Invoices.SumApplied = getDoubleValue(p.PaidAmount); SAPCust sapcust = getCustomerByID(i.CustomerID, ""); sapcust.cccust.CCAccountID = geteConnectCardCode(p.PaymentMethod); AddCreditCardPayment(oPmt, sapcust, getDoubleValue(p.PaidAmount), true, p.RefNum); int r = oPmt.Add(); if (r != 0) { errorLog("ePaymentForm Failed Payment. ID:" + i.CustomerID + "\r\n" + "InvoiceID:" + i.InvoiceGUID + "\r\n" + oCompany.GetLastErrorDescription()); } else { CCPayFormPayment pmt = new CCPayFormPayment(); pmt.InvoiceID = p.InvoiceNumber; pmt.CustomerID = p.CustomerId; pmt.PaymentID = p.AuthCode; pmt.Amount = p.PaidAmount; pmt.DateImported = DateTime.Now; db.CCPayFormPayments.InsertOnSubmit(pmt); db.SubmitChanges(); } } i.PaidAmount = p.PaidAmount; i.PaidDate = DateTime.Parse(p.DatePaid); if (getDoubleValue(p.PaidAmount) < getDoubleValue(p.InvoiceAmount)) { i.Status = EPAY_STATUS_PARTIAL; } else { i.Status = EPAY_STATUS_PAID; } db.SubmitChanges(); } } catch (Exception ex) { errorLog(ex); } } } } catch (Exception ex) { errorLog(ex); } showStatus("Status check for customer: " + custid + " completed.", SAPbouiCOM.BoMessageTime.bmt_Medium, false); }
public void addePayInvoice(SAPbouiCOM.Matrix oMatrix, int i) { try { string invnum = getMatrixItem(oMatrix, "DocNum", i); string custid = getMatrixItem(oMatrix, "CustID", i); string invid = getMatrixItem(oMatrix, "InvID", i); string balance = getMatrixItem(oMatrix, "Balance", i); string name = getMatrixItem(oMatrix, "CName", i); string email = getMatrixItem(oMatrix, "E_Mail", i); SBO_Application.SetStatusBarMessage(string.Format("Sending invoice: {0} to customer: {1}. Balance:{2}. Please wait...", invid, name, balance), SAPbouiCOM.BoMessageTime.bmt_Medium, false); SAPbobsCOM.Documents oDoc = (SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices); if (!oDoc.GetByKey(int.Parse(invid))) { errorLog("Inv not found: " + invid); return; } SecurityToken securityToken = getToken(); string detail = "<table>"; SAPbobsCOM.Document_Lines olines = oDoc.Lines; for (int n = 0; n < olines.Count; n++) { olines.SetCurrentLine(n); detail += string.Format("<tr><td nowrap>{0}<td><td> {1} X {2}</td></tr>", olines.ItemDescription, olines.Quantity, olines.Price); } detail += "</table>"; EbizWebForm pf = new EbizWebForm(); pf.Clerk = oCompany.UserName; pf.AmountDue = Decimal.Parse(balance); pf.TotalAmount = Decimal.Parse(balance); pf.CustFullName = name; pf.EmailAddress = email; pf.EmailNotes = "SAP email payment form"; pf.EmailSubject = cfgEmailSubject.Replace("[CUSTOMER]", name).Replace("[INVOICE]", invnum); pf.FromEmail = cfgmerchantEmail; pf.CustomerId = custid; pf.InvoiceNumber = invnum; pf.Description = detail; pf.EmailTemplateName = getFormItemVal(oePaymentFormForm, cbEMTemplate); pf.SendEmailToCustomer = true; string url = ebiz.GetEbizWebFormURL(securityToken, pf); List <CCPayFormInvoice> q = findCCPayFormInvoice(string.Format(" where \"U_InvoiceGUID\" = '{0}' and \"U_CustomerID\" = '{1}' ", invid, custid)); if (q.Count() == 0) { CCPayFormInvoice ccinv = new CCPayFormInvoice(); ccinv.CustomerID = custid; ccinv.InvoiceID = invnum; ccinv.InvoiceGUID = invid; ccinv.UploadedBalance = balance; ccinv.Status = EPAY_STATUS_SENT; ccinv.UploadDate = DateTime.Today; insert(ccinv); } SBO_Application.SetStatusBarMessage(string.Format("Invoice: {0} sent to customer: {1}. Balance:{2}.", invid, custid, balance), SAPbouiCOM.BoMessageTime.bmt_Medium, false); } catch (Exception ex) { errorLog(ex); } }