コード例 #1
0
        public async void Should_Success_Update_Data()
        {
            var             facade   = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            var             facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod()));
            GarmentBeacukai data     = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            GarmentBeacukaiViewModel viewModel = await dataUtil(facade, GetCurrentMethod()).GetViewModel(USERNAME);

            //var ResponseUpdate = await facade.Update((int)data.Id, viewModel,data, USERNAME);
            //Assert.NotEqual(ResponseUpdate, 0);
            var newItem =
                new GarmentBeacukaiItemViewModel
            {
                selected = true
            };

            List <GarmentBeacukaiItemViewModel> Newitems = new List <GarmentBeacukaiItemViewModel>(viewModel.items);

            Newitems.Add(newItem);
            viewModel.items = Newitems;
            //List<GarmentBeacukaiItem> Newitems = new List<GarmentBeacukaiItem>(data.Items);
            var ResponseUpdate1 = await facade.Update((int)data.Id, viewModel, data, USERNAME);

            Assert.NotEqual(ResponseUpdate1, 0);
        }
コード例 #2
0
        public async Task Should_Success_Get_by_PO()
        {
            var facadeDO = new GarmentDeliveryOrderFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            GarmentDeliveryOrder dataDO = await dataUtilDO(facadeDO, GetCurrentMethod()).GetNewData();

            foreach (var i in dataDO.Items)
            {
                foreach (var d in i.Details)
                {
                    d.POSerialNumber = "PONO123";
                    d.RONo           = "RONO123";
                }
            }

            await facadeDO.Create(dataDO, USERNAME);

            var facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), GetServiceProvider().Object);

            GarmentBeacukai data = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME, dataDO);

            data.CustomsType = "BC 23";
            var Responses = await facade.Create(data, USERNAME);

            //var facadeReport = new GarmentBeacukaiFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));

            var Response = facade.ReadBCByPOSerialNumbers("PONO123,PONO123");

            Assert.NotNull(Response);
        }
コード例 #3
0
        public async Task <GarmentBeacukai> GetTestData(string user, GarmentDeliveryOrder garmentDeliveryOrder)
        {
            GarmentBeacukai model = await GetNewData(user, garmentDeliveryOrder);

            await facade.Create(model, user);

            return(model);
        }
コード例 #4
0
        public async Task <GarmentBeacukai> GetTestDataWithURN(string user)
        {
            GarmentBeacukai model = await GetNewDataWithURN(user);

            await facade.Create(model, user);

            return(model);
        }
コード例 #5
0
        public async void Should_Success_Create_Data()
        {
            var             facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            GarmentBeacukai data   = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            var Response = await facade.Create(data, USERNAME);

            Assert.NotEqual(Response, 0);
        }
コード例 #6
0
        public async Task Should_Success_Create_Data_null_BillNo()
        {
            var             facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            GarmentBeacukai data   = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            data.BillNo = "";
            var Response = await facade.Create(data, USERNAME);

            Assert.NotEqual(0, Response);
        }
コード例 #7
0
        public async Task <GarmentBeacukai> GetTestData1(string user)
        {
            var garmentDO = await Task.Run(() => garmentDeliveryOrderDataUtil.GetTestData());

            GarmentBeacukai model = await GetNewData(user, garmentDO);

            await facade.Create(model, user);

            return(model);
        }
コード例 #8
0
        public async void Should_Error_Create_Data()
        {
            var             facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            GarmentBeacukai model  = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            model.Items = null;
            Exception e = await Assert.ThrowsAsync <Exception>(async() => await facade.Create(model, USERNAME));

            Assert.NotNull(e.Message);
        }
コード例 #9
0
        public async void Should_Success_Get_Data_By_Id()
        {
            var             facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            GarmentBeacukai data   = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            var Responses = await facade.Create(data, USERNAME);

            var Response = facade.ReadById((int)data.Id);

            Assert.NotNull(Response);
        }
