public OrderExportDocument GetDocument(OrderType orderType, DocumentStatus status)
        {
            var nextId = GetNextOrderId(orderType, status);
            if (nextId != Guid.Empty)
            {
                var doc = _orderRepository.GetById(nextId);
                var exportdoc = new OrderExportDocument();
                exportdoc.Id = doc.Id;

                exportdoc.ExternalRef = doc.ExternalDocumentReference;
                exportdoc.OrderDate = doc.DocumentDateIssued;
                exportdoc.OrderDueDate = doc.DateRequired;
                exportdoc.OrderRef = doc.DocumentReference;
                exportdoc.OutletCode = doc.IssuedOnBehalfOf.CostCentreCode;
                
                exportdoc.ShipToAddress = doc.ShipToAddress; 
                exportdoc.OutletName = doc.IssuedOnBehalfOf.Name;
                exportdoc.Note = doc.Note;
                exportdoc.RouteName = GetOnBehalfOfCCRouteName(doc.Id);//GetOrderReference(nextId, orderType);
                exportdoc.TotalNet = doc.TotalNet;
                exportdoc.TotalVat = doc.TotalVat;
                exportdoc.TotalDiscount = doc.TotalDiscount;
                exportdoc.TotalGross = doc.TotalGross;

                if (doc.DocumentIssuerCostCentre is DistributorSalesman)
                {
                    exportdoc.SalesmanCode = doc.DocumentIssuerCostCentre.CostCentreCode;
                    exportdoc.SalesmanName = doc.DocumentIssuerCostCentre.Name;
                }
                   
                else
                {
                    exportdoc.SalesmanCode = doc.DocumentRecipientCostCentre.CostCentreCode;
                    exportdoc.SalesmanName = doc.DocumentRecipientCostCentre.Name;
                }
                    
                foreach (var item in doc.ItemSummary)
                {
                    var exportItem = new OrderExportDocumentItem();
                    exportItem.ProductCode = item.Product.ProductCode;
                    exportItem.Quantity = item.Qty;
                    exportItem.Price = item.Value;
                    exportItem.VatClass = item.Product.VATClass != null ? item.Product.VATClass.Name : "";
                    exportItem.VatPerUnit = item.VatValue;
                    exportItem.ProductDiscount = item.ProductDiscount ;

                    exportItem.LineItemTotalNet = item.TotalNet;
                    exportItem.LineItemTotalVat = item.TotalVat;
                    exportItem.LineItemTotalGross = item.TotalGross;
                   exportdoc.LineItems.Add(exportItem);
                        
                }
                return exportdoc;
            }
            return null;

        }
Ejemplo n.º 2
0
        public List<Guid> SaveToLocal(OrderExportDocument document,TransactionType type)
        {
            var savedIds = new List<Guid>();
            var result = 0;
            using (var db=new AlidiLocalImportDatabaseContext())
            {
                //Find if the ExternalRef is present in local db so that we can mark it as exported in hq,
                //So that it is never exported again
                if(db.TransactionImports.Any(p=>p.ExternalRef==document.ExternalRef))
                {
                    var confirmListBypass = new List<Guid>();
                    confirmListBypass.Add(Guid.NewGuid());
                    return confirmListBypass;
                }
                foreach (var lineItem in document.LineItems)
                {
                    var id = Guid.NewGuid();
                    var transactionImport = new TransactionImport();
                    transactionImport.Id = id;
                    transactionImport.OutletCode = document.OutletCode;
                    transactionImport.OutletName = document.OutletName;
                    transactionImport.ExternalRef = document.ExternalRef;
                    transactionImport.GenericRef = document.OrderRef;
                    //var date = Convert.ToDateTime(document.OrderDate);
                    //var date2 = DateTime.Parse(document.OrderDate);
                    transactionImport.TransactionIssueDate = document.OrderDate;
                    transactionImport.TransactionDueDate = document.OrderDueDate;
                    transactionImport.TransactionType = (int)type;

                    //LineItems
                    transactionImport.ProductCode = lineItem.ProductCode;
                    transactionImport.Quantity = lineItem.Quantity;
                    transactionImport.TotalNet = lineItem.LineItemTotalNet;
                    transactionImport.TotalVat = lineItem.VatPerUnit;
                    transactionImport.VatClass = lineItem.VatClass;
                    transactionImport.SalesmanCode = document.SalesmanCode;
                    transactionImport.LineItemValue = lineItem.Price;

                    transactionImport.ExportStatus=(int)ExportStatus.New;

                    db.TransactionImports.Add(transactionImport);
                    savedIds.Add(id);
                }
                result=db.SaveChanges();
            } 

            if (result > 0)
            {
                return savedIds;
            }
            return null;
        }
        private SyncBasicResponse Export(OrderExportDocument doc)
        {
       
            if (!OrderRefExist(doc.ExternalRef))
            {
                Documents oOrder = (Documents)Company.GetBusinessObject(BoObjectTypes.oOrders);
               
               
                
                // set properties of the Order object
                oOrder.CardCode = doc.OutletCode; //CustomerCode;
               // oOrder.CardName = outlet.Field2; //CustomerName;

                oOrder.NumAtCard = doc.ExternalRef; //txtReference.Text;
                oOrder.HandWritten = BoYesNoEnum.tYES; //chkManual order reference generation

                oOrder.DocNum = GetDocNum(); //document number;
                oOrder.DocDate = doc.OrderDate; // DatePosting.Value;
                oOrder.DocDueDate = doc.OrderDueDate; // DatePosting.Value;

               
                foreach (var lineItem in doc.LineItems)
                {

                    var warehouse = doc.SalesmanCode;
                    oOrder.Lines.ItemCode = lineItem.ProductCode;
                  //  oOrder.Lines.ItemDescription = lineItem.ProductDescription;
                    oOrder.Lines.Quantity = decimal.ToDouble(lineItem.Quantity);
                    oOrder.Lines.TaxCode = lineItem.VatClass;
                    oOrder.Lines.UnitPrice =decimal.ToDouble( lineItem.Price);
                    oOrder.Lines.UseBaseUnits = BoYesNoEnum.tYES;
                    oOrder.Lines.TaxTotal = decimal.ToDouble(lineItem.VatPerUnit * lineItem.Quantity);
                   
                    
                        oOrder.Lines.WarehouseCode = warehouse;

                    oOrder.Lines.Add();
                }

              var  lRetCode = oOrder.Add(); // Try to add the orer to the database
                oOrder = null;
                int lErrCode = 0;
                string sErrMsg = "";
                if (lRetCode != 0)
                {
                    int temp_int = lErrCode;
                    string temp_string = sErrMsg;
                    Company.GetLastError(out temp_int, out temp_string);
                    if (lErrCode != -4006) // Incase adding an order failed
                    {
                        //MessageBox.Show(lErrCode + " " + temp_string); // Display error message
                        return new SyncBasicResponse { Status = false, Info = lErrCode + " " + temp_string };
                    }
                    else // If the currency Exchange is not set
                    {
                        double dCur;
                        object sCur;
                        sCur = 1.0;
                        if (double.TryParse(sCur.ToString(), out dCur))
                        {
                            dCur = Convert.ToDouble(sCur);
                            var oBob = (SBObob)Company.GetBusinessObject(BoObjectTypes.BoBridge);
                            //Update Currency rate
                            //oBob.SetCurrencyRate(priceObject.Field2, DateTime.Today, dCur, false);
                        }
                        else
                        {
                        return new SyncBasicResponse{Status = false,Info = "Invalid Value to Currency Exchange"};
                        }
                    }
                }
                _sapWebProxy.MarkOrderAsExported(doc.ExternalRef);
                return new SyncBasicResponse { Status = true, Info = string.Format("Order {0} inserted to SAP successfully", doc.ExternalRef) };
            }
            return new SyncBasicResponse { Status = false, Info = string.Format("Order {0} exist in SAP ", doc.ExternalRef) };
        }
