Ejemplo n.º 1
0
        public void insertStorage(UnitReceiptNote unitReceiptNote, string user, string type)
        {
            List <object> items = new List <object>();

            foreach (var item in unitReceiptNote.Items)
            {
                items.Add(new {
                    productId   = item.ProductId,
                    productcode = item.ProductCode,
                    productname = item.ProductName,
                    uomId       = item.UomId,
                    uom         = item.Uom,
                    quantity    = item.ReceiptQuantity,
                    remark      = item.ProductRemark
                });
            }
            var data = new
            {
                storageId     = unitReceiptNote.StorageId,
                storagecode   = unitReceiptNote.StorageCode,
                storagename   = unitReceiptNote.StorageName,
                referenceNo   = unitReceiptNote.URNNo,
                referenceType = "Bon Terima Unit - " + unitReceiptNote.UnitName,
                type          = type,
                remark        = unitReceiptNote.Remark,
                date          = unitReceiptNote.ReceiptDate,
                items         = items
            };
            string             inventoryUri = "inventory-documents";
            IHttpClientService httpClient   = (IHttpClientService)this.serviceProvider.GetService(typeof(IHttpClientService));
            var response = httpClient.PostAsync($"{APIEndpoint.Inventory}{inventoryUri}", new StringContent(JsonConvert.SerializeObject(data).ToString(), Encoding.UTF8, General.JsonMediaType)).Result;

            response.EnsureSuccessStatusCode();
        }
        public async Task Should_Error_Update_Invalid_Data()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("dev2");

            var responseGetById = await this.Client.GetAsync($"{URI}/{model.Id}");

            var json = responseGetById.Content.ReadAsStringAsync().Result;

            Dictionary <string, object> result = JsonConvert.DeserializeObject <Dictionary <string, object> >(json.ToString());

            Assert.True(result.ContainsKey("apiVersion"));
            Assert.True(result.ContainsKey("message"));
            Assert.True(result.ContainsKey("data"));
            Assert.True(result["data"].GetType().Name.Equals("JObject"));

            UnitReceiptNoteViewModel viewModel = JsonConvert.DeserializeObject <UnitReceiptNoteViewModel>(result.GetValueOrDefault("data").ToString());

            viewModel.date     = DateTimeOffset.MinValue;
            viewModel.supplier = null;
            viewModel.unit     = null;
            viewModel.items    = new List <UnitReceiptNoteItemViewModel> {
            };

            var response = await this.Client.PutAsync($"{URI}/{model.Id}", new StringContent(JsonConvert.SerializeObject(viewModel).ToString(), Encoding.UTF8, MediaType));

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
        }
Ejemplo n.º 3
0
        public async void Should_Success_Get_Report_Data()
        {
            ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetNewData("unit-test");

            await EPOFacade.Create(externalPurchaseOrder, "unit-test", 7);

            DeliveryOrder deliveryOrder = await DODataUtil.GetNewData("unit-test");

            await DOFacade.Create(deliveryOrder, "unit-test");

            UnitReceiptNote urn = await DataUtil.GetNewDatas("unit-test");

            await Facade.Create(urn, "unit-test");

            //UnitPaymentOrder upo = await UPODataUtil.GetTestData();
            //await UPOFacade.Create(upo, "unit-test", false, 7);
            var DateFrom = DateTime.Now;

            DateFrom = DateFrom.Date;
            var DateTo = DateTime.Now;

            DateTo = DateTo.Date;
            var Response = IPRFacade.GetReport(null, null, null, DateFrom, DateTo);

            Assert.NotEqual(Response.Item2, 0);
        }
        private void SetPaid(UnitPaymentOrderItem item, bool isPaid, string username)
        {
            UnitReceiptNote unitReceiptNote = dbContext.UnitReceiptNotes.Single(m => m.Id == item.URNId);

            unitReceiptNote.IsPaid = isPaid;
            EntityExtension.FlagForUpdate(unitReceiptNote, username, USER_AGENT);
        }
        public async void Should_Success_Update_Data()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("Unit Test");

            foreach (var item in model.Items)
            {
                item.ReceiptQuantity -= 1;
            }
            var Response = await Facade.Update((int)model.Id, model, "Unit Test");

            Assert.NotEqual(Response, 0);

            UnitReceiptNoteItem oldItem = model.Items.FirstOrDefault();
            UnitReceiptNoteItem newItem = model.Items.FirstOrDefault();

            newItem.ProductCode = "code02";
            newItem.ProductId   = "code02";
            newItem.ProductName = "code02";

            newItem.Id = 0;
            model.Items.Add(newItem);
            var ResponseAddItem = await Facade.Update((int)model.Id, model, "Unit Test");

            Assert.NotEqual(ResponseAddItem, 0);

            model.Items.Remove(oldItem);
            oldItem.Id = 0;
            model.Items.Add(oldItem);
            var ResponseRemoveItemDetail = await Facade.Update((int)model.Id, model, "Unit Test");

            Assert.NotEqual(ResponseRemoveItemDetail, 0);
        }
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] UnitReceiptNoteViewModel vm)
        {
            identityService.Token    = Request.Headers["Authorization"].First().Replace("Bearer ", "");
            identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value;

            UnitReceiptNote m = _mapper.Map <UnitReceiptNote>(vm);

            IValidateService validateService = (IValidateService)_serviceProvider.GetService(typeof(IValidateService));

            try
            {
                validateService.Validate(vm);

                int result = await _facade.Update(id, m, identityService.Username);

                return(NoContent());
            }
            catch (ServiceValidationExeption e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE)
                    .Fail(e);
                return(BadRequest(Result));
            }
            catch (Exception e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result));
            }
        }