コード例 #10
0
        public async Task <int> Create(GarmentBeacukai model, string username, int clientTimeZoneOffset = 7)
        {
            int Created = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    EntityExtension.FlagForCreate(model, username, USER_AGENT);

                    foreach (GarmentBeacukaiItem item in model.Items)
                    {
                        GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.Include(m => m.Items)
                                                             .ThenInclude(i => i.Details).FirstOrDefault(s => s.Id == item.GarmentDOId);
                        if (deliveryOrder != null)
                        {
                            if (model.BillNo == "" | model.BillNo == null)
                            {
                                deliveryOrder.BillNo = GenerateBillNo();
                            }
                            else
                            {
                                deliveryOrder.BillNo = model.BillNo;
                            }
                            deliveryOrder.PaymentBill = GeneratePaymentBillNo();
                            deliveryOrder.CustomsId   = model.Id;
                            double qty = 0;
                            foreach (var deliveryOrderItem in deliveryOrder.Items)
                            {
                                foreach (var detail in deliveryOrderItem.Details)
                                {
                                    qty += detail.DOQuantity;
                                }
                            }
                            item.TotalAmount = Convert.ToDecimal(deliveryOrder.TotalAmount);
                            item.TotalQty    = qty;
                            EntityExtension.FlagForCreate(item, username, USER_AGENT);
                        }
                    }

                    this.dbSet.Add(model);
                    Created = await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Created);
        }
コード例 #11
0
        public async Task Should_Success_Get_All_Data_Excel()
        {
            var             facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            GarmentBeacukai data   = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            var Responses = await facade.Create(data, USERNAME);

            int year     = DateTimeOffset.Now.Year;
            var Facade   = new GarmentPurchaseDayBookReportFacade(ServiceProvider, _dbContext(GetCurrentMethod()));
            var Response = Facade.GenerateExcel(null, true, null, null, year, 0);

            Assert.NotNull(Response);
        }
コード例 #12
0
        public async Task Should_Success_Get_Excel_Data_BC_23()
        {
            var             facade = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            GarmentBeacukai data   = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            data.CustomsType = "BC 23";
            var Responses = await facade.Create(data, USERNAME);

            var facadeReport = new GarmentBC23ReportFacade(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));

            var Response = facadeReport.GetXLs(DateTime.Now, DateTime.Now, 7);

            Assert.IsType <MemoryStream>(Response);
        }
コード例 #13
0
        public async Task Should_Success_Update_Data()
        {
            var facade   = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            var facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod()));

            GarmentBeacukai data = await dataUtil(facade, GetCurrentMethod()).GetTestData1(USERNAME);

            GarmentBeacukaiViewModel viewModel = await dataUtil(facade, GetCurrentMethod()).GetViewModel(USERNAME);

            var newModelItem = new GarmentBeacukaiItem
            {
                GarmentDOId = viewModel.items.First().deliveryOrder.Id,
                TotalQty    = 1,
                TotalAmount = 1
            };

            data.Items.Add(newModelItem);

            List <GarmentBeacukaiItemViewModel> Newitems = new List <GarmentBeacukaiItemViewModel>();


            foreach (GarmentBeacukaiItem i in data.Items)
            {
                var newItem =
                    new GarmentBeacukaiItemViewModel
                {
                    selected      = true,
                    deliveryOrder = new Lib.ViewModels.GarmentDeliveryOrderViewModel.GarmentDeliveryOrderViewModel
                    {
                        Id = i.GarmentDOId,
                    },
                    Id = i.Id,

                    billNo   = null,
                    quantity = 0
                };
                Newitems.Add(newItem);
            }

            viewModel.Id    = data.Id;
            viewModel.items = Newitems;

            var ResponseUpdate1 = await facade.Update((int)data.Id, viewModel, data, USERNAME);

            Assert.NotEqual(0, ResponseUpdate1);

            var ResponseUpdate2 = await facade.Update((int)data.Id, viewModel, data, USERNAME);

            Assert.NotEqual(0, ResponseUpdate2);
        }
コード例 #14
0
        public async void Should_Success_Update_Data()
        {
            var             facade   = new GarmentBeacukaiFacade(_dbContext(GetCurrentMethod()), ServiceProvider);
            var             facadeDO = new GarmentDeliveryOrderFacade(ServiceProvider, _dbContext(GetCurrentMethod()));
            GarmentBeacukai data     = await dataUtil(facade, GetCurrentMethod()).GetNewData(USERNAME);

            var ResponseUpdate = await facade.Update((int)data.Id, data, USERNAME);

            Assert.NotEqual(ResponseUpdate, 0);
            List <GarmentBeacukaiItem> Newitems = new List <GarmentBeacukaiItem>(data.Items);
            var ResponseUpdate1 = await facade.Update((int)data.Id, data, USERNAME);

            Assert.NotEqual(ResponseUpdate, 0);
        }
