コード例 #1
0
        public virtual async Task <VBRequestDocumentModel> GetTestData()
        {
            VBRequestDocumentModel model = GetNewData();
            await service.CreateAsync(model);

            return(model);
        }
コード例 #2
0
        public VBRealizationDocumentModel(DateTimeOffset?date, VBRequestDocumentModel vbRequest, Tuple <string, int> documentNo, decimal amount, string remark)
        {
            Date         = date.GetValueOrDefault();
            Type         = VBType.WithPO;
            DocumentType = RealizationDocumentType.WithVB;
            Index        = documentNo.Item2;
            DocumentNo   = documentNo.Item1;

            Amount                = amount;
            CurrencyCode          = vbRequest.CurrencyCode;
            CurrencyDescription   = vbRequest.CurrencyDescription;
            CurrencyId            = vbRequest.CurrencyId;
            CurrencyRate          = vbRequest.CurrencyRate;
            CurrencySymbol        = vbRequest.CurrencySymbol;
            SuppliantDivisionCode = vbRequest.SuppliantDivisionCode;
            SuppliantDivisionId   = vbRequest.SuppliantDivisionId;
            SuppliantDivisionName = vbRequest.SuppliantDivisionName;
            SuppliantUnitCode     = vbRequest.SuppliantUnitCode;
            SuppliantUnitId       = vbRequest.SuppliantUnitId;
            SuppliantUnitName     = vbRequest.SuppliantUnitName;

            VBRequestDocumentAmount    = vbRequest.Amount;
            VBRequestDocumentCreatedBy = vbRequest.CreatedBy;
            VBRequestDocumentDate      = vbRequest.Date;
            VBRequestDocumentId        = vbRequest.Id;
            VBRequestDocumentNo        = vbRequest.DocumentNo;
            VBRequestDocumentRealizationEstimationDate = vbRequest.RealizationEstimationDate;
            VBRequestDocumentPurpose = vbRequest.Purpose;

            Position = VBRealizationPosition.Purchasing;
            Remark   = remark;
        }
        public Task <int> CreateAsync(VBRequestDocumentModel model)
        {
            EntityExtension.FlagForCreate(model, _IdentityService.Username, _UserAgent);

            _DbContext.VBRequestDocuments.Add(model);

            return(_DbContext.SaveChangesAsync());
        }
コード例 #4
0
        public VBRequestDocumentModel GetTestData_VBRequestDocument()
        {
            var data = new VBRequestDocumentModel("documentNo", DateTimeOffset.Now, DateTimeOffset.Now, 1, "suppliantUnitCode", "suppliantUnitName", 1, "suppliantDivisionCode", "suppliantDivisionName", 1, "currencyCode", "currencySymbol", "currencyDescription", 1, "purpose", 1, true, true, VBType.NonPO, true, "noBI", "noPo", "typePurchasing");

            dbContext.VBRequestDocuments.Add(data);
            dbContext.SaveChanges();
            return(data);
        }
        public void should_success_instantiate()
        {
            VBRequestDocumentModel model = new VBRequestDocumentModel();

            model.SetCurrency(1, "IDR", "Rp", 2, "description", "user", "userAgent");
            model.SetAmount(1, "user", "userAgent");
            model.SetPurpose("newPurpose", "user", "userAgent");
        }
        //public int CreateNonPO(VBRequestDocumentNonPOFormDto form)
        public async Task <int> CreateNonPO(VBRequestDocumentNonPOFormDto form)
        {
            var internalTransaction = _dbContext.Database.CurrentTransaction == null;
            var transaction         = !internalTransaction ? _dbContext.Database.CurrentTransaction : _dbContext.Database.BeginTransaction();

            try
            {
                var existingData = _dbContext.VBRequestDocuments.Where(a => a.Date.AddHours(_identityService.TimezoneOffset).Month == form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset).Month).OrderByDescending(s => s.Index).FirstOrDefault();
                var documentNo   = GetDocumentNo(form, existingData);
                var model        = new VBRequestDocumentModel(
                    documentNo.Item1,
                    form.Date.GetValueOrDefault(),
                    form.RealizationEstimationDate.GetValueOrDefault(),
                    form.SuppliantUnit.Id.GetValueOrDefault(),
                    form.SuppliantUnit.Code,
                    form.SuppliantUnit.Name,
                    form.SuppliantUnit.Division.Id.GetValueOrDefault(),
                    form.SuppliantUnit.Division.Code,
                    form.SuppliantUnit.Division.Name,
                    form.Currency.Id.GetValueOrDefault(),
                    form.Currency.Code,
                    form.Currency.Symbol,
                    form.Currency.Description,
                    form.Currency.Rate.GetValueOrDefault(),
                    form.Purpose,
                    form.Amount.GetValueOrDefault(),
                    false,
                    false,
                    VBType.NonPO,
                    documentNo.Item2,
                    form.IsInklaring
                    );

                model.FlagForCreate(_identityService.Username, UserAgent);
                _dbContext.VBRequestDocuments.Add(model);
                await _dbContext.SaveChangesAsync();

                var items = AddNonPOItems(model.Id, form.Items);

                _dbContext.VBRequestDocumentItems.AddRange(items);
                await _dbContext.SaveChangesAsync();

                if (internalTransaction)
                {
                    transaction.Commit();
                }

                return(model.Id);
            }
            catch (Exception ex)
            {
                if (internalTransaction)
                {
                    transaction.Rollback();
                }
                throw ex;
            }
        }