Ejemplo n.º 7
0
        public async void Should_Success_Get_Report_Data()
        {
            var serviceProvider = new Mock <IServiceProvider>();
            ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetTestData("Unit test");

            DeliveryOrder deliveryOrder = await DODataUtil.GetTestData("unit-test");

            UnitReceiptNote urn = await DataUtil.GetTestData3("unit-test");

            UnitReceiptNoteFacade facade = new UnitReceiptNoteFacade(serviceProvider.Object, _dbContext(GetCurrentMethod()));

            await _dataUtil(facade, GetCurrentMethod()).GetTestData("unit-test");

            //UnitPaymentOrder upo = await UPODataUtil.GetTestData();
            //await UPOFacade.Create(upo, "unit-test", false, 7);
            var DateFrom = DateTime.Now;

            DateFrom = DateFrom.Date;
            var DateTo = DateTime.Now;

            DateTo = DateTo.Date;
            if (externalPurchaseOrder != null && deliveryOrder != null && urn != null)
            {
                var Response = Facade.GetReport(null, null, null, DateFrom, DateTo);
                Assert.NotEqual(Response.Item2, 0);
            }
        }
        public async Task Should_Success_Get_Data_By_Id()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("dev2");

            var response = await this.Client.GetAsync($"{URI}/{model.Id}");

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
Ejemplo n.º 9
0
        public async void Should_Success_Get_Report_Data_Excel_Null_Parameter()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("Unit test");

            var Response = Facade.GenerateExcel("", "", "", "", "", null, null, 7);

            Assert.IsType(typeof(System.IO.MemoryStream), Response);
        }
Ejemplo n.º 10
0
        public async Task Should_Success_Get_Report_Generate_Data_Excel_Not_Found()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("Unit test");

            var Response = FacadeGenerateData.GenerateExcel(DateTime.MinValue, DateTime.MinValue, 7);

            Assert.IsType(typeof(System.IO.MemoryStream), Response);
        }
        public async void Should_Success_Create_Data()
        {
            UnitReceiptNote model = await DataUtil.GetNewData("Unit test");

            var Response = await Facade.Create(model, "Unit Test");

            Assert.NotEqual(Response, 0);
        }
        public async void Should_Success_Delete_Data()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("Unit test");

            var Response = Facade.Delete((int)model.Id, "Unit Test");

            Assert.NotEqual(Response, 0);
        }
