Пример #1
0
 public void Update(DCOrder dCOrder)
 {
     if (dCOrder != null)
     {
         _repository.Entry <Sql.DCOrder>(dCOrder).State = System.Data.Entity.EntityState.Modified;
     }
 }
 public ItemVariantAddPage(DCOrderLineClient line, DCOrder master) : base(null)
 {
     this.master  = master;
     this.line    = line;
     this.invItem = line.InvItem;
     InitPage();
 }
Пример #3
0
        public static DCOrderDTO ConvertToDCOrderDto(DCOrder dCOrder, string path)
        {
            DCOrderDTO dCOrderDTO = new DCOrderDTO();

            dCOrderDTO.DCId                 = dCOrder.DCId;
            dCOrderDTO.DCOrderId            = dCOrder.DCOrderId;
            dCOrderDTO.DCOrderNumber        = dCOrder.DCOrderNumber;
            dCOrderDTO.DeliveryExpectedDate = dCOrder.DeliveryExpectedDate.HasValue ? dCOrder.DeliveryExpectedDate : DateTime.Now.Date;
            dCOrderDTO.DeliveredDate        = dCOrder.DeliveredDate.HasValue ? dCOrder.DeliveredDate : DateTime.Now.Date;
            dCOrderDTO.DeliveredBy          = dCOrder.DeliveredBy;
            dCOrderDTO.OrderComments        = dCOrder.OrderComments;
            dCOrderDTO.OrderDate            = dCOrder.OrderDate;
            dCOrderDTO.OrderTotalPrice      = dCOrder.OrderTotalPrice;
            dCOrderDTO.TotalOrderQuantity   = dCOrder.TotalOrderQuantity;
            dCOrderDTO.TotalActualQuantity  = dCOrder.TotalActualQuantity.GetValueOrDefault();
            OrderStatus status;

            Enum.TryParse <OrderStatus>(dCOrder.OrderStatusId.ToString(), out status);
            dCOrderDTO.OrderStatus = status;
            dCOrderDTO.DCName      = dCOrder.DistributionCenter != null ? dCOrder.DistributionCenter.DCName : string.Empty;
            if (dCOrder.DCAddress != null)
            {
                dCOrderDTO.dCAddressDTO = DCAddressConvertor.ConvertToDCAddressDTO(dCOrder.DCAddress);
            }
            if (dCOrder.DCOrderDtls != null)
            {
                dCOrderDTO.dcOrderDtlList = new List <DCOrderDtlDTO>();
                foreach (var dcorderDtl in dCOrder.DCOrderDtls)
                {
                    dCOrderDTO.dcOrderDtlList.Add(ConvertToDCOrderDtlDto(dcorderDtl, path));
                }
            }
            return(dCOrderDTO);
        }
        public AddMultipleInventoryItemPage(SQLCacheFilter cache, Type tp, DCOrder master) : base(null)
        {
            DataContext = this;
            InitializeComponent();
            localMenu.dataGrid = dgMultipleInventoryItems;
            SetRibbonControl(localMenu, dgMultipleInventoryItems);
            dgMultipleInventoryItems.api           = api;
            dgMultipleInventoryItems.BusyIndicator = busyIndicator;
            recordType  = tp;
            this.master = master;
            itemList    = new List <InventoryItem>();
            foreach (var rec in cache)
            {
                itemList.Add(new InventoryItem((InvItem)rec));
            }
            dgMultipleInventoryItems.ItemsSource = itemList;
            dgMultipleInventoryItems.Visibility  = Visibility.Visible;
            dgMultipleInventoryItems.Loaded     += DgMultipleInventoryItems_Loaded;
            localMenu.OnItemClicked += localMenu_OnItemClicked;
            GetMenuItem();
#if SILVERLIGHT
            Application.Current.RootVisual.KeyDown += AddMultipleInventoryItemPage_KeyDown;
#else
            this.KeyDown += AddMultipleInventoryItemPage_KeyDown;
#endif
            DXSerializerHandler.AvoidSaveHeader(false);
        }
Пример #5
0
 public void Add(DCOrder dCOrder)
 {
     if (dCOrder != null)
     {
         _repository.DCOrders.Add(dCOrder);
     }
 }