コード例 #15
0
        public async Task <int> Update(int id, GarmentBeacukaiViewModel vm, GarmentBeacukai model, string user, int clientTimeZoneOffset = 7)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    EntityExtension.FlagForUpdate(model, user, USER_AGENT);
                    foreach (GarmentBeacukaiItemViewModel itemViewModel in vm.items)
                    {
                        GarmentBeacukaiItem item = model.Items.FirstOrDefault(s => s.Id.Equals(itemViewModel.Id));
                        if (itemViewModel.selected == true)
                        {
                            EntityExtension.FlagForUpdate(item, user, USER_AGENT);
                        }
                        else
                        {
                            EntityExtension.FlagForDelete(item, user, USER_AGENT);
                            GarmentDeliveryOrder deleteDO = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == itemViewModel.deliveryOrder.Id);
                            deleteDO.BillNo      = null;
                            deleteDO.PaymentBill = null;
                            deleteDO.CustomsId   = 0;
                        }
                    }


                    this.dbSet.Update(model);
                    Updated = await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }
コード例 #16
0
        public async Task <int> Update(int id, GarmentBeacukaiViewModel vm, GarmentBeacukai model, string user, int clientTimeZoneOffset = 7)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    GarmentBeacukai modelBC = dbSet.AsNoTracking().Include(a => a.Items).FirstOrDefault(s => s.Id == model.Id);

                    EntityExtension.FlagForUpdate(model, user, USER_AGENT);

                    var lastPaymentBill = GeneratePaymentBillNo();

                    foreach (GarmentBeacukaiItem item in model.Items)
                    {
                        GarmentBeacukaiItem          oldItem = modelBC.Items.FirstOrDefault(s => s.Id.Equals(item.Id));
                        GarmentBeacukaiItemViewModel itemVM  = vm.items.FirstOrDefault(s => s.deliveryOrder.Id.Equals(item.GarmentDOId));
                        if (itemVM.selected)
                        {
                            if (oldItem == null)
                            {
                                GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.Include(m => m.Items)
                                                                     .ThenInclude(i => i.Details).FirstOrDefault(s => s.Id == item.GarmentDOId);
                                if (deliveryOrder != null)
                                {
                                    var deliveryOrderEPOIds  = deliveryOrder.Items.Select(s => s.EPOId);
                                    var garmentExternalOrder = dbContext.GarmentExternalPurchaseOrders.Where(s => deliveryOrderEPOIds.Contains(s.Id));

                                    if (model.BillNo == "" | model.BillNo == null)
                                    {
                                        deliveryOrder.BillNo = GenerateBillNo();
                                    }
                                    else
                                    {
                                        deliveryOrder.BillNo = model.BillNo;
                                    }
                                    deliveryOrder.PaymentBill = string.Concat(lastPaymentBill.format, (lastPaymentBill.counterId++).ToString("D3"));
                                    //deliveryOrder.CustomsId = model.Id;
                                    double qty = 0;
                                    foreach (var deliveryOrderItem in deliveryOrder.Items)
                                    {
                                        foreach (var detail in deliveryOrderItem.Details)
                                        {
                                            qty += detail.DOQuantity;
                                        }
                                    }
                                    item.TotalAmount = Convert.ToDecimal(deliveryOrder.TotalAmount);
                                    item.TotalQty    = qty;
                                    EntityExtension.FlagForCreate(item, user, USER_AGENT);

                                    deliveryOrder.CustomsId = model.Id;

                                    var dppAmount         = 0.0;
                                    var currencyDPPAmount = 0.0;

                                    if (deliveryOrder.DOCurrencyCode == "IDR")
                                    {
                                        dppAmount = deliveryOrder.TotalAmount;
                                    }
                                    else
                                    {
                                        currencyDPPAmount = deliveryOrder.TotalAmount;
                                        dppAmount         = deliveryOrder.TotalAmount * deliveryOrder.DOCurrencyRate.GetValueOrDefault();
                                    }

                                    var categories    = string.Join(',', garmentExternalOrder.Select(s => s.Category).ToList().GroupBy(s => s).Select(s => s.Key));
                                    var paymentMethod = garmentExternalOrder.FirstOrDefault().PaymentType;
                                    var productNames  = string.Join(", ", deliveryOrder.Items.SelectMany(doItem => doItem.Details).Select(doDetail => doDetail.ProductName).ToList());

                                    await _garmentDebtBalanceService.CreateFromCustoms(new CustomsFormDto(0, string.Join("\n", categories), deliveryOrder.BillNo, deliveryOrder.PaymentBill, (int)deliveryOrder.Id, deliveryOrder.DONo, (int)model.SupplierId, model.SupplierCode, model.SupplierName, deliveryOrder.SupplierIsImport, (int)deliveryOrder.DOCurrencyId.GetValueOrDefault(), deliveryOrder.DOCurrencyCode, deliveryOrder.DOCurrencyRate.GetValueOrDefault(), productNames, deliveryOrder.ArrivalDate, dppAmount, currencyDPPAmount, paymentMethod));
                                }
                            }
                            else if (oldItem != null)
                            {
                                item.TotalAmount = oldItem.TotalAmount;
                                item.TotalQty    = oldItem.TotalQty;
                                EntityExtension.FlagForUpdate(item, user, USER_AGENT);
                            }
                        }
                        else
                        {
                            EntityExtension.FlagForDelete(item, user, USER_AGENT);
                            GarmentDeliveryOrder deleteDO = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == item.GarmentDOId);
                            deleteDO.BillNo      = null;
                            deleteDO.PaymentBill = null;
                            deleteDO.CustomsId   = 0;

                            await _garmentDebtBalanceService.RemoveCustoms((int)deleteDO.Id);
                        }
                    }


                    this.dbSet.Update(model);
                    Updated = await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }
コード例 #17
0
        public List <GarmentDispositionPaymentReportDto> GetReportByDate(DateTimeOffset startDate, DateTimeOffset endDate)
        {
            var dispositions = _dbContext.GarmentDispositionPurchases.Where(entity => entity.CreatedUtc >= startDate.DateTime && entity.CreatedUtc <= endDate.DateTime).ToList();

            var result = new List <GarmentDispositionPaymentReportDto>();

            if (dispositions.Count > 0)
            {
                var dispositionIds         = dispositions.Select(element => element.Id).ToList();
                var dispositionItems       = _dbContext.GarmentDispositionPurchaseItems.Where(entity => dispositionIds.Contains(entity.GarmentDispositionPurchaseId)).ToList();
                var dispositionItemIds     = dispositionItems.Select(element => element.Id).ToList();
                var dispositionDetails     = _dbContext.GarmentDispositionPurchaseDetailss.Where(entity => dispositionItemIds.Contains(entity.GarmentDispositionPurchaseItemId)).ToList();
                var epoIds                 = dispositionItems.Select(element => (long)element.EPOId).ToList();
                var externalPurchaseOrders = _dbContext.GarmentExternalPurchaseOrders.Where(entity => epoIds.Contains(entity.Id)).ToList();
                var deliveryOrderItems     = _dbContext.GarmentDeliveryOrderItems.Where(entity => epoIds.Contains(entity.EPOId)).ToList();
                var deliveryOrderItemIds   = deliveryOrderItems.Select(element => element.Id).ToList();
                var deliveryOrderIds       = deliveryOrderItems.Select(element => element.GarmentDOId).ToList();
                var deliveryOrderDetails   = _dbContext.GarmentDeliveryOrderDetails.Where(entity => deliveryOrderItemIds.Contains(entity.GarmentDOItemId)).ToList();
                var deliveryOrderDetailIds = deliveryOrderDetails.Select(entity => entity.Id).ToList();
                var deliveryOrders         = _dbContext.GarmentDeliveryOrders.Where(entity => deliveryOrderIds.Contains(entity.Id)).ToList();
                var customItems            = _dbContext.GarmentBeacukaiItems.Where(entity => deliveryOrderIds.Contains(entity.GarmentDOId)).ToList();
                var customIds              = customItems.Select(entity => entity.BeacukaiId).ToList();
                var customs                = _dbContext.GarmentBeacukais.Where(entity => customIds.Contains(entity.Id)).ToList();
                var unitReceiptNoteItems   = _dbContext.GarmentUnitReceiptNoteItems.Where(entity => deliveryOrderDetailIds.Contains(entity.DODetailId)).ToList();
                var unitReceiptNoteIds     = unitReceiptNoteItems.Select(element => element.URNId).ToList();
                var unitReceiptNotes       = _dbContext.GarmentUnitReceiptNotes.Where(entity => unitReceiptNoteIds.Contains(entity.Id)).ToList();
                var internalNoteDetails    = _dbContext.GarmentInternNoteDetails.Where(entity => deliveryOrderIds.Contains(entity.DOId)).ToList();
                var internalNoteItemIds    = internalNoteDetails.Select(element => element.GarmentItemINId).ToList();
                var internalNoteItems      = _dbContext.GarmentInternNoteItems.Where(entity => internalNoteItemIds.Contains(entity.Id)).ToList();
                var internalNoteIds        = internalNoteItems.Select(element => element.GarmentINId).ToList();
                var internalNotes          = _dbContext.GarmentInternNotes.Where(entity => internalNoteIds.Contains(entity.Id)).ToList();

                foreach (var dispositionItem in dispositionItems)
                {
                    var disposition                 = dispositions.FirstOrDefault(element => element.Id == dispositionItem.GarmentDispositionPurchaseId);
                    var externalPurchaseOrder       = externalPurchaseOrders.FirstOrDefault(element => element.Id == dispositionItem.EPOId);
                    var selectedDispoositionDetails = dispositionDetails.Where(element => element.GarmentDispositionPurchaseItemId == dispositionItem.Id).ToList();
                    var deliveryOrderItem           = deliveryOrderItems.FirstOrDefault(element => element.EPOId == dispositionItem.EPOId);
                    if (deliveryOrderItem == null)
                    {
                        deliveryOrderItem = new GarmentDeliveryOrderItem();
                    }

                    var deliveryOrder = deliveryOrders.FirstOrDefault(element => deliveryOrderItem.GarmentDOId == element.Id);
                    if (deliveryOrder == null)
                    {
                        deliveryOrder = new GarmentDeliveryOrder();
                    }

                    var selectedDeliveryOrderDetails   = deliveryOrderDetails.Where(element => element.GarmentDOItemId == deliveryOrderItem.Id).ToList();
                    var selectedDeliveryOrderDetailIds = selectedDeliveryOrderDetails.Select(element => element.Id).ToList();

                    var customItem = customItems.FirstOrDefault(element => element.GarmentDOId == deliveryOrder.Id);
                    if (customItem == null)
                    {
                        customItem = new GarmentBeacukaiItem();
                    }

                    var custom = customs.FirstOrDefault(element => customItem.BeacukaiId == element.Id);
                    if (custom == null)
                    {
                        custom = new GarmentBeacukai();
                    }

                    var unitReceiptNoteItem = unitReceiptNoteItems.FirstOrDefault(element => selectedDeliveryOrderDetailIds.Contains(element.DODetailId));
                    if (unitReceiptNoteItem == null)
                    {
                        unitReceiptNoteItem = new GarmentUnitReceiptNoteItem();
                    }

                    var unitReceiptNote = unitReceiptNotes.FirstOrDefault(element => element.Id == unitReceiptNoteItem.URNId);
                    if (unitReceiptNote == null)
                    {
                        unitReceiptNote = new GarmentUnitReceiptNote();
                    }

                    var internalNoteDetail = internalNoteDetails.FirstOrDefault(element => element.DOId == deliveryOrder.Id);
                    if (internalNoteDetail == null)
                    {
                        internalNoteDetail = new GarmentInternNoteDetail();
                    }

                    var internalNoteItem = internalNoteItems.FirstOrDefault(element => element.Id == internalNoteDetail.GarmentItemINId);
                    if (internalNoteItem == null)
                    {
                        internalNoteItem = new GarmentInternNoteItem();
                    }

                    var internalNote = internalNotes.FirstOrDefault(element => element.Id == internalNoteItem.GarmentINId);
                    if (internalNote == null)
                    {
                        internalNote = new GarmentInternNote();
                    }

                    var customDate = (DateTimeOffset?)null;
                    if (custom.Id > 0)
                    {
                        customDate = custom.BeacukaiDate;
                    }

                    var internalNoteDate = (DateTimeOffset?)null;
                    if (internalNote.Id > 0)
                    {
                        internalNoteDate = internalNote.INDate;
                    }

                    result.Add(new GarmentDispositionPaymentReportDto(
                                   disposition.Id,
                                   disposition.DispositionNo,
                                   disposition.CreatedUtc,
                                   disposition.DueDate,
                                   disposition.InvoiceProformaNo,
                                   disposition.SupplierId,
                                   disposition.SupplierCode,
                                   disposition.SupplierName,
                                   disposition.CurrencyId,
                                   dispositionItem.CurrencyCode,
                                   dispositionItem.CurrencyRate,
                                   disposition.Dpp,
                                   disposition.VAT,
                                   disposition.IncomeTax,
                                   disposition.OtherCost,
                                   disposition.Amount,
                                   0,
                                   disposition.Category,
                                   disposition.Category,
                                   externalPurchaseOrder != null? (int)externalPurchaseOrder.Id:0,
                                   externalPurchaseOrder != null? externalPurchaseOrder.EPONo:string.Empty,
                                   selectedDispoositionDetails.Sum(sum => sum.QTYPaid),
                                   deliveryOrder.Id > 0 ? (int)deliveryOrder.Id : 0,
                                   deliveryOrder.Id > 0 ? deliveryOrder.DONo : "",
                                   deliveryOrder.Id > 0 ? selectedDeliveryOrderDetails.Sum(sum => sum.DOQuantity) : 0,
                                   deliveryOrder.Id > 0 ? deliveryOrder.PaymentBill : "",
                                   deliveryOrder.Id > 0 ? deliveryOrder.BillNo : "",
                                   custom.Id > 0 ? (int)custom.Id : 0,
                                   custom.Id > 0 ? custom.BeacukaiNo : "",
                                   customDate,
                                   unitReceiptNote.Id > 0 ? (int)unitReceiptNote.Id : 0,
                                   unitReceiptNote.Id > 0 ? unitReceiptNote.URNNo : "",
                                   internalNote.Id > 0 ? (int)internalNote.Id : 0,
                                   internalNote.Id > 0 ? internalNote.INNo : "",
                                   internalNoteDate,
                                   disposition.CreatedBy
                                   ));
                }
            }

            return(result);
        }