Ejemplo n.º 13
0
        public async void Should_Success_Get_Report_Data_Null_Parameter()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("Unit test");

            var Response = Facade.GetReport("", "", "", "", "", null, null, 1, 25, "{}", 7);

            Assert.NotEqual(Response.Item2, 0);
        }
        public async void Should_Success_Get_Data_By_Id()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("Unit test");

            var Response = Facade.ReadById((int)model.Id);

            Assert.NotNull(Response);
        }
        public async Task <IActionResult> Post([FromBody] UnitReceiptNoteViewModel vm)
        {
            identityService.Token    = Request.Headers["Authorization"].First().Replace("Bearer ", "");
            identityService.Username = User.Claims.Single(p => p.Type.Equals("username")).Value;
            if (vm.supplier != null)
            {
                if (vm.no == "" || vm.no == null)
                {
                    if (vm.supplier.import == true)
                    {
                        vm.no = "BPI";
                    }
                    else
                    {
                        vm.no = "BPL";
                    }
                }
            }

            UnitReceiptNote m = _mapper.Map <UnitReceiptNote>(vm);

            IValidateService validateService = (IValidateService)_serviceProvider.GetService(typeof(IValidateService));

            try
            {
                validateService.Validate(vm);

                int result = await _facade.Create(m, identityService.Username);

                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.CREATED_STATUS_CODE, General.OK_MESSAGE)
                    .Ok();
                return(Created(String.Concat(Request.Path, "/", 0), Result));
            }
            catch (ServiceValidationExeption e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.BAD_REQUEST_STATUS_CODE, General.BAD_REQUEST_MESSAGE)
                    .Fail(e);
                return(BadRequest(Result));
            }
            catch (Exception e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result));
            }
        }
        public async Task Should_Success_Get_Data_PDF_By_Id()
        {
            UnitReceiptNote model = await DataUtil.GetTestData("dev2");

            HttpRequestMessage requestMessage = new HttpRequestMessage()
            {
                RequestUri = new Uri($"{Client.BaseAddress}{URI}/{model.Id}"),
                Method     = HttpMethod.Get
            };

            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaTypePdf));
            requestMessage.Headers.Add("x-timezone-offset", "0");
            var response = await this.Client.SendAsync(requestMessage);

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
Ejemplo n.º 17
0
        public async void Should_Success_Get_Report_Total_Purchase_By_Units_Null_Data_Excel()
        {
            ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetTestData("Unit test");

            DeliveryOrder deliveryOrder = await DODataUtil.GetTestData("unit-test");

            UnitReceiptNote urn = await DataUtil.GetTestData2("unit-test");

            var DateFrom = DateTime.Now;

            DateFrom = DateFrom.Date;
            var DateTo = DateTime.Now;

            DateTo = DateTo.Date;
            var Response = IPRFacade.GenerateExcel(null, null, null, DateFrom, DateTo);

            Assert.IsType(typeof(System.IO.MemoryStream), Response);
        }
Ejemplo n.º 18
0
        //public async void Should_Success_Get_Report_Data()
        //{
        //	ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetNewData("unit-test");
        //	await EPOFacade.Create(externalPurchaseOrder, "unit-test", 7);
        //	DeliveryOrder deliveryOrder = await DODataUtil.GetNewData("unit-test");
        //	await DOFacade.Create(deliveryOrder, "unit-test");
        //	UnitReceiptNote urn = await DataUtil.GetNewDatas("unit-test");
        //	await Facade.Create(urn, "unit-test");
        //          //UnitPaymentOrder upo = await UPODataUtil.GetTestData();
        //          //await UPOFacade.Create(upo, "unit-test", false, 7);
        //          var DateFrom = DateTime.Now;
        //          DateFrom = DateFrom.Date;
        //          var DateTo = DateTime.Now;
        //          DateTo = DateTo.Date;
        //          var Response = IPRFacade.GetReport(null, null,null ,DateFrom,DateTo);
        //	Assert.NotEqual(Response.Item2, 0);
        //}
        public async void Should_Success_Get_Report_Data()
        {
            ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetTestData("Unit test");

            DeliveryOrder deliveryOrder = await DODataUtil.GetTestData("unit-test");

            UnitReceiptNote urn = await DataUtil.GetTestData2("unit-test");

            var DateFrom = DateTime.Now;

            DateFrom = DateFrom.Date;
            var DateTo = DateTime.Now;

            DateTo = DateTo.Date;
            var Response = IPRFacade.GetReport(null, null, null, DateFrom, DateTo);

            Assert.NotEqual(Response.Item2, 0);
        }
        public IActionResult Get(int id)
        {
            try
            {
                var indexAcceptPdf = Request.Headers["Accept"].ToList().IndexOf("application/pdf");

                UnitReceiptNote          model     = _facade.ReadById(id);
                UnitReceiptNoteViewModel viewModel = _mapper.Map <UnitReceiptNoteViewModel>(model);
                if (viewModel == null)
                {
                    throw new Exception("Invalid Id");
                }
                if (indexAcceptPdf < 0)
                {
                    return(Ok(new
                    {
                        apiVersion = ApiVersion,
                        statusCode = General.OK_STATUS_CODE,
                        message = General.OK_MESSAGE,
                        data = viewModel,
                    }));
                }
                else
                {
                    UnitReceiptNotePDFTemplate PdfTemplate = new UnitReceiptNotePDFTemplate();
                    MemoryStream stream = PdfTemplate.GeneratePdfTemplate(viewModel);

                    return(new FileStreamResult(stream, "application/pdf")
                    {
                        FileDownloadName = $"{viewModel.no}.pdf"
                    });
                }
            }
            catch (Exception e)
            {
                Dictionary <string, object> Result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, Result));
            }
        }
Ejemplo n.º 20
0
        async Task <string> GenerateNo(UnitReceiptNote model)
        {
            string Year  = model.ReceiptDate.ToString("yy");
            string Month = model.ReceiptDate.ToString("MM");


            string no      = $"{Year}-{Month}-{model.URNNo}-{model.UnitCode}-";
            int    Padding = 3;

            var lastNo = await this.dbSet.Where(w => w.URNNo.StartsWith(no) && !w.IsDeleted).OrderByDescending(o => o.URNNo).FirstOrDefaultAsync();

            if (lastNo == null)
            {
                return(no + "1".PadLeft(Padding, '0'));
            }
            else
            {
                int lastNoNumber = Int32.Parse(lastNo.URNNo.Replace(no, "")) + 1;
                return(no + lastNoNumber.ToString().PadLeft(Padding, '0'));
            }
        }
Ejemplo n.º 21
0
        public async void Should_Success_Get_Report_Data_Excel_Null_Parameter()
        {
            ExternalPurchaseOrder externalPurchaseOrder = await EPODataUtil.GetNewData("unit-test");

            await EPOFacade.Create(externalPurchaseOrder, "unit-test", 7);

            DeliveryOrder deliveryOrder = await DODataUtil.GetNewData("unit-test");

            await DOFacade.Create(deliveryOrder, "unit-test");

            UnitReceiptNote urn = await DataUtil.GetNewDatas("unit-test");

            await Facade.Create(urn, "unit-test");

            var DateFrom = DateTime.Now;

            DateFrom = DateFrom.Date;
            var DateTo = DateTime.Now;

            DateTo = DateTo.Date;
            var Response = IPRFacade.GenerateExcel(null, null, null, DateFrom, DateTo);

            Assert.IsType(typeof(System.IO.MemoryStream), Response);
        }
        private void SetPaid(UnitPaymentOrderItem item, bool isPaid, string username)
        {
            UnitReceiptNote unitReceiptNote = dbContext.UnitReceiptNotes.Include(a => a.Items).Single(m => m.Id == item.URNId);

            foreach (var itemURN in unitReceiptNote.Items)
            {
                var detail = item.Details.FirstOrDefault(a => a.URNItemId == itemURN.Id);
                if (detail != null)
                {
                    itemURN.IsPaid = isPaid;
                }
            }
            bool flagIsPaid = true;

            foreach (var itemURNPaid in unitReceiptNote.Items)
            {
                if (itemURNPaid.IsPaid == false)
                {
                    flagIsPaid = false;
                }
            }
            unitReceiptNote.IsPaid = flagIsPaid;
            EntityExtension.FlagForUpdate(unitReceiptNote, username, USER_AGENT);
        }
        public async Task CreateJournalTransactionUnitReceiptNote(UnitReceiptNote model)

        {
            var items = new List <JournalTransactionItem>();

            var purchasingItems    = new List <JournalTransactionItem>();
            var stockItems         = new List <JournalTransactionItem>();
            var debtItems          = new List <JournalTransactionItem>();
            var incomeTaxPaidItems = new List <JournalTransactionItem>();
            var incomeTaxItems     = new List <JournalTransactionItem>();
            var productListRemark  = new List <string>();

            foreach (var item in model.Items)
            {
                var purchaseRequest = dbContext.PurchaseRequests.FirstOrDefault(f => f.Id.Equals(item.PRId));
                var poExternalItem  = dbContext.ExternalPurchaseOrderItems.FirstOrDefault(f => f.PRId.Equals(item.PRId));
                var poExternal      = dbContext.ExternalPurchaseOrders.FirstOrDefault(f => f.Id.Equals(poExternalItem.EPOId));

                var purchasingCOACode = "";
                var stockCOACode      = "";
                var debtCOACode       = "";
                var incomeTaxCOACode  = "";
                if (purchaseRequest != null)
                {
                    purchasingCOACode = COAGenerator.GetPurchasingCOA(purchaseRequest.DivisionName, purchaseRequest.UnitCode, purchaseRequest.CategoryCode);
                    stockCOACode      = COAGenerator.GetStockCOA(purchaseRequest.DivisionName, purchaseRequest.UnitCode, purchaseRequest.CategoryCode);
                    debtCOACode       = COAGenerator.GetDebtCOA(model.SupplierIsImport, purchaseRequest.DivisionName, purchaseRequest.UnitCode);
                    if (poExternal.UseIncomeTax && double.TryParse(poExternal.IncomeTaxRate, out double test) && double.Parse(poExternal.IncomeTaxRate) > 0)
                    {
                        incomeTaxCOACode = COAGenerator.GetIncomeTaxCOA(poExternal.IncomeTaxName, purchaseRequest.DivisionName, purchaseRequest.UnitCode);
                    }
                }

                var journalPurchasingItem = new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = purchasingCOACode
                    },
                    Debit = item.PricePerDealUnit * item.ReceiptQuantity,
                };
                purchasingItems.Add(journalPurchasingItem);

                var journalStockItem = new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = stockCOACode
                    },
                    Debit = item.PricePerDealUnit * item.ReceiptQuantity,
                };
                stockItems.Add(journalStockItem);

                var journalDebtItem = new JournalTransactionItem()
                {
                    COA = new COA()
                    {
                        Code = debtCOACode
                    },
                    Credit = item.PricePerDealUnit * item.ReceiptQuantity
                };
                debtItems.Add(journalDebtItem);

                if (poExternal.UseIncomeTax && double.Parse(poExternal.IncomeTaxRate) > 0)
                {
                    var pphItem = new JournalTransactionItem()
                    {
                        COA = new COA()
                        {
                            Code = incomeTaxCOACode
                        },
                        Credit = item.PricePerDealUnit * item.ReceiptQuantity * double.Parse(poExternal.IncomeTaxRate) / 100
                    };
                    incomeTaxItems.Add(pphItem);

                    var incomeTaxPaid = new JournalTransactionItem()
                    {
                        COA = new COA()
                        {
                            Code = debtCOACode
                        },
                        Debit = item.PricePerDealUnit * item.ReceiptQuantity * double.Parse(poExternal.IncomeTaxRate) / 100
                    };
                    incomeTaxPaidItems.Add(incomeTaxPaid);
                }


                productListRemark.Add($"- {item.ProductName}");
            }

            purchasingItems = purchasingItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.First().COA.Code
                },
                Debit  = s.Sum(sum => sum.Debit),
                Remark = string.Join("\n", productListRemark)
            }).ToList();
            items.AddRange(purchasingItems);

            debtItems = debtItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.First().COA.Code
                },
                Credit = s.Sum(sum => sum.Credit)
            }).ToList();
            items.AddRange(debtItems);

            incomeTaxPaidItems = incomeTaxPaidItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.First().COA.Code
                },
                Debit = s.Sum(sum => sum.Debit)
            }).ToList();
            if (incomeTaxPaidItems.Count > 0)
            {
                items.AddRange(incomeTaxPaidItems);
            }

            incomeTaxItems = incomeTaxItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.First().COA.Code
                },
                Credit = s.Sum(sum => sum.Credit)
            }).ToList();
            if (incomeTaxItems.Count > 0)
            {
                items.AddRange(incomeTaxItems);
            }

            stockItems = stockItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.First().COA.Code
                },
                Debit  = s.Sum(sum => sum.Debit),
                Remark = string.Join("\n", productListRemark)
            }).ToList();
            items.AddRange(stockItems);

            var purchasingCreditItems = purchasingItems.GroupBy(g => g.COA.Code).Select(s => new JournalTransactionItem()
            {
                COA = new COA()
                {
                    Code = s.First().COA.Code
                },
                Credit = s.Sum(sum => sum.Debit)
            }).ToList();

            items.AddRange(purchasingCreditItems);

            var modelToPost = new JournalTransaction()
            {
                Date        = DateTimeOffset.Now,
                Description = "Bon Terima Unit",
                ReferenceNo = model.URNNo,
                Items       = items
            };

            string journalTransactionUri = "journal-transactions";
            var    httpClient            = (IHttpClientService)serviceProvider.GetService(typeof(IHttpClientService));

            var response = await httpClient.PostAsync($"{APIEndpoint.Finance}{journalTransactionUri}", new StringContent(JsonConvert.SerializeObject(modelToPost).ToString(), Encoding.UTF8, General.JsonMediaType));

            response.EnsureSuccessStatusCode();
        }
Ejemplo n.º 24
0
        public async Task <int> Create(UnitReceiptNote m, string user)
        {
            int Created = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    EntityExtension.FlagForCreate(m, user, "Facade");

                    m.URNNo = await GenerateNo(m);

                    if (m.Items != null)
                    {
                        foreach (var item in m.Items)
                        {
                            EntityExtension.FlagForCreate(item, user, "Facade");
                            ExternalPurchaseOrderDetail externalPurchaseOrderDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == item.EPODetailId);
                            PurchaseRequestItem         prItem    = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId);
                            InternalPurchaseOrderItem   poItem    = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.POItemId);
                            DeliveryOrderDetail         doDetail  = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == item.DODetailId);
                            UnitPaymentOrderDetail      upoDetail = dbContext.UnitPaymentOrderDetails.FirstOrDefault(s => s.IsDeleted == false && s.POItemId == poItem.Id);
                            item.PRItemId             = doDetail.PRItemId;
                            item.PricePerDealUnit     = externalPurchaseOrderDetail.PricePerDealUnit;
                            doDetail.ReceiptQuantity += item.ReceiptQuantity;
                            externalPurchaseOrderDetail.ReceiptQuantity += item.ReceiptQuantity;
                            if (upoDetail == null)
                            {
                                if (externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity)
                                {
                                    if (externalPurchaseOrderDetail.ReceiptQuantity < externalPurchaseOrderDetail.DealQuantity)
                                    {
                                        //prItem.Status = "Barang sudah diterima Unit parsial";
                                        poItem.Status = "Barang sudah diterima Unit parsial";
                                    }
                                    else
                                    {
                                        //prItem.Status = "Barang sudah diterima Unit semua";
                                        poItem.Status = "Barang sudah diterima Unit semua";
                                    }
                                }
                                else
                                {
                                    //prItem.Status = "Barang sudah diterima Unit parsial";
                                    poItem.Status = "Barang sudah diterima Unit parsial";
                                }
                            }
                        }
                    }
                    if (m.IsStorage == true)
                    {
                        insertStorage(m, user, "IN");
                    }
                    this.dbSet.Add(m);
                    Created = await dbContext.SaveChangesAsync();

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

            return(Created);
        }
