public void CreateModel(GarmentInvoicePurchasingDispositionModel model)
        {
            EntityExtension.FlagForCreate(model, IdentityService.Username, UserAgent);
            //get last Paid
            var dispositionIds = model.Items.Select(s => s.DispositionId).ToList();

            //var getLastDiposition = DbContext.GarmentInvoicePurchasingDispositions.Where(s => dispositionIds.Contains(s.DispositionNoteId));

            foreach (var item in model.Items)
            {
                GarmentDispositionExpeditionModel expedition = DbContext.GarmentDispositionExpeditions.FirstOrDefault(ex => ex.Id.Equals(item.PurchasingDispositionExpeditionId));
                //var getLastDipositionPaidAmount = getLastDiposition.Where(s=> s.DispositionNoteId == expedition.DispositionNoteId)
                EntityExtension.FlagForCreate(item, IdentityService.Username, UserAgent);
                if (item.TotalPaidBefore + item.TotalPaid >= item.TotalAmount)
                {
                    expedition.IsPaid = true;
                }
                else
                {
                    expedition.IsPaid = false;
                }
                expedition.BankExpenditureNoteNo   = model.InvoiceNo;
                expedition.BankExpenditureNoteDate = model.InvoiceDate;
            }
            DbSet.Add(model);
        }
Пример #2
0
 public IndexDto(GarmentDispositionExpeditionModel entity)
 {
     Id = entity.Id;
     DispositionNoteNo      = entity.DispositionNoteNo;
     DispositionNoteDate    = entity.DispositionNoteDate;
     DispositionNoteDueDate = entity.DispositionNoteDueDate;
     DispositionNoteId      = entity.DispositionNoteId;
     SupplierName           = entity.SupplierName;
     TotalPaid                = entity.TotalPaid;
     CurrencyCode             = entity.CurrencyCode;
     VerificationAcceptedDate = entity.VerificationAcceptedDate;
     SendToPurchasingRemark   = entity.SendToPurchasingRemark;
     Remark          = entity.Remark;
     DPPAmount       = entity.DPPAmount;
     VATAmount       = entity.VATAmount;
     IncomeTaxAmount = entity.IncomeTaxAmount;
     Status          = entity.Position.ToDescriptionString();
     Date            = entity.Position == GarmentPurchasingExpeditionPosition.SendToAccounting ? entity.SendToAccountingDate : entity.Position == GarmentPurchasingExpeditionPosition.SendToCashier ? entity.SendToCashierDate : entity.Position == GarmentPurchasingExpeditionPosition.SendToPurchasing ? entity.SendToPurchasingDate : entity.VerificationAcceptedDate;
     VerifiedBy      = entity.Position == GarmentPurchasingExpeditionPosition.SendToAccounting ? entity.SendToAccountingBy : entity.Position == GarmentPurchasingExpeditionPosition.SendToCashier ? entity.SendToCashierBy : entity.Position == GarmentPurchasingExpeditionPosition.SendToPurchasing ? entity.SendToPurchasingBy : entity.VerificationAcceptedBy;
     SentDate        = entity.Position == GarmentPurchasingExpeditionPosition.SendToAccounting || entity.Position == GarmentPurchasingExpeditionPosition.AccountingAccepted ? entity.SendToAccountingDate : entity.Position == GarmentPurchasingExpeditionPosition.SendToCashier || entity.Position == GarmentPurchasingExpeditionPosition.CashierAccepted ? entity.SendToCashierDate : entity.Position == GarmentPurchasingExpeditionPosition.SendToPurchasing ? entity.SendToPurchasingDate : entity.SendToVerificationDate;
     AcceptedDate    = entity.Position == GarmentPurchasingExpeditionPosition.AccountingAccepted ? entity.AccountingAcceptedDate : entity.Position == GarmentPurchasingExpeditionPosition.CashierAccepted ? entity.CashierAcceptedDate : entity.Position == GarmentPurchasingExpeditionPosition.VerificationAccepted ? entity.VerificationAcceptedDate : null;
     CreatedDate     = entity.CreatedUtc;
     ProformaNo      = entity.ProformaNo;
     Amount          = entity.DPPAmount + VATAmount - IncomeTaxAmount;
     Category        = entity.Category;
     VerifiedDate    = entity.VerifiedDate;
 }
Пример #3
0
        public async Task <int> SendToAccounting(SendToVerificationAccountingFormDto form)
        {
            var models = new List <GarmentDispositionExpeditionModel>();

            foreach (var item in form.Items)
            {
                var model = new GarmentDispositionExpeditionModel(item.DispositionNote.Id, item.DispositionNote.DocumentNo, item.DispositionNote.Date, item.DispositionNote.DueDate, item.DispositionNote.SupplierId, item.DispositionNote.SupplierName, item.DispositionNote.VATAmount, item.DispositionNote.CurrencyVATAmount, item.DispositionNote.IncomeTaxAmount, item.DispositionNote.CurrencyIncomeTaxAmount, item.DispositionNote.TotalPaid, item.DispositionNote.CurrencyTotalPaid, item.DispositionNote.CurrencyId, item.DispositionNote.CurrencyCode, item.Remark, item.DispositionNote.DPPAmount, item.DispositionNote.CurrencyDPPAmount, item.DispositionNote.SupplierCode, item.DispositionNote.CurrencyRate, item.DispositionNote.ProformaNo, item.DispositionNote.Category);
                model.SendToAccounting(_identityService.Username);

                EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
                models.Add(model);
            }
            _dbContext.GarmentDispositionExpeditions.UpdateRange(models);

            var httpClient = _serviceProvider.GetService <IHttpClientService>();
            var updateDispositionNotePositionData = new
            {
                Ids      = models.Select(element => element.DispositionNoteId).ToList(),
                Position = GarmentPurchasingExpeditionPosition.SendToAccounting
            };

            await httpClient.PutAsync($"{APIEndpoint.Purchasing}garment-purchasing-expeditions/disposition-notes/position", new StringContent(JsonConvert.SerializeObject(updateDispositionNotePositionData), Encoding.UTF8, General.JsonMediaType));

            return(_dbContext.SaveChanges());
        }
Пример #4
0
        public async Task Should_Success_Post_Data()
        {
            var serviceProviderMock = GetServiceProvider();
            var dbContext           = GetDbContext(GetCurrentMethod());

            var service = new GarmentInvoicePurchasingDispositionService(serviceProviderMock.Object, dbContext);

            var expedition = new GarmentDispositionExpeditionModel();

            EntityExtension.FlagForCreate(expedition, "Test", "Test");
            dbContext.GarmentDispositionExpeditions.Add(expedition);
            dbContext.SaveChanges();

            var model = new GarmentInvoicePurchasingDispositionPostingViewModel()
            {
                ListIds = new List <GarmentInvoicePurchasingDispositionPostingIdViewModel>()
                {
                    new GarmentInvoicePurchasingDispositionPostingIdViewModel()
                    {
                        Id = 1
                    }
                }
            };

            var result = await service.Post(model);

            Assert.Equal(0, result);
        }
Пример #5
0
        public async Task Should_Success_Update_Created_Data()
        {
            var serviceProviderMock = GetServiceProvider();
            var dbContext           = GetDbContext(GetCurrentMethod());

            var service = new GarmentInvoicePurchasingDispositionService(serviceProviderMock.Object, dbContext);

            var expedition = new GarmentDispositionExpeditionModel();

            EntityExtension.FlagForCreate(expedition, "Test", "Test");
            dbContext.GarmentDispositionExpeditions.Add(expedition);
            dbContext.SaveChanges();

            var model = new GarmentInvoicePurchasingDispositionModel()
            {
                InvoiceNo = "Test", SupplierName = "Test", CurrencyCode = "Code", BankName = "BankName", Items = new List <GarmentInvoicePurchasingDispositionItemModel>()
                {
                    new GarmentInvoicePurchasingDispositionItemModel(0, expedition.Id, "Test")
                }
            };
            await service.CreateAsync(model);

            var result = await service.UpdateAsync(model.Id, model);

            Assert.NotEqual(0, result);
        }
Пример #6
0
        public async Task Should_Not_Empty_Read_Created_Data()
        {
            var serviceProviderMock = GetServiceProvider();
            var dbContext           = GetDbContext(GetCurrentMethod());

            var service = new GarmentInvoicePurchasingDispositionService(serviceProviderMock.Object, dbContext);

            var expedition = new GarmentDispositionExpeditionModel();

            EntityExtension.FlagForCreate(expedition, "Test", "Test");
            dbContext.GarmentDispositionExpeditions.Add(expedition);
            dbContext.SaveChanges();

            await service.CreateAsync(new GarmentInvoicePurchasingDispositionModel()
            {
                InvoiceNo = "Test", SupplierName = "Test", CurrencyCode = "Code", BankName = "BankName", Items = new List <GarmentInvoicePurchasingDispositionItemModel>()
                {
                    new GarmentInvoicePurchasingDispositionItemModel(0, expedition.Id, "Test")
                }
            });

            var result = service.Read(1, 10, "{}", new List <string>(), null, "{}");

            Assert.NotEmpty(result.Data);
        }
Пример #7
0
        public void should_success_instantiate()
        {
            int    id = 1;
            string dispositionNoteNo       = "Test";
            int    dispositionNoteId       = 1;
            double currencyTotalPaid       = 1;
            double totalPaid               = 1;
            int    currencyId              = 1;
            string currencyCode            = "Test";
            string suppliername            = "Test";
            string remark                  = "Test";
            string proformaNo              = "Test";
            string createdBy               = "Test";
            double currencyRate            = 1;
            int    supplierId              = 1;
            string supplierCode            = "Test";
            double vatAmount               = 1;
            double currencyVatAmount       = 1;
            double incomeTaxAmount         = 1;
            double currencyIncomeTaxAmount = 1;
            double dppAmount               = 1;
            double currencyDppAmount       = 1;
            string sendToPurchasingRemark  = "Test";

            GarmentDispositionExpeditionModel model = new GarmentDispositionExpeditionModel(
                id, dispositionNoteNo, DateTimeOffset.Now, DateTimeOffset.Now, dispositionNoteId, currencyTotalPaid,
                totalPaid, currencyId, currencyCode, suppliername, remark, proformaNo, createdBy, currencyRate,
                supplierId, supplierCode, vatAmount, currencyVatAmount, incomeTaxAmount, currencyIncomeTaxAmount,
                dppAmount, currencyDppAmount, DateTimeOffset.Now, DateTimeOffset.Now, sendToPurchasingRemark, DateTime.Now);

            Assert.NotNull(model);
        }
        //private async Task<GarmentCurrency> GetGarmentCurrency(string codeCurrency)
        //{
        //    var date = DateTimeOffset.UtcNow.ToString("yyyy/MM/dd HH:mm:ss");
        //    var queryString = $"code={codeCurrency}&stringDate={date}";

        //    var http = ServiceProvider.GetService<IHttpClientService>();
        //    var response = await http.GetAsync(APIEndpoint.Core + $"master/garment-currencies/single-by-code-date?{queryString}");

        //    var responseString = await response.Content.ReadAsStringAsync();
        //    var jsonSerializationSetting = new JsonSerializerSettings() { MissingMemberHandling = MissingMemberHandling.Ignore };

        //    var result = JsonConvert.DeserializeObject<APIDefaultResponse<GarmentCurrency>>(responseString, jsonSerializationSetting);

        //    return result.data;
        //}

        public async Task DeleteModel(int id)
        {
            GarmentInvoicePurchasingDispositionModel model = await ReadByIdAsync(id);

            foreach (var item in model.Items)
            {
                GarmentDispositionExpeditionModel expedition = DbContext.GarmentDispositionExpeditions.FirstOrDefault(ex => ex.Id.Equals(item.PurchasingDispositionExpeditionId));
                EntityExtension.FlagForDelete(item, IdentityService.Username, UserAgent, true);
                expedition.IsPaid = false;
                expedition.BankExpenditureNoteNo   = null;
                expedition.BankExpenditureNoteDate = DateTimeOffset.MinValue;
            }
            EntityExtension.FlagForDelete(model, IdentityService.Username, UserAgent, true);
            DbSet.Update(model);
        }
        public void UpdateModel(int id, GarmentInvoicePurchasingDispositionModel model)
        {
            GarmentInvoicePurchasingDispositionModel exist = DbSet
                                                             .Include(d => d.Items)
                                                             .Single(dispo => dispo.Id == id && !dispo.IsDeleted);


            exist.ChequeNo    = model.ChequeNo;
            exist.InvoiceDate = model.InvoiceDate;

            foreach (var item in exist.Items)
            {
                GarmentInvoicePurchasingDispositionItemModel itemModel = model.Items.FirstOrDefault(prop => prop.Id.Equals(item.Id));

                if (itemModel == null)
                {
                    GarmentDispositionExpeditionModel expedition = DbContext.GarmentDispositionExpeditions.FirstOrDefault(ex => ex.Id.Equals(item.PurchasingDispositionExpeditionId));
                    expedition.IsPaid = false;
                    expedition.BankExpenditureNoteNo   = null;
                    expedition.BankExpenditureNoteDate = DateTimeOffset.MinValue;

                    EntityExtension.FlagForDelete(item, IdentityService.Username, UserAgent, true);
                }
                else
                {
                    item.SetTotalPaid(itemModel.TotalPaid);
                    GarmentDispositionExpeditionModel expedition = DbContext.GarmentDispositionExpeditions.FirstOrDefault(ex => ex.Id.Equals(item.PurchasingDispositionExpeditionId));
                    if (itemModel.TotalPaidBefore + itemModel.TotalPaid >= itemModel.TotalAmount)
                    {
                        expedition.IsPaid = true;
                    }
                    else
                    {
                        expedition.IsPaid = false;
                    }

                    EntityExtension.FlagForUpdate(item, IdentityService.Username, UserAgent);
                }
            }

            EntityExtension.FlagForUpdate(exist, IdentityService.Username, UserAgent);
            //DbSet.Update(exist);
        }