Пример #6
0
        static public void Updatedata(DCOrder dbOrder, CompanyLayoutType doctype)
        {
            string prop;

            if (doctype == CompanyLayoutType.Packnote)
            {
                dbOrder._PackNotePrinted = BasePage.GetSystemDefaultDate();
                prop = "PackNotePrinted";
            }
            else if (doctype == CompanyLayoutType.OrderConfirmation)
            {
                dbOrder._ConfirmPrinted = BasePage.GetSystemDefaultDate();
                prop = "ConfirmPrinted";
            }
            else if (doctype == CompanyLayoutType.PickingList)
            {
                dbOrder._PicklistPrinted = BasePage.GetSystemDefaultDate();
                prop = "PicklistPrinted";
            }
            else
            {
                return;
            }
            dbOrder.NotifyPropertyChanged(prop);
            //we just update client, since server update was done in posting.
        }
Пример #7
0
        private void ShowOrderLines(DCOrder order)
        {
            var confrimationText = string.Format(" {0}. {1}:{2},{3}:{4}\r\n{5}", Uniconta.ClientTools.Localization.lookup("SalesOrderCreated"), Uniconta.ClientTools.Localization.lookup("OrderNumber"), order._OrderNumber,
                                                 Uniconta.ClientTools.Localization.lookup("Account"), order._DCAccount, string.Concat(string.Format(Uniconta.ClientTools.Localization.lookup("GoTo"), Uniconta.ClientTools.Localization.lookup("Orderline")), " ?"));

            var confirmationBox = new CWConfirmationBox(confrimationText, string.Empty, false);

            confirmationBox.Closing += delegate
            {
                if (confirmationBox.DialogResult == null)
                {
                    return;
                }

                switch (confirmationBox.ConfirmationResult)
                {
                case CWConfirmationBox.ConfirmationResultEnum.Yes:
                    AddDockItem(order.__DCType() == 1 ? TabControls.DebtorOrderLines : TabControls.DebtorOfferLines, order, string.Format("{0}:{1},{2}", Uniconta.ClientTools.Localization.lookup("OrdersLine"), order._OrderNumber, order._DCAccount));
                    break;

                case CWConfirmationBox.ConfirmationResultEnum.No:
                    break;
                }
            };
            confirmationBox.Show();
        }
Пример #8
0
        public ResponseDTO AddDCOrder(CreateDCOrderDTO dCOrderDTO)
        {
            ResponseDTO        responseDTO        = new ResponseDTO();
            DistributionCenter distributionCenter = unitOfWork.DistributionCenterRepository.GetById(dCOrderDTO.DCId);

            if (distributionCenter == null)
            {
                throw new PlatformModuleException("DC Details Not Found");
            }
            else if (distributionCenter.DCAddresses != null && distributionCenter.DCAddresses.Count() == 0)
            {
                throw new PlatformModuleException("DC Address details Not Found");
            }
            else
            {
                DCOrder dcOrder = new DCOrder();
                dcOrder.DCOrderId            = unitOfWork.DashboardRepository.NextNumberGenerator("DCOrder");
                dcOrder.DCOrderNumber        = distributionCenter.DCCode + "OD" + dcOrder.DCOrderId.ToString();
                dcOrder.DCId                 = dCOrderDTO.DCId;
                dcOrder.OrderAddressId       = distributionCenter.DCAddresses.FirstOrDefault().DCAddressId;
                dcOrder.OrderDate            = DateTimeHelper.GetISTDateTime();
                dcOrder.CreatedDate          = DateTimeHelper.GetISTDateTime();
                dcOrder.ModifiedDate         = DateTimeHelper.GetISTDateTime();
                dcOrder.CreatedBy            = dcOrder.ModifiedBy = distributionCenter.AgentName;
                dcOrder.IsDeleted            = false;
                dcOrder.OrderStatusId        = (int)OrderStatus.Placed;
                dcOrder.DeliveryExpectedDate = DateTimeHelper.GetISTDateTime().AddDays(1);
                dcOrder.OrderComments        = dCOrderDTO.OrderComments;
                if (dCOrderDTO.CreateDCOrderDtlList != null)
                {
                    foreach (var dcOrderDtlDTO in dCOrderDTO.CreateDCOrderDtlList)
                    {
                        //  this.CheckForExistingCollectionDetailByDateShiftProduct(vLCMilkCollection.CollectionDateTime.Value.Date, vLCMilkCollectionDTO.ShiftId, vlcCollectionDtlDTO.ProductId, vLCMilkCollectionDTO.CustomerId);
                        DCOrderDtl dCOrderDtl = new DCOrderDtl();
                        dCOrderDtl.DCOrderDtlId = unitOfWork.DashboardRepository.NextNumberGenerator("DCOrderDtl");
                        dCOrderDtl.DCOrderId    = dcOrder.DCOrderId;
                        DCOrderConvertor.ConvertToDCOrderDtlEntity(ref dCOrderDtl, dcOrderDtlDTO, false);
                        unitOfWork.DCOrderDtlRepository.Add(dCOrderDtl);
                    }

                    dcOrder.OrderTotalPrice     = dCOrderDTO.CreateDCOrderDtlList.Sum(s => s.TotalPrice);
                    dcOrder.TotalOrderQuantity  = dCOrderDTO.CreateDCOrderDtlList.Sum(s => s.QuantityOrdered);
                    dcOrder.TotalActualQuantity = dcOrder.TotalOrderQuantity;
                }
                else
                {
                    throw new PlatformModuleException("DC Order Detail Not Found");
                }

                unitOfWork.DCOrderRepository.Add(dcOrder);
                //   UpdateOrderPaymentDetailsForOrder(distributionCenter, dcOrder);
                unitOfWork.SaveChanges();
                responseDTO.Status  = true;
                responseDTO.Message = String.Format("DC Order Placed Successfully ");
                responseDTO.Data    = this.GetOrderDetailsByOrderId(dcOrder.DCOrderId);

                return(responseDTO);
            }
        }
 public CWCreateOrderFromQuickInvoice(CrudAPI _api, string account, bool _isOrder, DCOrder _dcOrder)
 {
     api          = _api;
     this.Account = account;
     dcOrder      = _dcOrder;
     isOrder      = _isOrder;
     InitPage();
 }