Ejemplo n.º 25
0
        public async Task <int> Update(int id, UnitReceiptNote unitReceiptNote, string user)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    var m = this.dbSet.AsNoTracking()
                            .Include(d => d.Items)
                            .Single(pr => pr.Id == id && !pr.IsDeleted);

                    if (m != null && !id.Equals(unitReceiptNote.Id))
                    {
                        if (m.IsStorage == true)
                        {
                            insertStorage(m, user, "OUT");
                        }
                        if (unitReceiptNote.IsStorage == false)
                        {
                            unitReceiptNote.StorageCode = null;
                            unitReceiptNote.StorageId   = null;
                            unitReceiptNote.StorageName = null;
                        }
                        EntityExtension.FlagForUpdate(unitReceiptNote, user, USER_AGENT);
                        foreach (var item in unitReceiptNote.Items)
                        {
                            EntityExtension.FlagForUpdate(item, user, "Facade");
                        }
                        this.dbContext.Update(unitReceiptNote);
                        #region UpdateStatus
                        //foreach (var item in unitReceiptNote.Items)
                        //{
                        //    if (item.Id == 0)
                        //    {
                        //        EntityExtension.FlagForCreate(item, user, USER_AGENT);
                        //        ExternalPurchaseOrderDetail externalPurchaseOrderDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == item.EPODetailId);
                        //        PurchaseRequestItem prItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId);
                        //        InternalPurchaseOrderItem poItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.POItemId);
                        //        DeliveryOrderDetail doDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == item.DODetailId);
                        //        item.PRItemId = doDetail.PRItemId;
                        //        item.PricePerDealUnit = externalPurchaseOrderDetail.PricePerDealUnit;
                        //        doDetail.ReceiptQuantity += item.ReceiptQuantity;
                        //        externalPurchaseOrderDetail.ReceiptQuantity += item.ReceiptQuantity;
                        //        if (externalPurchaseOrderDetail.DOQuantity >= externalPurchaseOrderDetail.DealQuantity)
                        //        {
                        //            if (externalPurchaseOrderDetail.ReceiptQuantity < externalPurchaseOrderDetail.DealQuantity)
                        //            {
                        //                //prItem.Status = "Barang sudah diterima Unit parsial";
                        //                poItem.Status = "Barang sudah diterima Unit parsial";
                        //            }
                        //            else
                        //            {
                        //                //prItem.Status = "Barang sudah diterima Unit semua";
                        //                poItem.Status = "Barang sudah diterima Unit semua";
                        //            }
                        //        }
                        //        else
                        //        {
                        //            //prItem.Status = "Barang sudah diterima Unit parsial";
                        //            poItem.Status = "Barang sudah diterima Unit parsial";
                        //        }
                        //    }
                        //    EntityExtension.FlagForUpdate(item, user, USER_AGENT);
                        //}

                        //this.dbContext.Update(unitReceiptNote);

                        //foreach (var itemExist in m.Items)
                        //{
                        //    var a = itemExist;
                        //    ExternalPurchaseOrderDetail epoDetail = this.dbContext.ExternalPurchaseOrderDetails.FirstOrDefault(s => s.Id == itemExist.EPODetailId);
                        //    //PurchaseRequestItem purchaseRequestItem = this.dbContext.PurchaseRequestItems.FirstOrDefault(s => s.Id == externalPurchaseOrderDetail.PRItemId);
                        //    InternalPurchaseOrderItem purchaseOrderItem = this.dbContext.InternalPurchaseOrderItems.FirstOrDefault(s => s.Id == epoDetail.POItemId);
                        //    DeliveryOrderDetail sjDetail = dbContext.DeliveryOrderDetails.FirstOrDefault(s => s.Id == itemExist.DODetailId);
                        //    itemExist.PRItemId = sjDetail.PRItemId;
                        //    itemExist.PricePerDealUnit = epoDetail.PricePerDealUnit;
                        //    UnitReceiptNoteItem unitReceiptNoteItem = unitReceiptNote.Items.FirstOrDefault(i => i.Id.Equals(itemExist.Id));
                        //    if (unitReceiptNoteItem == null)
                        //    {
                        //        EntityExtension.FlagForDelete(itemExist, user, USER_AGENT);
                        //        this.dbContext.UnitReceiptNoteItems.Update(itemExist);
                        //        sjDetail.ReceiptQuantity -= itemExist.ReceiptQuantity;
                        //        epoDetail.ReceiptQuantity -= itemExist.ReceiptQuantity;
                        //        if (epoDetail.ReceiptQuantity == 0)
                        //        {
                        //            if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity >= epoDetail.DealQuantity)
                        //            {
                        //                //prItem.Status = "Barang sudah diterima Unit semua";
                        //                purchaseOrderItem.Status = "Barang sudah datang semua";
                        //            }
                        //            else if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity < epoDetail.DealQuantity)
                        //            {
                        //                //prItem.Status = "Barang sudah diterima Unit parsial";
                        //                purchaseOrderItem.Status = "Barang sudah datang parsial";
                        //            }
                        //        }
                        //        else if (epoDetail.ReceiptQuantity > 0)
                        //        {
                        //            if (epoDetail.DOQuantity >= epoDetail.DealQuantity)
                        //            {
                        //                if (epoDetail.ReceiptQuantity < epoDetail.DealQuantity)
                        //                {
                        //                    //prItem.Status = "Barang sudah diterima Unit parsial";
                        //                    purchaseOrderItem.Status = "Barang sudah diterima Unit parsial";
                        //                }
                        //                else if (epoDetail.ReceiptQuantity >= epoDetail.DealQuantity)
                        //                {
                        //                    //prItem.Status = "Barang sudah diterima Unit semua";
                        //                    purchaseOrderItem.Status = "Barang sudah diterima Unit semua";
                        //                }
                        //                else if (epoDetail.DOQuantity < epoDetail.DealQuantity)
                        //                {
                        //                    purchaseOrderItem.Status = "Barang sudah diterima Unit parsial";
                        //                }
                        //            }
                        //        }
                        //    }
                        //    else
                        //    {
                        //        EntityExtension.FlagForUpdate(itemExist, user, USER_AGENT);

                        //        sjDetail.ReceiptQuantity -= itemExist.ReceiptQuantity;
                        //        epoDetail.ReceiptQuantity -= itemExist.ReceiptQuantity;
                        //        itemExist.PRItemId = sjDetail.PRItemId;
                        //        itemExist.PricePerDealUnit = epoDetail.PricePerDealUnit;
                        //        sjDetail.ReceiptQuantity += unitReceiptNoteItem.ReceiptQuantity;
                        //        epoDetail.ReceiptQuantity += unitReceiptNoteItem.ReceiptQuantity;
                        //        if (epoDetail.ReceiptQuantity == 0)
                        //        {
                        //            if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity >= epoDetail.DealQuantity)
                        //            {
                        //                //prItem.Status = "Barang sudah diterima Unit semua";
                        //                purchaseOrderItem.Status = "Barang sudah datang semua";
                        //            }
                        //            else if (epoDetail.DOQuantity > 0 && epoDetail.DOQuantity < epoDetail.DealQuantity)
                        //            {
                        //                //prItem.Status = "Barang sudah diterima Unit parsial";
                        //                purchaseOrderItem.Status = "Barang sudah datang semua";
                        //            }
                        //        }
                        //        else if (epoDetail.ReceiptQuantity > 0)
                        //        {
                        //            if (epoDetail.DOQuantity >= epoDetail.DealQuantity)
                        //            {
                        //                if (epoDetail.ReceiptQuantity < epoDetail.DealQuantity)
                        //                {
                        //                    //prItem.Status = "Barang sudah diterima Unit parsial";
                        //                    purchaseOrderItem.Status = "Barang sudah diterima Unit parsial";
                        //                }
                        //                else if (epoDetail.ReceiptQuantity >= epoDetail.DealQuantity)
                        //                {
                        //                    //prItem.Status = "Barang sudah diterima Unit semua";
                        //                    purchaseOrderItem.Status = "Barang sudah diterima Unit semua";
                        //                }
                        //                else if (epoDetail.DOQuantity < epoDetail.DealQuantity)
                        //                {
                        //                    purchaseOrderItem.Status = "Barang sudah diterima Unit parsial";
                        //                }
                        //            }
                        //        }
                        //    }

                        //}
                        #endregion

                        if (unitReceiptNote.IsStorage == true)
                        {
                            insertStorage(unitReceiptNote, user, "IN");
                        }

                        Updated = await dbContext.SaveChangesAsync();

                        transaction.Commit();
                    }
                    else
                    {
                        throw new Exception("Invalid Id");
                    }
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }