コード例 #1
0
ファイル: AgentNoteHelper.cs プロジェクト: amorsi/EasyFreight
        private static void AddAgentToTransTable(string agentAccId, AgentNoteVm agentNoteVm)
        {
            AccTransactionVm accTrans = new AccTransactionVm()
            {
                CreateDate        = DateTime.Now,
                CreateBy          = EasyFreight.DAL.AdminHelper.GetCurrentUserId(),
                TransactionName   = "Agent Note Number " + agentNoteVm.AgentNoteCode,
                TransactionNameAr = "فاتورة agent رقم " + agentNoteVm.AgentNoteCode
            };

            AccTransactionDetailVm accTransDetDebit;
            AccTransactionDetailVm accTransDetCredit;

            if (agentNoteVm.AgentNoteType == 1) // Debit .. A/R deb-- SoldServices cr .. same like invoice
            {
                accTransDetDebit = new AccTransactionDetailVm()
                {
                    AccountId    = agentAccId,
                    CreditAmount = 0,
                    CurrencyId   = agentNoteVm.CurrencyId,
                    DebitAmount  = agentNoteVm.TotalAmount
                };
                accTrans.AccTransactionDetails.Add(accTransDetDebit);

                accTransDetCredit = new AccTransactionDetailVm()
                {
                    AccountId    = ((int)AccountingChartEnum.SoldServices).ToString(),
                    CreditAmount = agentNoteVm.TotalAmount,
                    CurrencyId   = agentNoteVm.CurrencyId,
                    DebitAmount  = 0
                };
                accTrans.AccTransactionDetails.Add(accTransDetCredit);
            }
            else //Credit not .. CarrierCostOfSales deb -- A/P cr
            {
                accTransDetDebit = new AccTransactionDetailVm()
                {
                    AccountId    = ((int)AccountingChartEnum.CarrierCostOfSales).ToString(),
                    CreditAmount = 0,
                    CurrencyId   = agentNoteVm.CurrencyId,
                    DebitAmount  = agentNoteVm.TotalAmount
                };
                accTrans.AccTransactionDetails.Add(accTransDetDebit);

                accTransDetCredit = new AccTransactionDetailVm()
                {
                    AccountId    = agentAccId,
                    CreditAmount = agentNoteVm.TotalAmount,
                    CurrencyId   = agentNoteVm.CurrencyId,
                    DebitAmount  = 0
                };
                accTrans.AccTransactionDetails.Add(accTransDetCredit);
            }

            int transId = AccountingHelper.AddTransaction(accTrans);

            //Update TransId in invoice table
            AccountingChartHelper.AddTransIdToObj(transId, "AgentNote", agentNoteVm.AgentNoteId, "AgentNoteId");
        }
コード例 #2
0
ファイル: AgentNoteHelper.cs プロジェクト: amorsi/EasyFreight
        internal static string AddEditAgentNote(AgentNoteVm agentNoteVm)
        {
            string             isSaved = "true";
            AccountingEntities db      = new AccountingEntities();
            AgentNote          agNoteDb;
            int agNoteId = agentNoteVm.AgentNoteId;

            if (agNoteId == 0)
            {
                agNoteDb = new AgentNote();
            }
            else
            {
                agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault();
            }

            Mapper.CreateMap <AgentNoteVm, AgentNote>()
            .ForMember(x => x.AgentNoteDetails, y => y.Ignore())
            .IgnoreAllNonExisting();

            Mapper.Map(agentNoteVm, agNoteDb);

            AgentNoteDetail agNoteDetail;

            Mapper.CreateMap <AgentNoteDetailVm, AgentNoteDetail>().IgnoreAllNonExisting();

            foreach (var item in agentNoteVm.AgentNoteDetails)
            {
                if (item.IsSelected)
                {
                    agNoteDetail = new AgentNoteDetail();
                    Mapper.Map(item, agNoteDetail);
                    agNoteDb.AgentNoteDetails.Add(agNoteDetail);
                }
            }

            using (TransactionScope transaction = new TransactionScope())
            {
                try
                {
                    string agentAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(agNoteDb.AgentId, "Agent", "AgentId");
                    if (string.IsNullOrEmpty(agentAccId))
                    {
                        agentAccId = AccountingChartHelper.AddAgentToChart(agNoteDb.AgentId, agNoteDb.AgentNoteType);
                    }


                    if (agNoteId == 0)
                    {
                        agNoteDb.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, true);
                        db.AgentNotes.Add(agNoteDb);
                    }

                    db.SaveChanges();

                    if (agNoteId == 0)
                    {
                        agentNoteVm.AgentId       = agNoteDb.AgentId;
                        agentNoteVm.AgentNoteCode = agNoteDb.AgentNoteCode;
                        //Add invoice to accounting transactions table
                        AddAgentToTransTable(agentAccId, agentNoteVm);


                        OperationHelper.ChangeOperationStatus(agentNoteVm.OperationId, (byte)StatusEnum.InvoiceIssued);
                    }
                    isSaved = "true" + agNoteDb.AgentNoteId;
                    transaction.Complete();
                }
                catch (DbEntityValidationException e)
                {
                    isSaved = "false " + e.Message;
                    AdminHelper.LastIdRemoveOne(PrefixForEnum.AgentNote);
                }
                catch (Exception e)
                {
                    isSaved = "false " + e.Message;
                    AdminHelper.LastIdRemoveOne(PrefixForEnum.AgentNote);
                }
            }


            return(isSaved);
        }
コード例 #3
0
ファイル: AgentNoteHelper.cs プロジェクト: amorsi/EasyFreight
        public static AgentNoteVm GetAgentNoteInfo(int operId, byte noteType, int agNoteId = 0, bool forEdit = true)
        {
            AgentNoteVm        agNoteVm = new AgentNoteVm(noteType);
            OperationsEntities db1      = new OperationsEntities();


            AccountingEntities db = new AccountingEntities();

            AgentNote agNoteDb;

            if (agNoteId != 0)
            {
                agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault();
                Mapper.CreateMap <AgentNote, AgentNoteVm>().IgnoreAllNonExisting();
                Mapper.CreateMap <AgentNoteDetail, AgentNoteDetailVm>().IgnoreAllNonExisting();
                Mapper.Map(agNoteDb, agNoteVm);

                operId = agNoteDb.OperationId;

                //agNoteVm.FromPort = operationInfo.FromPort;
                //agNoteVm.ToPort = operationInfo.ToPort;
            }
            else
            {
                agNoteDb = new AgentNote();
                agNoteVm.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, false);
            }

            var operationInfo = db1.OperationViews.Where(x => x.OperationId == operId).FirstOrDefault();

            Mapper.CreateMap <OperationView, AgentNoteVm>()
            .ForMember(x => x.CreateBy, y => y.Ignore())
            .ForMember(x => x.CreateDate, y => y.Ignore())
            .IgnoreAllNonExisting();
            Mapper.Map(operationInfo, agNoteVm);

            if (operationInfo.OrderFrom == 1)
            {
                agNoteVm.CustomerName = operationInfo.ShipperNameEn;
            }
            else
            {
                agNoteVm.CustomerName = operationInfo.ConsigneeNameEn;
            }

            agNoteVm.AgentName = operationInfo.AgentNameEn;

            var operCostObj = AccountingHelper.GetOperationCost(agNoteVm.OperationId, 0);

            var agentCostList      = operCostObj.OperationCostAccVms.Where(x => x.IsAgent).ToList();
            var agentCostTotalList = operCostObj.OperationCostTotalAccVms.Where(x => x.TotalAgentRate != 0).ToList();

            var operCostList = db1.OperationCosts.Include("OperationCostLib").Include("Currency")
                               .Where(x => x.OperationId == operId && x.IsAgentCost == true).ToList();

            agNoteVm.ContainerSummary = operCostObj.ContainerSummary;

            agNoteVm.OperationCostAccVms      = agentCostList;
            agNoteVm.OperationCostTotalAccVms = agentCostTotalList;
            agNoteVm.HouseBillId = agentCostList.FirstOrDefault().HouseBillId;
            if (agentCostList.Count > 0)
            {
                agNoteVm.CurrencyId   = agentCostList.FirstOrDefault().CurrencyId;
                agNoteVm.CurrencySign = agentCostList.FirstOrDefault().CurrencySign;
            }


            if (forEdit)
            {
                //Get prev agent note details for this operation
                List <int> usedCost = db.AgentNoteDetails
                                      .Where(x => x.AgentNote.OperationId == operId)
                                      .Select(x => x.OperCostId)
                                      .ToList();
                var newCosts = operCostList.Where(x => !usedCost.Contains(x.OperCostId)).ToList();

                AgentNoteDetailVm agentNoteDetailVm;
                foreach (var item in newCosts)
                {
                    agentNoteDetailVm = new AgentNoteDetailVm()
                    {
                        AgentNoteDetailId = 0,
                        CostName          = item.OperationCostLib.OperCostNameEn,
                        CurrencyId        = item.CurrencyId,
                        CurrencySign      = item.Currency.CurrencySign,
                        ExchangeRate      = 1,
                        MainAmount        = agNoteVm.AgentNoteType == 1 ? item.OperationCostSelling : item.OperationCostNet,
                        MainCurrencyId    = item.CurrencyId,
                        MainCurrencySign  = item.Currency.CurrencySign,
                        OperCostId        = item.OperCostId,
                        OperCostLibId     = item.OperCostLibId
                    };

                    agNoteVm.AgentNoteDetails.Add(agentNoteDetailVm);
                }
            }
            else
            {
                foreach (var item in agNoteVm.AgentNoteDetails)
                {
                    item.CostName = operCostList
                                    .Where(x => x.OperCostId == item.OperCostId).FirstOrDefault().OperationCostLib.OperCostNameEn;
                }
            }
            return(agNoteVm);
        }
コード例 #4
0
        public ActionResult AddEditAgentNote(AgentNoteVm agentNoteVm)
        {
            string isSaved = AgentNoteHelper.AddEditAgentNote(agentNoteVm);

            return(Json(isSaved));
        }