Пример #10
0
 protected override void SyncEntityMasterRowChanged(UnicontaBaseEntity args)
 {
     dgDebtorOrderProjectLineGrid.UpdateMaster(args);
     debtorOrder = dgDebtorOrderProjectLineGrid.masterRecord as Uniconta.DataModel.DCOrder;
     if (debtorOrder != null)
     {
         api.Read((UnicontaBaseEntity)debtorOrder);
         SetHeader(string.Concat(Uniconta.ClientTools.Localization.lookup("ProjectAdjustments"), ": ", NumberConvert.ToString(debtorOrder._OrderNumber)));
     }
     InitQuery();
 }
Пример #11
0
        static public void ShowOrderLines(byte thisDCType, DCOrder order, GridBasePage page, CorasauDataGrid grid)
        {
            string orderMsg, lineMsg, ctrl;
            var    DCType = order.__DCType();

            switch (DCType)
            {
            case 2:
                orderMsg = "PurchaseOrderCreated";
                lineMsg  = "PurchaseLines";
                ctrl     = TabControls.CreditorOrderLines;
                break;

            case 3:
                orderMsg = "OfferOrderCreated";
                lineMsg  = "OfferLine";
                ctrl     = TabControls.DebtorOfferLines;
                break;

            case 4:
                orderMsg = "ProductionOrderCreated";
                lineMsg  = "ProductionLines";
                ctrl     = TabControls.ProductionOrderLines;
                break;

            default:
                orderMsg = "SalesOrderCreated";
                lineMsg  = "OrdersLine";
                ctrl     = TabControls.DebtorOrderLines;
                break;
            }
            var confrimationText = string.Format(" {0}. {1}:{2},{3}:{4}\r\n{5}", Uniconta.ClientTools.Localization.lookup(orderMsg), Uniconta.ClientTools.Localization.lookup("OrderNumber"), order._OrderNumber,
                                                 Uniconta.ClientTools.Localization.lookup("Account"), order._DCAccount, string.Concat(string.Format(Uniconta.ClientTools.Localization.lookup("GoTo"), Uniconta.ClientTools.Localization.lookup(lineMsg)), " ?"));

            var confirmationBox = new CWConfirmationBox(confrimationText, string.Empty, false);

            confirmationBox.Closing += delegate
            {
                if (DCType == thisDCType)
                {
                    grid.UpdateItemSource(1, order as UnicontaBaseEntity);
                }
                if (confirmationBox.DialogResult == null)
                {
                    return;
                }
                if (confirmationBox.ConfirmationResult == CWConfirmationBox.ConfirmationResultEnum.Yes)
                {
                    page.AddDockItem(ctrl, order, string.Format("{0}:{1},{2}", Uniconta.ClientTools.Localization.lookup(lineMsg), order._OrderNumber, order._DCAccount));
                }
            };
            confirmationBox.Show();
        }
        public static async void FindItemFromCustomerItem(DCOrderLineClient rec, DCOrder order, QueryAPI api, string CustomerItemNumber)
        {
            var ap      = new Uniconta.API.Inventory.ReportAPI(api);
            var variant = await ap.FindItemFromCustomerItem(order, CustomerItemNumber);

            if (variant != null)
            {
                rec.Item     = variant._Item;
                rec.Variant1 = variant._Variant1;
                rec.Variant2 = variant._Variant2;
                rec.Variant3 = variant._Variant3;
                rec.Variant4 = variant._Variant4;
                rec.Variant5 = variant._Variant5;
            }
        }
