示例#1
0
        public async Task <List <InvIssueDetailDto> > SaveDetailAsync(InvIssueDto vm)
        {
            try
            {
                foreach (var item in vm.listIssueDetail)
                {
                    var objsave = new InvIssueDetail()
                    {
                        Id = item.Id,
                        InventoryItemId = item.InventoryItemId,
                        InvIssueId      = vm.Id,
                        Quantity        = item.Quantity
                    };
                    if (objsave.Id > 0 && item.ObjectState != (int)ObjectState.Deleted)
                    {
                        item.ObjectState = (int)ObjectState.Modified;
                    }
                    if (objsave.Id <= 0 && item.ObjectState != (int)ObjectState.Deleted)
                    {
                        item.ObjectState = (int)ObjectState.Added;
                    }
                    switch (item.ObjectState)
                    {
                    case (int)ObjectState.Added:
                        db.InvIssueDetails.Add(objsave);
                        await db.SaveChangesAsync();

                        break;

                    case (int)ObjectState.Modified:
                        db.Entry(objsave).State = EntityState.Modified;
                        await db.SaveChangesAsync();

                        break;
                    }
                    item.Id = objsave.Id;
                }
                vm.listIssueDetail = GetIssueDetails(vm.Id);
                return(vm.listIssueDetail);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
示例#2
0
        public string SaveIssueMasterDetails(InvIssueMaster IssueMaster, List <InvIssueDetail> IssueDetails, int menuID)
        {
            GenericFactory_GF_IssueDetail = new InvIssueDetail_GF();
            GenericFactory_GF_IssueMaster = new InvIssueMaster_GF();
            GenericFactory_EF_IssueMaster = new InvIssueMaster_EF();
            GenericFactory_EF_IssueDetail = new InvIssueDetail_EF();
            _ctxCmn = new ERP_Entities();
            List <InvStockMaster> lstStockMaster = new List <InvStockMaster>();
            List <InvIssueDetail> lstIssueDetail = new List <InvIssueDetail>();
            string result = "";

            if (IssueMaster.IssueID > 0)
            {
                int Result = 0;
                try
                {
                    var lstInvIssueMaster = GenericFactory_EF_IssueMaster.GetAll().FirstOrDefault(x => x.IssueID == IssueMaster.IssueID);
                    lstInvIssueMaster.UpdateBy     = IssueMaster.CreateBy;
                    lstInvIssueMaster.UpdateOn     = DateTime.Now;
                    lstInvIssueMaster.UpdatePc     = HostService.GetIP();
                    lstInvIssueMaster.IssueDate    = IssueMaster.IssueDate;
                    lstInvIssueMaster.DepartmentID = IssueMaster.DepartmentID;
                    lstInvIssueMaster.Comments     = IssueMaster.Comments;
                    result = lstInvIssueMaster.RequisitionNo;

                    foreach (InvIssueDetail ivrd in IssueDetails)
                    {
                        InvIssueDetail objIssueDetail = GenericFactory_EF_IssueDetail.GetAll().FirstOrDefault(x => x.IssueID == IssueMaster.IssueID && x.IssueDetailID == ivrd.IssueDetailID);
                        objIssueDetail.IssueID   = IssueMaster.IssueID;
                        objIssueDetail.ItemID    = ivrd.ItemID;
                        objIssueDetail.UnitID    = (int)ivrd.UnitID;
                        objIssueDetail.LotID     = ivrd.LotID == 0 ? null : ivrd.LotID;
                        objIssueDetail.BatchID   = ivrd.BatchID == 0 ? null : ivrd.BatchID;
                        objIssueDetail.IssueQty  = ivrd.IssueQty;
                        objIssueDetail.UnitPrice = ivrd.UnitPrice == null ? 0 : ivrd.UnitPrice;
                        objIssueDetail.Amount    = ivrd.IssueQty * ivrd.UnitPrice == null ? 0 : ivrd.UnitPrice;
                        objIssueDetail.UpdateBy  = IssueMaster.CreateBy;
                        objIssueDetail.UpdateOn  = DateTime.Now;
                        objIssueDetail.UpdatePc  = HostService.GetIP();
                        lstIssueDetail.Add(objIssueDetail);
                    }
                    if (lstInvIssueMaster != null)
                    {
                        GenericFactory_EF_IssueMaster.Update(lstInvIssueMaster);
                        GenericFactory_EF_IssueMaster.Save();
                    }
                    // **************Details Transaction Update************************************************
                    if (lstIssueDetail.Count != 0)
                    {
                        GenericFactory_EF_IssueDetail.UpdateList(lstIssueDetail);
                        GenericFactory_EF_IssueDetail.Save();
                    }
                }
                catch (Exception e)
                {
                    e.ToString();
                    Result = 0;
                }
                return(result);
            }
            else
            {
                using (TransactionScope transaction = new TransactionScope())
                {
                    try
                    {
                        //...........START  new maxId........//
                        long NextId = Convert.ToInt16(GenericFactory_EF_IssueMaster.getMaxID("InvIssueMaster"));

                        long FirstDigit   = 0;
                        long OtherDigits  = 0;
                        long nextDetailId = Convert.ToInt64(GenericFactory_EF_IssueDetail.getMaxID("InvIssueDetail"));
                        FirstDigit  = Convert.ToInt64(nextDetailId.ToString().Substring(0, 1));
                        OtherDigits = Convert.ToInt64(nextDetailId.ToString().Substring(1, nextDetailId.ToString().Length - 1));

                        string customCode = "";
                        string CustomNo   = customCode = GenericFactory_EF_IssueMaster.getCustomCode(menuID, Convert.ToDateTime(IssueMaster.IssueDate), IssueMaster.CompanyID, 1, 1);
                        if (customCode != "")
                        {
                            customCode = CustomNo;
                        }
                        else
                        {
                            customCode = NextId.ToString();
                        }
                        //.........END for custom code............ //

                        IssueMaster.IssueID  = NextId;
                        IssueMaster.CreateOn = DateTime.Now;
                        IssueMaster.CreatePc = HostService.GetIP();
                        IssueMaster.IssueNo  = customCode;



                        foreach (InvIssueDetail ivrd in IssueDetails)
                        {
                            InvIssueDetail objIssueDetail = new InvIssueDetail();
                            objIssueDetail.IssueDetailID = Convert.ToInt64(FirstDigit + "" + OtherDigits);
                            objIssueDetail.IssueID       = NextId;
                            objIssueDetail.ItemID        = ivrd.ItemID;
                            objIssueDetail.UnitID        = ivrd.UnitID;
                            objIssueDetail.LotID         = ivrd.LotID == 0 ? null : ivrd.LotID;
                            objIssueDetail.BatchID       = ivrd.BatchID == 0 ? null : ivrd.BatchID;
                            objIssueDetail.IssueQty      = ivrd.IssueQty;
                            objIssueDetail.UnitPrice     = ivrd.UnitPrice;
                            objIssueDetail.Amount        = ivrd.Amount;
                            objIssueDetail.CreateBy      = IssueMaster.CreateBy;
                            objIssueDetail.CreateOn      = DateTime.Now;
                            objIssueDetail.IsDeleted     = false;
                            objIssueDetail.CreatePc      = HostService.GetIP();
                            lstIssueDetail.Add(objIssueDetail);
                            OtherDigits++;
                        }

                        _ctxCmn.InvIssueMasters.Add(IssueMaster);
                        //GenericFactory_EF_IssueMaster.Insert(IssueMaster);
                        //GenericFactory_EF_IssueMaster.Save();
                        //............Update MaxID.................//
                        GenericFactory_EF_IssueMaster.updateMaxID("InvIssueMaster", Convert.ToInt64(NextId));
                        //............Update CustomCode.............//
                        GenericFactory_EF_IssueMaster.updateCustomCode(menuID, DateTime.Now, IssueMaster.CompanyID, 1, 1);

                        // GenericFactory_EF_IssueDetail.InsertList(lstRequisitionDetail);
                        _ctxCmn.InvIssueDetails.AddRange(lstIssueDetail);
                        //GenericFactory_EF_IssueDetail.Save();
                        _ctxCmn.SaveChanges();
                        //............Update MaxID.................//
                        GenericFactory_EF_IssueDetail.updateMaxID("InvIssueDetail", Convert.ToInt64(FirstDigit + "" + (OtherDigits - 1)));
                        transaction.Complete();
                        result = customCode;
                    }
                    catch (Exception e)
                    {
                        result = "";
                    }
                }
            }
            return(result);
        }