コード例 #1
0
        //删除采购单
        public void DeletePurchase(PurchaseViewModel model)
        {
            var purchase = _purchaseRepository.FindBy(x => x.PurchaseId == model.PurchaseId).Include(z => z.PurchaseApplication.Item).FirstOrDefault();

            if (purchase == null)
            {
                return;
            }
            var deletingPurchaseNumber = purchase.PurchaseNumber;

            purchase.PurchaseApplication.ProcessStatus = ProcessStatusEnum.申请审核中;
            purchase.PurchaseApplication.AuditStatus   = AuditStatusEnum.未审批;
            purchase.Status = ProcessStatusEnum.申请审核中;

            _purchaseRepository.Delete(purchase);
            _purchaseRepository.Save();

            PurchaseHeader purchaseHeader = _purchaseHeaderRepository.GetPurchaseHeader(deletingPurchaseNumber);

            if (purchaseHeader.Purchases == null || purchaseHeader.Purchases.Count == 0)
            {
                _purchaseHeaderRepository.Delete(purchaseHeader);
                _purchaseHeaderRepository.Save();
            }
        }
コード例 #2
0
        private bool ValidateForPosting(ref BillingReceptionModel item, NAVConfigurations _config)
        {
            bool isValid = true;

            try
            {
                //Check if exists
                bool documentAlreadyExist = DBNAV2017Purchases.DocumentExistsFor(_config.NAVDatabaseName, _config.NAVCompanyName, item.Id);
                if (documentAlreadyExist)
                {
                    item.eMessage = "Já foi criada uma fatura para a receção selecionada.";
                    isValid       = false;
                }
            }
            catch (Exception ex)
            {
                item.eMessage = "Não foi possivel validar a existência da fatura. Por favor tente novamente. Se o problema persistir contacte o administrador.";
                isValid       = false;
            }
            if (!isValid)
            {
                return(isValid);
            }


            PurchaseHeader purchOrderInfo = null;

            if (Convert.ToDateTime(item.DataDocFornecedor) > item.DataModificacao)
            {
                item.eMessage = "A data do documento (" + item.DataDocFornecedor + ") é maior que a data do registo (" + (item.DataModificacao.HasValue ? item.DataModificacao.Value.ToString("yyyy-MM-dd") : string.Empty) + ")";
                //item.eMessages.Add(new TraceInformation(TraceType.Error, "A data do documento: " + item.DataDocFornecedor + " é maior que a data do registo: " + item.DataModificacao));
                isValid = false;
            }
            else if (!string.IsNullOrEmpty(item.NumEncomenda))
            {
                purchOrderInfo = DBNAV2017Purchases.GetOrderById(_config.NAVDatabaseName, _config.NAVCompanyName, item.NumEncomenda);
                if (purchOrderInfo.No != item.NumEncomenda)
                {
                    item.eMessage = "A encomenda " + item.NumEncomenda + " não existe ou já está registada.";
                    //item.eMessages.Add(new TraceInformation(TraceType.Error, "A encomenda " + item.NumEncomenda + " não existe ou já está registada."));
                    isValid = false;
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(item.NumEncomendaManual))
                {
                    purchOrderInfo = DBNAV2017Purchases.GetOrderById(_config.NAVDatabaseName, _config.NAVCompanyName, item.NumEncomendaManual);
                    if (purchOrderInfo.No != item.NumEncomendaManual)
                    {
                        item.eMessage = "A encomenda (Núm. Encomenda Manual) " + item.NumEncomendaManual + " não existe ou já está registada.";
                        //item.eMessages.Add(new TraceInformation(TraceType.Error, "A encomenda (Núm. Encomenda Manual) " + item.NumEncomendaManual + " não existe ou já está registada."));
                        isValid = false;
                    }
                }
            }
            return(isValid);
        }
コード例 #3
0
        private static List <PurchaseHeader> GetPurchasesBy(string NAVDatabaseName, string NAVCompanyName, NAVBaseDocumentTypes type, string supplierId, string orderId, string externalDocNo)
        {
            try
            {
                List <PurchaseHeader> result = new List <PurchaseHeader>();
                using (var ctx = new SuchDBContextExtention())
                {
                    var parameters = new[] {
                        new SqlParameter("@DBName", NAVDatabaseName),
                        new SqlParameter("@CompanyName", NAVCompanyName),
                        new SqlParameter("@Type", (int)type),
                        new SqlParameter("@SupplierId", supplierId),
                        new SqlParameter("@OrderId", orderId),
                        new SqlParameter("@ExternalDocNo", externalDocNo)
                    };

                    IEnumerable <dynamic> data = ctx.execStoredProcedure("exec NAV2017Encomendas @DBName, @CompanyName, @Type, @SupplierId, @OrderId, @ExternalDocNo", parameters);

                    foreach (dynamic temp in data)
                    {
                        var item = new PurchaseHeader();

                        item.DocumentType         = (int)temp.DocumentType;
                        item.No                   = temp.No;
                        item.OrderDate            = temp.OrderDate is DBNull ? string.Empty : ((DateTime)temp.OrderDate).ToString("yyyy-MM-dd");
                        item.DueDate              = temp.DueDate is DBNull ? string.Empty : ((DateTime)temp.DueDate).ToString("yyyy-MM-dd");
                        item.LocationCode         = temp.LocationCode;
                        item.RegionId             = temp.RegionId is DBNull ? string.Empty : temp.RegionId;
                        item.FunctionalAreaId     = temp.FunctionalAreaId is DBNull ? string.Empty : temp.FunctionalAreaId;
                        item.RespCenterId         = temp.RespCenterId is DBNull ? string.Empty : temp.RespCenterId;
                        item.VendorOrderNo        = temp.VendorOrderNo;
                        item.VendorInvoiceNo      = temp.VendorInvoiceNo;
                        item.VendorCrMemoNo       = temp.VendorCrMemoNo;
                        item.BuyFromVendorNo      = temp.BuyFromVendorNo;
                        item.BuyFromVendorName    = temp.BuyFromVendorName;
                        item.DocumentDate         = temp.DocumentDate is DBNull ? string.Empty : ((DateTime)temp.DocumentDate).ToString("yyyy-MM-dd");
                        item.DimensionSetID       = temp.DimensionSetID;
                        item.RelatedDocument      = temp.RelatedDocument;
                        item.ValorFactura         = temp.ValorFactura;
                        item.SourceDocNo          = temp.SourceDocNo;
                        item.Quantity             = temp.Quantity;
                        item.QuantityReceived     = temp.QuantityReceived;
                        item.AmountRcdNotInvoiced = temp.AmountRcdNotInvoiced;
                        item.Amount               = temp.Amount;
                        item.AmountIncludingVAT   = temp.AmountIncludingVAT;


                        result.Add(item);
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
コード例 #4
0
        //从采购单入库
        public void CreateInStock(IList <PurchaseViewModel> models, string temp_instockNumber)
        {
            if (models != null && models.Count > 0)
            {
                IList <InStock> listOfInStocks   = new List <InStock>();
                PurchaseHeader  purchaseHeader   = _purchaseHeaderRepository.GetPurchaseHeader(models.FirstOrDefault()?.PurchaseNumber);
                InStockHeader   newInStockHeader = _mapper.Map <InStockHeader>(purchaseHeader);
                int             lastSerialNumber = _inStockHeaderRepository.GetLatestSerialNumber(DateTime.Now);
                newInStockHeader.SerialNo      = ++lastSerialNumber;
                newInStockHeader.InStockNumber = string.IsNullOrEmpty(temp_instockNumber) ? ServiceHelper.GenerateCodeNumber("RK", newInStockHeader.SerialNo) : temp_instockNumber;


                try
                {
                    _inStockHeaderRepository.Add(newInStockHeader);

                    foreach (PurchaseViewModel model in models)
                    {
                        InStock newInstock = _mapper.Map <InStock>(model);
                        newInstock.Total         = (model.PurchaseTotal - model.AlreadyInStock) >= model.ReadyForInStock ? model.ReadyForInStock : model.PurchaseTotal - model.AlreadyInStock;
                        newInstock.Type          = purchaseHeader.RequestCategory;
                        newInstock.InStockNumber = newInStockHeader.InStockNumber;
                        newInstock.Status        = ProcessStatusEnum.采购入库;
                        newInstock.PositionName  = "Stage";
                        if (newInstock.Total <= 0)
                        {
                            continue;
                        }

                        listOfInStocks.Add(newInstock);

                        if (newInstock.Total + model.AlreadyInStock == model.PurchaseTotal)
                        {
                            _purchaseService.UpdatePurchaseProcessStatus(model.PurchaseId, ProcessStatusEnum.采购入库);
                        }
                        else
                        {
                            _purchaseService.UpdatePurchaseProcessStatus(model.PurchaseId, ProcessStatusEnum.采购中);
                        }
                        _managementService.UpdateStorage(model.Code, model.Position, newInstock.Total, newInstock.InStockNumber);
                        _managementService.UpdateItemPrice(model.ItemId, model.Price);
                    }
                    if (listOfInStocks.Count > 0)
                    {
                        _inStockRepository.AddRange(listOfInStocks);
                        _inStockHeaderRepository.Save();
                        _inStockRepository.Save();
                    }
                }
                catch (DbUpdateException)
                {
                }
            }
        }
コード例 #5
0
        public static bool DocumentExistsFor(string NAVDatabaseName, string NAVCompanyName, string billingReceptionNo)
        {
            List <PurchaseHeader> result = new List <PurchaseHeader>();

            using (var ctx = new SuchDBContextExtention())
            {
                var parameters = new[] {
                    new SqlParameter("@DBName", NAVDatabaseName),
                    new SqlParameter("@CompanyName", NAVCompanyName),
                    new SqlParameter("@BillingReceptionNo", billingReceptionNo)
                };

                IEnumerable <dynamic> data = ctx.execStoredProcedure("exec NAV2017RecFaturacao @DBName, @CompanyName, @BillingReceptionNo", parameters);

                foreach (dynamic temp in data)
                {
                    var item = new PurchaseHeader();

                    item.No = temp.No;
                    result.Add(item);
                }
            }
            return(result.Count > 0);
        }
コード例 #6
0
        //生成采购单
        public int CreatePurchase(IList <PurchaseApplicationViewModel> models, string temp_purchaseNumber)
        {
            PurchaseHeader   newPurchaseHeader = null;
            IList <Purchase> listOfPurchase    = new List <Purchase>();

            models = models.Where(x => x.TotalConfirmed > 0).ToList();
            if (models.Count != 0)
            {
                try
                {
                    foreach (var item in models)
                    {
                        var existingPurchase = _purchaseRepository.FindBy(x => x.PurchaseApplicationId == item.PurchaseApplicationId && x.IsDeleted && item.SupplierName == x.PurchaseHeader.SupplierId).FirstOrDefault();

                        // 重新修改之前的采购单
                        if (existingPurchase != null)
                        {
                            existingPurchase.PurchaseTotal = item.TotalConfirmed;
                            existingPurchase.IsDeleted     = false;
                            switch (item.RequestCategory)
                            {
                            case RequestCategoriesEnum.材料需求:
                                existingPurchase.Status = ProcessStatusEnum.采购中;
                                break;

                            case RequestCategoriesEnum.采购退货:
                                existingPurchase.Status = ProcessStatusEnum.退货中;
                                break;
                            }
                            existingPurchase.UpdateDate = DateTime.Now;
                            _purchaseRepository.Save();
                            switch (item.RequestCategory)
                            {
                            case RequestCategoriesEnum.材料需求:
                                UpdatePurchaseApplicationProcessStatus(item.PurchaseApplicationId, ProcessStatusEnum.采购中);
                                break;

                            case RequestCategoriesEnum.采购退货:
                                UpdatePurchaseApplicationProcessStatus(item.PurchaseApplicationId, ProcessStatusEnum.退货中);
                                break;
                            }
                            return(1);
                        }
                        else
                        {
                            var purchaseApplicationHeader = _purchaseApplicationHeaderRepository.FindBy(x => x.PurchaseApplicationNumber == item.ApplicationNumber).Include(c => c.RequestHeader).FirstOrDefault();
                            if (newPurchaseHeader == null && purchaseApplicationHeader != null)
                            {
                                newPurchaseHeader            = _mapper.Map <PurchaseHeader>(purchaseApplicationHeader);
                                newPurchaseHeader.SupplierId = item.SupplierName;
                                newPurchaseHeader.CreateDate = DateTime.Now;
                                newPurchaseHeader.UpdateDate = DateTime.Now;
                                //Create a new purchase header.
                                var prefix           = newPurchaseHeader.RequestCategory == RequestCategoriesEnum.采购退货 ? "RCG" : "CG";
                                var lastSerialNumber = _purchaseHeaderRepository.GetLatestSerialNumber(DateTime.Now);
                                newPurchaseHeader.SerialNo        = ++lastSerialNumber;
                                newPurchaseHeader.PurchaseNumber  = string.IsNullOrEmpty(temp_purchaseNumber) ? ServiceHelper.GenerateCodeNumber(prefix, newPurchaseHeader.SerialNo) : temp_purchaseNumber;
                                newPurchaseHeader.RequestCategory = purchaseApplicationHeader.RequestHeader.RequestCategory;
                            }

                            if (newPurchaseHeader == null)
                            {
                                continue;
                            }
                            var newPurchase = new Purchase
                            {
                                PurchaseNumber        = newPurchaseHeader.PurchaseNumber,
                                CurrentPurchasePrice  = item.CurrentPurchasePrice,
                                PurchaseTotal         = item.TotalConfirmed,
                                PurchaseApplicationId = item.PurchaseApplicationId,
                                CreateDate            = DateTime.Now,
                                UpdateDate            = DateTime.Now,
                                Status = purchaseApplicationHeader != null &&
                                         purchaseApplicationHeader.RequestHeader.RequestCategory ==
                                         RequestCategoriesEnum.采购退货
                                    ? ProcessStatusEnum.退货中
                                    : ProcessStatusEnum.采购中
                            };


                            listOfPurchase.Add(newPurchase);
                        }
                    }
                    _purchaseHeaderRepository.Add(newPurchaseHeader);
                    _purchaseRepository.AddRange(listOfPurchase);
                    _purchaseHeaderRepository.Save();
                    _purchaseRepository.Save();

                    //更新采购申请表的状态和需求表状态
                    foreach (var item in models)
                    {
                        UpdatePurchaseApplicationProcessStatus(item.PurchaseApplicationId,
                                                               item.RequestCategory == RequestCategoriesEnum.采购退货
                                ? ProcessStatusEnum.退货中
                                : ProcessStatusEnum.采购中);
                    }
                    return(1);
                }
                catch (DbUpdateException)
                {
                    return(0);
                }
            }
            return(0);
        }