コード例 #7
0
        public void ReadByIdAsync_Return_Success()
        {
            FinanceDbContext dbContext = _dbContext(GetCurrentAsyncMethod());

            VBRealizationDocumentExpeditionService service = new VBRealizationDocumentExpeditionService(dbContext, GetServiceProvider().Object);
            VBRequestDocumentModel model = _dataUtil(service, dbContext).GetTestData_VBRequestDocument();
            var result = service.ReadByIdAsync(model.Id);

            Assert.NotNull(result);
        }
コード例 #8
0
 public void Update(VBRequestDocumentModel vbRequest)
 {
     VBRequestDocumentAmount    = vbRequest.Amount;
     VBRequestDocumentCreatedBy = vbRequest.CreatedBy;
     VBRequestDocumentDate      = vbRequest.Date;
     VBRequestDocumentId        = vbRequest.Id;
     VBRequestDocumentNo        = vbRequest.DocumentNo;
     VBRequestDocumentRealizationEstimationDate = vbRequest.RealizationEstimationDate;
     VBRequestDocumentPurpose = vbRequest.Purpose;
 }
コード例 #9
0
        public VBRequestDocumentModel GetNewData()
        {
            VBRequestDocumentModel TestData = new VBRequestDocumentModel()
            {
                Id = 1,

                CreatedBy = "CreatedBy",
            };

            return(TestData);
        }
コード例 #10
0
        public async Task ClearanceVBPost_Return_Success()
        {
            FinanceDbContext dbContext = _dbContext(GetCurrentAsyncMethod());

            VBRealizationDocumentExpeditionService service = new VBRealizationDocumentExpeditionService(dbContext, GetServiceProvider().Object);
            VBRequestDocumentModel model = _dataUtil(service, dbContext).GetTestData_VBRequestDocument();

            List <ClearancePostId> postIds = new List <ClearancePostId>();
            ClearancePostId        postId  = new ClearancePostId();

            postId.VBRealizationId = 0;
            postId.VBRequestId     = 1;
            postIds.Add(postId);
            var result = await service.ClearanceVBPost(postIds);

            Assert.NotEqual(0, result);
        }
        public int CreateWithPO(VBRequestDocumentWithPOFormDto form)
        {
            var unitCode     = GetDocumentUnitCode(form.SuppliantUnit.Division.Name.ToUpper(), form.IsInklaring);
            var existingData = _dbContext.VBRequestDocuments.Where(a => a.Date.AddHours(_identityService.TimezoneOffset).Month == form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset).Month&& a.DocumentNo.StartsWith(unitCode)).OrderByDescending(s => s.Index).FirstOrDefault();
            var documentNo   = GetDocumentNo(form, existingData);

            var model = new VBRequestDocumentModel(
                documentNo.Item1,
                form.Date.GetValueOrDefault(),
                form.RealizationEstimationDate.GetValueOrDefault(),
                form.SuppliantUnit.Id.GetValueOrDefault(),
                form.SuppliantUnit.Code,
                form.SuppliantUnit.Name,
                form.SuppliantUnit.Division.Id.GetValueOrDefault(),
                form.SuppliantUnit.Division.Code,
                form.SuppliantUnit.Division.Name,
                form.Currency.Id.GetValueOrDefault(),
                form.Currency.Code,
                form.Currency.Symbol,
                form.Currency.Description,
                form.Currency.Rate.GetValueOrDefault(),
                form.Purpose,
                form.Amount.GetValueOrDefault(),
                false,
                false,
                VBType.WithPO,
                documentNo.Item2,
                form.IsInklaring,
                null, // NoBL
                null, // NoPO
                form.TypePurchasing
                );

            EntityExtension.FlagForCreate(model, _identityService.Username, UserAgent);
            _dbContext.VBRequestDocuments.Add(model);
            _dbContext.SaveChanges();

            AddItems(model.Id, form.Items);

            return(model.Id);
        }
