Beispiel #1
0
        public string sendRequestXML(string ticket, string strHCPResponse, string strCompanyFileName, string qbXMLCountry, int qbXMLMajorVers, int qbXMLMinorVers)
        {
            try
            {
                if (!QBManager.QBIsEnabled || !Ticket.Equals(ticket) || !IsTicketActive)
                {
                    return(String.Empty);
                }

                QBEntity entity = QBManager.GetQBEntityForSynchronization();
                if (entity == null)
                {
                    return(String.Empty);
                }

                XmlDocument req = null;
                switch (entity.EntityType)
                {
                case EntityTypeEnum.Customer:
                    req = String.IsNullOrEmpty(entity.QBEntityId) ? QBXMLHelper.CreateCustomerAddRq(entity) : QBXMLHelper.CreateCustomerModRq(entity);
                    break;

                case EntityTypeEnum.Invoice:
                    req = String.IsNullOrEmpty(entity.QBEntityId) ? QBXMLHelper.CreateInvoiceAddRq(entity) : QBXMLHelper.CreateInvoiceModRq(entity);
                    break;

                case EntityTypeEnum.ReceivePayment:
                    req = QBXMLHelper.CreateReceivePaymentAddRq(entity);
                    break;

                case EntityTypeEnum.TxnVoid:
                    req = QBXMLHelper.CreateTxnVoidRq(entity);
                    break;

                case EntityTypeEnum.TxnDel:
                    req = QBXMLHelper.CreateTxnDelRq(entity);
                    break;

                default:
                    return(String.Empty);
                }

                if (req == null)
                {
                    return(String.Empty);
                }

                QBXMLHelper.SetRequestId(req, entity.EntityId);

                return(req.OuterXml);
            }
            catch (Exception ex)
            {
                LogManager.InsertLog(LogTypeEnum.CommonError, ex.Message, ex);
                return(String.Empty);
            }
        }
Beispiel #2
0
        public static XmlDocument CreateReceivePaymentAddRq(QBEntity entity)
        {
            Order order = entity.NopEnity as Order;

            if (order == null)
            {
                return(null);
            }

            XmlDocument xml = new XmlDocument();

            XmlElement elRoot = InitializeDocument(xml);

            XmlElement elReceivePaymentAddRq = xml.CreateElement("ReceivePaymentAddRq");

            elRoot.AppendChild(elReceivePaymentAddRq);

            XmlElement elReceivePaymentAdd = xml.CreateElement("ReceivePaymentAdd");

            elReceivePaymentAddRq.AppendChild(elReceivePaymentAdd);

            elReceivePaymentAdd.AppendChild(CreateCustomerRefNode(xml, order.Customer));
            elReceivePaymentAdd.AppendChild(CreateDateTypeNode(xml, "TxnDate", order.CreatedOn));
            elReceivePaymentAdd.AppendChild(CreateStrTypeNode(xml, "RefNumber", order.OrderId.ToString()));
            elReceivePaymentAdd.AppendChild(CreateAmtTypeNode(xml, "TotalAmount", order.OrderTotal));

            XmlElement elAppliedToTxnAdd = xml.CreateElement("AppliedToTxnAdd");

            elReceivePaymentAdd.AppendChild(elAppliedToTxnAdd);

            elAppliedToTxnAdd.AppendChild(CreateIDTypeNode(xml, "TxnID", QBManager.GetQBEntityByNopId(EntityTypeEnum.Invoice, order.OrderId)));
            elAppliedToTxnAdd.AppendChild(CreateAmtTypeNode(xml, "PaymentAmount", order.OrderTotal));

            decimal discTotal = order.OrderDiscount;

            if (order.RedeemedRewardPoints != null)
            {
                discTotal += order.RedeemedRewardPoints.UsedAmount;
            }
            foreach (var gc in OrderManager.GetAllGiftCardUsageHistoryEntries(null, null, order.OrderId))
            {
                discTotal += gc.UsedValue;
            }
            if (discTotal != Decimal.Zero)
            {
                elAppliedToTxnAdd.AppendChild(CreateAmtTypeNode(xml, "DiscountAmount", discTotal));
                elAppliedToTxnAdd.AppendChild(CreateRefNode(xml, "DiscountAccountRef", QBManager.QBDiscountAccountRef));
            }

            return(xml);
        }
Beispiel #3
0
        public static XmlDocument CreateTxnDelRq(QBEntity entity)
        {
            Order order = entity.NopEnity as Order;

            if (order == null)
            {
                return(null);
            }

            XmlDocument xml = new XmlDocument();

            XmlElement elRoot = InitializeDocument(xml);

            XmlElement elTxnVoidRq = xml.CreateElement("TxnDelRq");

            elRoot.AppendChild(elTxnVoidRq);

            elTxnVoidRq.AppendChild(CreateStrTypeNode(xml, "TxnDelType", "Invoice"));
            elTxnVoidRq.AppendChild(CreateIDTypeNode(xml, "TxnID", QBManager.GetQBEntityByNopId(EntityTypeEnum.Invoice, order.OrderId)));

            return(xml);
        }
Beispiel #4
0
        public int receiveResponseXML(string ticket, string response, string hresult, string message)
        {
            try
            {
                if (!QBManager.QBIsEnabled || !Ticket.Equals(ticket) || !IsTicketActive)
                {
                    return(-1);
                }

                if (!String.IsNullOrEmpty(hresult))
                {
                    LogManager.InsertLog(LogTypeEnum.CommonError, message, hresult);
                    return(-1);
                }

                XmlDocument xml = new XmlDocument();
                xml.LoadXml(response);

                int      requestId = QBXMLHelper.GetRequestId(xml);
                QBEntity entity    = QBManager.GetQBEntityById(requestId);
                if (entity == null)
                {
                    return(-1);
                }

                int statusCode = QBXMLHelper.GetStatusCode(xml);
                switch (statusCode)
                {
                case 0:
                case 530:
                case 531:
                case 550:
                case 560:
                case 570:
                    string qbId   = entity.QBEntityId;
                    string seqNum = entity.SeqNum;
                    switch (QBXMLHelper.GetResponseType(xml))
                    {
                    case "TxnVoidRs":
                    case "TxnDelRs":
                        qbId = QBXMLHelper.GetTxnID(xml);
                        break;

                    case "ReceivePaymentAddRs":
                    case "InvoiceAddRs":
                        qbId   = QBXMLHelper.GetTxnID(xml);
                        seqNum = QBXMLHelper.GetSeqNum(xml);
                        break;

                    case "CustomerAddRs":
                        qbId   = QBXMLHelper.GetListID(xml);
                        seqNum = QBXMLHelper.GetSeqNum(xml);
                        break;

                    case "CustomerModRs":
                    case "InvoiceModRs":
                        seqNum = QBXMLHelper.GetSeqNum(xml);
                        break;
                    }
                    QBManager.UpdateQBEntity(entity.EntityId, qbId, entity.EntityType, entity.NopEntityId, SynStateEnum.Success, seqNum);
                    break;

                case 3175:
                    LogManager.InsertLog(LogTypeEnum.CommonError, QBXMLHelper.GetStatusMessage(xml), statusCode.ToString());
                    break;

                default:
                    LogManager.InsertLog(LogTypeEnum.CommonError, QBXMLHelper.GetStatusMessage(xml), statusCode.ToString());
                    QBManager.UpdateQBEntity(entity.EntityId, entity.QBEntityId, entity.EntityType, entity.NopEntityId, SynStateEnum.Failed, entity.SeqNum);
                    break;
                }
                return(0);
            }
            catch (Exception ex)
            {
                LogManager.InsertLog(LogTypeEnum.CommonError, ex.Message, ex);
                return(-1);
            }
        }