Ejemplo n.º 4
0
 public void SaveToQuickBooks(OrderExportDocument orderExportDocument)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 5
0
        public List<Guid> SaveToLocal(OrderExportDocument document, OrderType orderType)
        {
            var savedIds = new List<Guid>();
            var result = 0;

            using (var db=new AlidiLocalImportDatabaseContext())
            {
                //Find if the ExternalRef is present in local db so that we can mark it as exported in hq,
                //So that it is never exported again
                if (db.OrderImportLocal.Any(p => p.OrderExternalRef == document.ExternalRef))
                {
                    var confirmListBypass = new List<Guid>();
                    confirmListBypass.Add(Guid.NewGuid());
                    return confirmListBypass;
                }

                var orderImport = new OrderImportLocal();
                orderImport.OrderExternalRef = document.ExternalRef;
                orderImport.OrderRef = document.OrderRef;
                orderImport.OrderType =(int) orderType;
                orderImport.OutletCode = document.OutletCode;
                orderImport.OutletName = document.OutletName;
                orderImport.OrderDate = document.OrderDate;
                orderImport.OrderDueDate = document.OrderDueDate;
                orderImport.RouteName = document.RouteName;

                orderImport.TotalDiscount = document.TotalDiscount;
                orderImport.TotalGross = document.TotalGross;
                orderImport.TotalNet = document.TotalNet;
                orderImport.TotalVat = document.TotalVat;
                orderImport.ShipToAddress = document.ShipToAddress;
                
                orderImport.DateOfImport = DateTime.Now;
                orderImport.ExportStatus = (int) ExportStatus.New;

                db.OrderImportLocal.Add(orderImport);
                db.SaveChanges();

                foreach (var item in document.LineItems)
                {
                    var id = Guid.NewGuid();
                    var orderItem = new OrderLineItemLocal();
                    orderItem.LineItemId=id;
                    orderItem.OrderExternalRef = document.ExternalRef;
                    orderItem.LineItemTotalGross = item.LineItemTotalGross;
                    orderItem.LineItemTotalNet = item.LineItemTotalNet;
                    orderItem.LineItemTotalVat = item.LineItemTotalVat;
                    orderItem.Price = item.Price;
                    orderItem.ProductCode = item.ProductCode;
                    orderItem.VatClass = item.VatClass;
                    orderItem.VatPerUnit = item.VatPerUnit;

                    orderItem.DateOfImport = DateTime.Now;
                    orderItem.ExportStatus = (int) ExportStatus.New;

                    db.OrderLineItemLocal.Add(orderItem);
                    savedIds.Add(id);
                }
                result = db.SaveChanges();
                
            }
            if(result>0)
            {
                return savedIds;
            }
            return null;
        }