コード例 #12
0
        public async Task ClearanceVBPost2_Return_Success()
        {
            FinanceDbContext dbContext = _dbContext(GetCurrentAsyncMethod());

            VBRealizationDocumentExpeditionService service = new VBRealizationDocumentExpeditionService(dbContext, GetServiceProvider().Object);
            VBRequestDocumentModel model = _dataUtil(service, dbContext).GetTestData_VBRequestDocument();

            List <ClearancePostId> postIds = new List <ClearancePostId>();
            ClearancePostId        postId  = new ClearancePostId();

            postId.VBRealizationId = 0;
            postId.VBRequestId     = 1;
            postIds.Add(postId);

            ClearanceFormDto clearanceForm = new ClearanceFormDto();

            clearanceForm.Bank = new Lib.ViewModels.NewIntegrationViewModel.AccountBankViewModel {
                AccountCOA    = "",
                AccountName   = "",
                AccountNumber = "",
                BankCode      = "",
                BankName      = "",
                Code          = "",
                Currency      = new Lib.ViewModels.NewIntegrationViewModel.CurrencyViewModel {
                    Code        = "",
                    Description = "",
                    Id          = 1,
                    Rate        = 1,
                    Symbol      = ""
                },
                Id = 1
            };
            clearanceForm.ListIds = postIds;

            var result = await service.ClearanceVBPost(clearanceForm);

            Assert.NotEqual(0, result);
        }
        private Tuple <string, int> GetDocumentNo(VBRequestDocumentWithPOFormDto form, VBRequestDocumentModel existingData)
        {
            var now   = form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset);
            var year  = now.ToString("yy");
            var month = now.ToString("MM");


            //var unit = model.UnitCode.ToString().Split(" - ");

            var unitCode = "T";

            if (form.SuppliantUnit.Division.Name.ToUpper() == "GARMENT")
            {
                unitCode = "G";
            }

            var documentNo = $"VB-{unitCode}-{month}{year}-";

            var index = 1;

            if (existingData != null)
            {
                index = existingData.Index + 1;
            }

            documentNo += string.Format("{0:000}", index);

            return(new Tuple <string, int>(documentNo, index));
        }
        private Tuple <string, int> GetDocumentNo(VBRequestDocumentNonPOFormDto form, VBRequestDocumentModel existingData)
        {
            var now   = form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset);
            var year  = now.ToString("yy");
            var month = now.ToString("MM");


            //var unit = model.UnitCode.ToString().Split(" - ");

            var unitCode = "T";

            if (form.SuppliantUnit.Division.Name.ToUpper() == "GARMENT")
            {
                unitCode = "G";
            }

            if (form.IsInklaring)
            {
                unitCode += "I";
            }

            var documentNo = $"VB-{unitCode}-{month}{year}-";

            var index = 1;

            if (existingData != null)
            {
                index = existingData.Index + 1;
            }

            documentNo += string.Format("{0:000}", index);

            //var countSameDocumentNo = _dbContext.VBRequestDocuments.IgnoreQueryFilters().Where(a => a.Date.AddHours(_identityService.TimezoneOffset).Month == form.Date.GetValueOrDefault().AddHours(_identityService.TimezoneOffset).Month).Count();

            //if (countSameDocumentNo >= 0)
            //{
            //    countSameDocumentNo += 1;

            //    documentNo += string.Format("{0:000}", countSameDocumentNo);
            //}

            return(new Tuple <string, int>(documentNo, index));
        }
 private VBRequestDocumentNonPODto MapToNonPODTO(VBRequestDocumentModel model, List <VBRequestDocumentItemModel> items)
 {
     return(new VBRequestDocumentNonPODto()
     {
         Active = model.Active,
         Amount = model.Amount,
         DocumentNo = model.DocumentNo,
         IsApproved = model.ApprovalStatus == ApprovalStatus.Approved,
         ApprovalStatus = model.ApprovalStatus.ToString(),
         CreatedAgent = model.CreatedAgent,
         Items = items.Select(s => new VBRequestDocumentNonPOItemDto()
         {
             IsSelected = s.IsSelected,
             Unit = new UnitDto()
             {
                 Code = s.UnitCode,
                 Division = new DivisionDto()
                 {
                     Code = s.DivisionCode,
                     Id = s.DivisionId,
                     Name = s.DivisionName
                 },
                 Name = s.UnitName,
                 Id = s.UnitId,
                 VBDocumentLayoutOrder = s.VBDocumentLayoutOrder
             },
             Id = s.Id,
             Active = s.Active,
             CreatedAgent = s.CreatedAgent,
             CreatedBy = s.CreatedBy,
             CreatedUtc = s.CreatedUtc,
             IsDeleted = s.IsDeleted,
             LastModifiedAgent = s.LastModifiedAgent,
             LastModifiedBy = s.LastModifiedBy,
             LastModifiedUtc = s.LastModifiedUtc
         }).ToList(),
         LastModifiedUtc = model.LastModifiedUtc,
         LastModifiedBy = model.LastModifiedBy,
         LastModifiedAgent = model.LastModifiedAgent,
         IsDeleted = model.IsDeleted,
         CreatedUtc = model.CreatedUtc,
         CreatedBy = model.CreatedBy,
         Currency = new CurrencyDto()
         {
             Code = model.CurrencyCode,
             Description = model.CurrencyDescription,
             Id = model.CurrencyId,
             Rate = model.CurrencyRate,
             Symbol = model.CurrencySymbol
         },
         Id = model.Id,
         Date = model.Date,
         Purpose = model.Purpose,
         RealizationEstimationDate = model.RealizationEstimationDate,
         SuppliantUnit = new UnitDto()
         {
             Id = model.SuppliantUnitId,
             Code = model.SuppliantUnitCode,
             Name = model.SuppliantUnitName,
             Division = new DivisionDto()
             {
                 Name = model.SuppliantDivisionName,
                 Code = model.SuppliantDivisionCode,
                 Id = model.SuppliantDivisionId
             }
         },
         IsInklaring = model.IsInklaring,
         NoBL = model.NoBL,
         NoPO = model.NoPO
     });
 }
 public virtual void UpdateAsync(long id, VBRequestDocumentModel model)
 {
     EntityExtension.FlagForUpdate(model, _IdentityService.Username, _UserAgent);
     _RequestDbSet.Update(model);
 }