Пример #13
0
        private void InitPage(UnicontaBaseEntity master)
        {
            InitializeComponent();
            localMenu.dataGrid = dgDebtorOrderProjectLineGrid;
            SetRibbonControl(localMenu, dgDebtorOrderProjectLineGrid);
            dgDebtorOrderProjectLineGrid.api = api;
            dgDebtorOrderProjectLineGrid.UpdateMaster(master);
            dgDebtorOrderProjectLineGrid.BusyIndicator = busyIndicator;
            localMenu.OnItemClicked += localMenu_OnItemClicked;
            dgDebtorOrderProjectLineGrid.View.DataControl.CurrentItemChanged += DataControl_CurrentItemChanged;
            dictPriceLookup = new Dictionary <string, Uniconta.API.DebtorCreditor.FindPrices>();
            debtorOrder     = master as DCOrder;
            RibbonBase rb = (RibbonBase)localMenu.DataContext;

            if (rb != null)
            {
                UtilDisplay.RemoveMenuCommand(rb, "Adjustment");
            }
        }
        void CallJoinTwoOrder(DCOrder fromOrder, DCOrder toOrder)
        {
            DeletePostedJournal delDialog = new DeletePostedJournal(true);

            delDialog.Closed += async delegate
            {
                if (delDialog.DialogResult == true)
                {
                    OrderAPI   orderApi = new OrderAPI(api);
                    ErrorCodes res      = await orderApi.JoinTwoOrders(fromOrder, toOrder);

                    if (res == ErrorCodes.Succes)
                    {
                        this.DialogResult = true;
                    }
                    UtilDisplay.ShowErrorCode(res);
                }
            };
            delDialog.Show();
        }
        public ItemVariantAddPage(DCOrderLineClient line, DCOrder master) : base(null)
        {
            DataContext = this;
            InitializeComponent();
            localMenu.dataGrid = dgItemVariant;
            dgItemVariant.api  = api;
            SetRibbonControl(localMenu, dgItemVariant);
            dgItemVariant.BusyIndicator = busyIndicator;

            this.master  = master;
            this.line    = line;
            this.invItem = line.InvItem;

            var standardVariants = api.GetCache(typeof(Uniconta.DataModel.InvStandardVariant));

            stdVariant = (InvStandardVariant)standardVariants?.Get(invItem._StandardVariant);
            if (stdVariant != null)
            {
                VariantSetup(colVariant1, colVariant2, colVariant3, colVariant4, colVariant5, stdVariant);
            }

            localMenu.OnItemClicked += localMenu_OnItemClicked;
        }
Пример #16
0
 public FindPrices(DCOrder order, QueryAPI api)
 {
     this.order  = order;
     this.api    = api;
     LoadingTask = LoadBaseData(api);
 }
Пример #17
0
        public void UpdateOrderPaymentDetailsForOrder(DistributionCenter distributionCenter, DCOrder dCOrder)
        {
            DCPaymentDetail dCPaymentDetail = new DCPaymentDetail();

            dCPaymentDetail.DCPaymentId     = unitOfWork.DashboardRepository.NextNumberGenerator("DCPaymentDetail");
            dCPaymentDetail.CreatedDate     = dCPaymentDetail.ModifiedDate = DateTimeHelper.GetISTDateTime();
            dCPaymentDetail.CreatedBy       = dCPaymentDetail.ModifiedBy = distributionCenter.AgentName;
            dCPaymentDetail.DCId            = distributionCenter.DCId;
            dCPaymentDetail.DCOrderId       = dCOrder.DCOrderId;
            dCPaymentDetail.IsDeleted       = false;
            dCPaymentDetail.PaymentComments = "Initial Order Amount";
            dCPaymentDetail.PaymentDate     = DateTimeHelper.GetISTDateTime();
            dCPaymentDetail.PaymentDrAmount = dCOrder.OrderTotalPrice;
            unitOfWork.DCPaymentDetailRepository.Add(dCPaymentDetail);
            UpdateDCWalletForOrder(distributionCenter.DCId, dCOrder.OrderTotalPrice, false);
        }
Пример #18
0
        private void GenerateInvoice(DCOrder dbOrder)
        {
            InvoiceAPI Invapi         = new InvoiceAPI(api);
            bool       showSendByMail = false;
            var        debtor         = ClientHelper.GetRef(dbOrder.CompanyId, typeof(Debtor), dbOrder._DCAccount) as Debtor;

            if (debtor != null)
            {
                var InvoiceAccount = dbOrder._InvoiceAccount ?? debtor._InvoiceAccount;
                if (InvoiceAccount != null)
                {
                    debtor = ClientHelper.GetRef(dbOrder.CompanyId, typeof(Debtor), InvoiceAccount) as Debtor;
                }
                if (debtor != null)
                {
                    if (debtor._PricesInclVat != dbOrder._PricesInclVat)
                    {
                        var confirmationMsgBox = UnicontaMessageBox.Show(string.Format("{0}.\n{1}", string.Format(Uniconta.ClientTools.Localization.lookup("DebtorAndOrderMix"), Uniconta.ClientTools.Localization.lookup("InclVat")),
                                                                                       Uniconta.ClientTools.Localization.lookup("ProceedConfirmation")), Uniconta.ClientTools.Localization.lookup("Confirmation"), MessageBoxButton.OKCancel);
                        if (confirmationMsgBox != MessageBoxResult.OK)
                        {
                            return;
                        }
                    }
                    if (!api.CompanyEntity.SameCurrency(dbOrder._Currency, debtor._Currency))
                    {
                        var confirmationMsgBox = UnicontaMessageBox.Show(string.Format("{0}.\n{1}", string.Format(Uniconta.ClientTools.Localization.lookup("CurrencyMismatch"), AppEnums.Currencies.ToString((int)debtor._Currency), dbOrder.Currency),
                                                                                       Uniconta.ClientTools.Localization.lookup("ProceedConfirmation")), Uniconta.ClientTools.Localization.lookup("Confirmation"), MessageBoxButton.OKCancel);
                        if (confirmationMsgBox != MessageBoxResult.OK)
                        {
                            return;
                        }
                    }
                    showSendByMail = !string.IsNullOrEmpty(debtor._InvoiceEmail);
                }
            }
            else
            {
                api.CompanyEntity.LoadCache(typeof(Debtor), api, true);
            }

            string            debtorName           = debtor?._Name ?? dbOrder._DCAccount;
            bool              invoiceInXML         = debtor?._InvoiceInXML ?? false;
            CWGenerateInvoice GenrateInvoiceDialog = new CWGenerateInvoice(true, string.Empty, false, true, true, showNoEmailMsg: !showSendByMail, debtorName: debtorName, isOrderOrQuickInv: true, isDebtorOrder: true, InvoiceInXML: invoiceInXML);

#if !SILVERLIGHT
            GenrateInvoiceDialog.DialogTableId = 2000000010;
#endif
            GenrateInvoiceDialog.Closed += async delegate
            {
                if (GenrateInvoiceDialog.DialogResult == true)
                {
                    busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("SendingWait");
                    busyIndicator.IsBusy      = true;
                    var showOrPrint = GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint;

                    var invoicePostingResult = new InvoicePostingPrintGenerator(api, this, dbOrder, null, GenrateInvoiceDialog.GenrateDate, 0, GenrateInvoiceDialog.IsSimulation, CompanyLayoutType.Invoice, showOrPrint,
                                                                                GenrateInvoiceDialog.InvoiceQuickPrint, GenrateInvoiceDialog.NumberOfPages, GenrateInvoiceDialog.SendByEmail, GenrateInvoiceDialog.Emails, GenrateInvoiceDialog.sendOnlyToThisEmail,
                                                                                GenrateInvoiceDialog.GenerateOIOUBLClicked, GenrateInvoiceDialog.PostOnlyDelivered, null);

                    busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("GeneratingPage");
                    busyIndicator.IsBusy      = true;
                    var result = await invoicePostingResult.Execute();

                    busyIndicator.IsBusy = false;

                    if (result)
                    {
                        Task reloadTask = null;
                        if (!GenrateInvoiceDialog.IsSimulation && dbOrder._DeleteLines)
                        {
                            reloadTask = BindGrid();
                        }

                        if (invoicePostingResult.PostingResult.Header._InvoiceNumber != 0)
                        {
                            var msg = string.Format(Uniconta.ClientTools.Localization.lookup("InvoiceHasBeenGenerated"), invoicePostingResult.PostingResult.Header._InvoiceNumber);
                            msg = string.Format("{0}{1}{2} {3}", msg, Environment.NewLine, Uniconta.ClientTools.Localization.lookup("LedgerVoucher"), invoicePostingResult.PostingResult.Header._Voucher);
                            UnicontaMessageBox.Show(msg, Uniconta.ClientTools.Localization.lookup("Message"), MessageBoxButton.OK);

#if !SILVERLIGHT
                            if (GenrateInvoiceDialog.GenerateOIOUBLClicked && !GenrateInvoiceDialog.IsSimulation)
                            {
                                GenerateOIOXml(this.api, invoicePostingResult.PostingResult);
                            }
#endif
                        }
                    }
                    else
                    {
                        Utility.ShowJournalError(invoicePostingResult.PostingResult.ledgerRes, dgDebtorOrdersGrid);
                    }
                }
            };
            GenrateInvoiceDialog.Show();
        }
Пример #19
0
 /// <summary>
 /// Initialization for Post Invoice and DebtorOrder Client
 /// </summary>
 /// <param name="postingResult">PostInvoice result</param>
 /// <param name="api">Current api instance</param>
 /// <param name="companyLayoutType">Layout type</param>
 /// <param name="orderClient">DebtorOrder/DebtorOffer client</param>
 public DebtorInvoicePrintReport(InvoicePostingResult postingResult, CrudAPI api, CompanyLayoutType companyLayoutType, DCOrder orderClient) : this(postingResult, api, companyLayoutType)
 {
     DebtorOrder = orderClient;
 }
        async private Task <IEnumerable <DCOrderLineClient> > CreateDCOrderLinesFromInvoice(DCOrder dcOrder, DCInvoiceClient dcInvoiceClient, bool checkIfCreditNote)
        {
            var lstOrderlines = new List <DCOrderLineClient>();

            var invoiceLines = await api.Query <DebtorInvoiceLines>(dcInvoiceClient);

            if (invoiceLines == null || invoiceLines.Length == 0)
            {
                return(null);
            }

            Array.Sort(invoiceLines, new InvLineSort());
            lstOrderlines.Capacity = invoiceLines.Length;

            int    lineNo = 0;
            double sign   = checkIfCreditNote ? -1d : 1d;

            foreach (var invoiceline in invoiceLines)
            {
                DCOrderLineClient line;
                switch (dcOrder.__DCType())
                {
                case 1: line = api.CompanyEntity.CreateUserType <DebtorOrderLineClient>(); break;

                case 3: line = api.CompanyEntity.CreateUserType <DebtorOfferLineClient>(); break;

                case 6: line = api.CompanyEntity.CreateUserType <ProjectInvoiceProposalLineClient>(); break;

                default: line = api.CompanyEntity.CreateUserType <DebtorOrderLineClient>(); break;
                }
                line.SetMaster((UnicontaBaseEntity)dcOrder);
                line._LineNumber  = ++lineNo;
                line._Item        = invoiceline._Item;
                line._DiscountPct = invoiceline._DiscountPct;
                line._Discount    = invoiceline._Discount;
                line._Qty         = invoiceline.InvoiceQty * sign;
                line._Price       = invoiceline.CurrencyEnum != null ? invoiceline._PriceCur : invoiceline._Price;
                if (line._Price != 0)
                {
                    line._Price += invoiceline._PriceVatPart;
                }

                if (line._Qty * line._Price == 0)
                {
                    line._AmountEntered = ((invoiceline.CurrencyEnum != null ? invoiceline._AmountCur : invoiceline._Amount) + invoiceline._PriceVatPart) * sign;
                }

                line._Dim1      = invoiceline._Dim1;
                line._Dim2      = invoiceline._Dim2;
                line._Dim3      = invoiceline._Dim3;
                line._Dim4      = invoiceline._Dim4;
                line._Dim5      = invoiceline._Dim5;
                line._Employee  = invoiceline._Employee;
                line._Note      = invoiceline._Note;
                line._Text      = invoiceline._Text;
                line._Unit      = invoiceline._Unit;
                line._Variant1  = invoiceline._Variant1;
                line._Variant2  = invoiceline._Variant2;
                line._Variant3  = invoiceline._Variant3;
                line._Variant4  = invoiceline._Variant4;
                line._Variant5  = invoiceline._Variant5;
                line._Warehouse = invoiceline._Warehouse;
                line._Location  = invoiceline._Location;

                var selectedItem = (InvItem)items?.Get(invoiceline._Item);
                if (selectedItem != null)
                {
                    line._Item          = selectedItem._Item;
                    line._CostPriceLine = selectedItem._CostPrice;
                    if (selectedItem._Unit != 0)
                    {
                        line._Unit = selectedItem._Unit;
                    }
                }

                lstOrderlines.Add(line);
            }
            return(lstOrderlines);
        }
Пример #21
0
 public Task OrderChanged(DCOrder order)
 {
     this.order = order;
     return(LoadingTask = LoadBaseData(api));
 }
        static public Tuple <double, double, double> RecalculateLineSum(DCOrder order, IEnumerable <DCOrderLineClient> source, double exRate)
        {
            double lastTotal = 0d, lastCost = 0d;
            double Amountsum = 0d;
            double Costsum   = 0d;
            double vat       = 0d;
            string VatCode   = null;
            var    inclVat   = (order != null) ? order._PricesInclVat : false;

            if (source != null)
            {
                if (inclVat)
                {
                    var dct = order.__DCType();
                    if (dct == 1 || dct == 3)
                    {
                        VatCode = ((Debtor)ClientHelper.GetRef(order.CompanyId, typeof(Debtor), order._DCAccount))?._Vat;
                    }
                    else
                    {
                        inclVat = false;
                    }
                }

                foreach (var lin in source)
                {
                    var orderLine = (DCOrderLineClient)lin;
                    if (!orderLine._Subtotal)
                    {
                        var cost = orderLine.costvalue();
                        Costsum += cost;
                        var sales = orderLine._Amount;
                        Amountsum += sales;
                        if (exRate != 0)
                        {
                            orderLine._ExchangeRate = exRate;
                        }
                        else
                        {
                            exRate = orderLine._ExchangeRate;
                        }

                        if (inclVat && VatCode == null)
                        {
                            VatCode = orderLine._Vat;
                            if (VatCode == null && orderLine._Item != null)
                            {
                                VatCode = orderLine.InvItem?.InventoryGroup?.SalesVat;
                            }
                        }
                    }
                    else
                    {
                        var subtotal = Amountsum - lastTotal;
                        if (subtotal != orderLine._AmountEntered)
                        {
                            orderLine._AmountEntered = subtotal;
                            orderLine._CostPrice     = Costsum - lastCost;
                            if (orderLine._Price != 0d)
                            {
                                orderLine.Price = 0d; // this will redraw screen
                            }
                            else
                            {
                                orderLine.NotifyPropertyChanged(nameof(orderLine.Total));
                            }
                        }
                        lastTotal = Amountsum;
                        lastCost  = Costsum;
                    }
                }
            }
            double AmountsumCur = exRate == 0d ? Amountsum : Math.Round(Amountsum / exRate, 2);

            if (inclVat && VatCode != null)
            {
                var vatRef = (GLVat)ClientHelper.GetRef(order.CompanyId, typeof(GLVat), VatCode);
                if (vatRef != null && vatRef._Rate != 0d)
                {
                    AmountsumCur = Math.Round(AmountsumCur * 100 / (100 + vatRef._Rate), 2);
                }
            }
            Costsum = Math.Round(Costsum, 2);
            return(Tuple.Create(Amountsum, Costsum, AmountsumCur));
        }