Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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>&nbsp;&nbsp;{1}&nbsp;X&nbsp;{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);
        }
    }