コード例 #18
0
        public async Task <int> Update(int id, GarmentBeacukaiViewModel vm, GarmentBeacukai model, string user, int clientTimeZoneOffset = 7)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    GarmentBeacukai modelBC = dbSet.AsNoTracking().Include(a => a.Items).FirstOrDefault(s => s.Id == model.Id);

                    EntityExtension.FlagForUpdate(model, user, USER_AGENT);

                    var lastPaymentBill = GeneratePaymentBillNo();

                    foreach (GarmentBeacukaiItem item in model.Items)
                    {
                        GarmentBeacukaiItem          oldItem = modelBC.Items.FirstOrDefault(s => s.Id.Equals(item.Id));
                        GarmentBeacukaiItemViewModel itemVM  = vm.items.FirstOrDefault(s => s.deliveryOrder.Id.Equals(item.GarmentDOId));
                        if (itemVM.selected)
                        {
                            if (oldItem == null)
                            {
                                GarmentDeliveryOrder deliveryOrder = dbSetDeliveryOrder.Include(m => m.Items)
                                                                     .ThenInclude(i => i.Details).FirstOrDefault(s => s.Id == item.GarmentDOId);
                                if (deliveryOrder != null)
                                {
                                    if (model.BillNo == "" | model.BillNo == null)
                                    {
                                        deliveryOrder.BillNo = GenerateBillNo();
                                    }
                                    else
                                    {
                                        deliveryOrder.BillNo = model.BillNo;
                                    }
                                    deliveryOrder.PaymentBill = string.Concat(lastPaymentBill.format, (lastPaymentBill.counterId++).ToString("D3"));
                                    //deliveryOrder.CustomsId = model.Id;
                                    double qty = 0;
                                    foreach (var deliveryOrderItem in deliveryOrder.Items)
                                    {
                                        foreach (var detail in deliveryOrderItem.Details)
                                        {
                                            qty += detail.DOQuantity;
                                        }
                                    }
                                    item.TotalAmount = Convert.ToDecimal(deliveryOrder.TotalAmount);
                                    item.TotalQty    = qty;
                                    EntityExtension.FlagForCreate(item, user, USER_AGENT);

                                    deliveryOrder.CustomsId = model.Id;
                                }
                            }
                            else if (oldItem != null)
                            {
                                item.TotalAmount = oldItem.TotalAmount;
                                item.TotalQty    = oldItem.TotalQty;
                                EntityExtension.FlagForUpdate(item, user, USER_AGENT);
                            }
                        }
                        else
                        {
                            EntityExtension.FlagForDelete(item, user, USER_AGENT);
                            GarmentDeliveryOrder deleteDO = dbContext.GarmentDeliveryOrders.FirstOrDefault(s => s.Id == item.GarmentDOId);
                            deleteDO.BillNo      = null;
                            deleteDO.PaymentBill = null;
                            deleteDO.CustomsId   = 0;
                        }
                    }


                    this.dbSet.Update(model);
                    Updated = await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }