protected override void CloneBillTransaction(Session session, Guid billId, ref Bill ret) { SaleInvoiceTransactionBO invoiceTransactionBO = new SaleInvoiceTransactionBO(); var transactions = invoiceTransactionBO.GetTransactions(session, billId); ObjectBO objectBO = new ObjectBO(); foreach (var invoiceTransaction in transactions) { SaleInvoiceTransaction sourceSaleInvoiceTransaction = (SaleInvoiceTransaction)invoiceTransaction; SaleInvoiceTransaction saleInvoiceTransaction = new SaleInvoiceTransaction(session) { Amount = sourceSaleInvoiceTransaction.Amount, Code = String.Format("BT_{0}", ret.Code), CreateDate = DateTime.Now, Description = String.Format("BT_{0}", ret.Code), IssueDate = sourceSaleInvoiceTransaction.IssueDate, SalesInvoiceId = (NAS.DAL.Invoice.SalesInvoice)ret, RowStatus = Utility.Constant.ROWSTATUS_ACTIVE, UpdateDate = DateTime.Now }; saleInvoiceTransaction.Save(); //Create CMS Object for Transaction NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); TransactionObject transactionObject = new TransactionObject(session) { ObjectId = transactionCMSObject, TransactionId = saleInvoiceTransaction }; transactionObject.Save(); //Clone GeneralJournal var generalJournals = sourceSaleInvoiceTransaction.GeneralJournals .Where(r => r.RowStatus >= Utility.Constant.ROWSTATUS_ACTIVE); foreach (var sourceGeneralJournal in generalJournals) { GeneralJournal generalJournal = new GeneralJournal(session) { AccountId = sourceGeneralJournal.AccountId, CreateDate = DateTime.Now, Credit = sourceGeneralJournal.Credit, CurrencyId = sourceGeneralJournal.CurrencyId, Debit = sourceGeneralJournal.Debit, Description = sourceGeneralJournal.Description, JournalType = sourceGeneralJournal.JournalType, RowStatus = Utility.Constant.ROWSTATUS_ACTIVE, TransactionId = saleInvoiceTransaction }; generalJournal.Save(); //Create CMS object for GeneralJournal NAS.DAL.CMS.ObjectDocument.Object generalJournalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); GeneralJournalObject generalJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = generalJournalCMSObject }; generalJournalObject.Save(); } } }
public override bool Save( DevExpress.Xpo.Session session, Guid billId, string billCode, DateTime issuedDate, DAL.Nomenclature.Organization.Organization sourceOrganizationBill, DAL.Nomenclature.Organization.Person targetOrganizationBill) { try { //Get bill by ID NAS.DAL.Invoice.SalesInvoice bill = session.GetObjectByKey <NAS.DAL.Invoice.SalesInvoice>(billId); if (bill == null) { throw new Exception("Could not found bill"); } bill.Code = billCode; bill.IssuedDate = issuedDate; bill.SourceOrganizationId = sourceOrganizationBill; bill.TargetOrganizationId = targetOrganizationBill; bill.RowStatus = Utility.Constant.ROWSTATUS_ACTIVE; bill.Save(); //Create default actual transaction CriteriaOperator criteria = CriteriaOperator.And( new BinaryOperator("RowStatus", Utility.Constant.ROWSTATUS_ACTIVE, BinaryOperatorType.GreaterOrEqual), CriteriaOperator.Or( new ContainsOperator("GeneralJournals", new BinaryOperator("JournalType", JounalTypeConstant.ACTUAL) ), new BinaryOperator(new AggregateOperand("GeneralJournals", Aggregate.Count), 0, BinaryOperatorType.Equal) ) ); var actualSaleInvoiceTransactions = bill.SaleInvoiceTransactions; actualSaleInvoiceTransactions.Criteria = criteria; if (actualSaleInvoiceTransactions == null || actualSaleInvoiceTransactions.Count == 0) { SaleInvoiceTransaction saleInvoiceTransaction = new SaleInvoiceTransaction(session) { Code = "BT_" + bill.Code, CreateDate = DateTime.Now, Description = "BT_" + bill.Code, IssueDate = issuedDate, RowStatus = Utility.Constant.ROWSTATUS_ACTIVE, UpdateDate = DateTime.Now, SalesInvoiceId = bill }; saleInvoiceTransaction.Save(); ObjectBO objectBO = new ObjectBO(); NAS.DAL.CMS.ObjectDocument.Object cmsObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); TransactionObject transactionObject = new TransactionObject(session) { ObjectId = cmsObject, TransactionId = saleInvoiceTransaction }; transactionObject.Save(); } return(true); } catch (Exception) { throw; } }
/// <summary> /// Tạo dữ liệu cho CMS Object Inventory /// </summary> /// <typeparam name="T"></typeparam> /// <param name="uow"></param> /// <param name="InventoryObjectId"></param> /// <param name="CMSObjectType"></param> public void PopulateCMSObjecForInventoryObject <T>( UnitOfWork uow, Guid InventoryObjectId, DAL.CMS.ObjectDocument.ObjectTypeEnum CMSObjectType) { ObjectBO bo = new ObjectBO(); if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommand))) { NAS.DAL.Inventory.Command.InventoryCommand inventoryObject = uow.GetObjectByKey <NAS.DAL.Inventory.Command.InventoryCommand>(InventoryObjectId); NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType); InventoryCommandObject ICO = new InventoryCommandObject(uow); ICO.ObjectId = o; ICO.InventoryCommandId = (inventoryObject as NAS.DAL.Inventory.Command.InventoryCommand); ICO.Save(); NAS.DAL.CMS.ObjectDocument.ObjectType type = NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType); if (type == null) { throw new Exception("The ObjectType is not exist in system"); } InventoryCommandCustomType ICCT = new InventoryCommandCustomType(uow); ICCT.ObjectTypeId = type; ICCT.InventoryCommandId = (inventoryObject as NAS.DAL.Inventory.Command.InventoryCommand); ICCT.Save(); } else if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandItemTransaction))) { InventoryCommandItemTransaction transactionObject = uow.GetObjectByKey <InventoryCommandItemTransaction>(InventoryObjectId); NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType); InventoryTransactionObject ITO = new InventoryTransactionObject(uow); ITO.ObjectId = o; ITO.InventoryTransactionId = (transactionObject as NAS.DAL.Inventory.Journal.InventoryTransaction); ITO.Save(); NAS.DAL.CMS.ObjectDocument.ObjectType type = NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType); InventoryTransactionCustomType ITCT = new InventoryTransactionCustomType(uow); ITCT.ObjectTypeId = type; ITCT.InventoryTransactionId = (transactionObject as NAS.DAL.Inventory.Journal.InventoryTransaction); ITCT.Save(); } else if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Command.InventoryCommandFinancialTransaction))) { InventoryCommandFinancialTransaction transactionObject = uow.GetObjectByKey <InventoryCommandFinancialTransaction>(InventoryObjectId); NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType); TransactionObject TO = new TransactionObject(uow); TO.ObjectId = o; TO.TransactionId = (transactionObject as Transaction); TO.Save(); } else if (typeof(T).Equals(typeof(NAS.DAL.Accounting.Journal.GeneralJournal))) { GeneralJournal journalObject = uow.GetObjectByKey <GeneralJournal>(InventoryObjectId); NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType); GeneralJournalObject GJO = new GeneralJournalObject(uow); GJO.ObjectId = o; GJO.GeneralJournalId = (journalObject as GeneralJournal); GJO.Save(); NAS.DAL.CMS.ObjectDocument.ObjectType type = NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType); GeneralJournalCustomType GJCT = new GeneralJournalCustomType(uow); GJCT.ObjectTypeId = type; GJCT.GeneralJournalId = (journalObject as GeneralJournal); GJCT.Save(); } else if (typeof(T).Equals(typeof(NAS.DAL.Inventory.Journal.InventoryJournal))) { InventoryJournal journalObject = uow.GetObjectByKey <InventoryJournal>(InventoryObjectId); NAS.DAL.CMS.ObjectDocument.Object o = bo.CreateCMSObject(uow, CMSObjectType); InventoryJournalObject ITO = new InventoryJournalObject(uow); ITO.ObjectId = o; ITO.InventoryJournalId = (journalObject as InventoryJournal); ITO.Save(); NAS.DAL.CMS.ObjectDocument.ObjectType type = NAS.DAL.CMS.ObjectDocument.ObjectType.GetDefault(uow, CMSObjectType); InventoryJournalCustomType ITCT = new InventoryJournalCustomType(uow); ITCT.ObjectTypeId = type; ITCT.InventoryJournalId = (journalObject as InventoryJournal); ITCT.Save(); } uow.FlushChanges(); }
public void BillTransactionInit(Session session, Guid BillId, double TotalAmount, double DiscountAmount, double TaxAmount, double ItemAmount ) { CriteriaOperator filter = new BinaryOperator("Code", DefaultAccountEnum.NAAN_DEFAULT.ToString(), BinaryOperatorType.Equal); Account account = session.FindObject <Account>(filter); PurchaseInvoiceTransaction saleInvoiceTransaction = new PurchaseInvoiceTransaction(session); saleInvoiceTransaction.TransactionId = Guid.NewGuid(); saleInvoiceTransaction.CreateDate = saleInvoiceTransaction.IssueDate = DateTime.Now; saleInvoiceTransaction.Amount = TotalAmount; saleInvoiceTransaction.RowStatus = 0; saleInvoiceTransaction.Save(); ObjectBO objectBO = new ObjectBO(); NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); TransactionObject transactionObject = new TransactionObject(session) { ObjectId = transactionCMSObject, TransactionId = saleInvoiceTransaction }; transactionObject.Save(); // total GeneralJournal generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId); generalJournal.RowStatus = 0; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Debit = TotalAmount; generalJournal.Save(); GeneralJournalObject debitGeneralJournalObject = null; NAS.DAL.CMS.ObjectDocument.Object debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); // Discount generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId); generalJournal.RowStatus = 0; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Credit = DiscountAmount; generalJournal.Save(); debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); // Tax generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId); generalJournal.RowStatus = 0; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Credit = DiscountAmount; generalJournal.Save(); debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); // Item generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId); generalJournal.RowStatus = 0; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Credit = ItemAmount; generalJournal.Save(); debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); }
public void BillTransactionInit(Session session, Guid BillId, double TotalAmount, double DiscountAmount, double TaxAmount, double ItemAmount ) { CriteriaOperator filter = new GroupOperator(GroupOperatorType.And, new BinaryOperator("Code", "", BinaryOperatorType.Equal), //new BinaryOperator("SalesInvoiceId", BillId, BinaryOperatorType.Equal), new BinaryOperator("SalesInvoiceId", BillId, BinaryOperatorType.Equal)); SaleInvoiceTransaction saleInvoiceTransaction = session.FindObject <SaleInvoiceTransaction>(filter); if (saleInvoiceTransaction != null) { filter = new BinaryOperator("TransactionId", saleInvoiceTransaction.TransactionId, BinaryOperatorType.Equal); TransactionObject transactionO = session.FindObject <TransactionObject>(filter); if (transactionO != null) { transactionO.Delete(); transactionO.Save(); } filter = new BinaryOperator("GeneralJournalId.TransactionId", saleInvoiceTransaction.TransactionId, BinaryOperatorType.Equal); XPCollection <GeneralJournalObject> collectGeneralJournalObject = new XPCollection <GeneralJournalObject>(session, filter); if (collectGeneralJournalObject.Count > 0) { session.Delete(collectGeneralJournalObject); session.Save(collectGeneralJournalObject); } filter = new BinaryOperator("TransactionId", saleInvoiceTransaction.TransactionId, BinaryOperatorType.Equal); XPCollection <GeneralJournal> collectGeneralJournal = new XPCollection <GeneralJournal>(session, filter); if (collectGeneralJournal.Count > 0) { session.Delete(collectGeneralJournal); session.Save(collectGeneralJournal); } Transaction transaction = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId); if (transaction != null) { transaction.Delete(); transaction.Save(); } saleInvoiceTransaction.Delete(); saleInvoiceTransaction.Save(); } saleInvoiceTransaction = new SaleInvoiceTransaction(session); saleInvoiceTransaction.Code = ""; saleInvoiceTransaction.TransactionId = Guid.NewGuid(); saleInvoiceTransaction.CreateDate = saleInvoiceTransaction.IssueDate = DateTime.Now; saleInvoiceTransaction.Amount = TotalAmount; saleInvoiceTransaction.RowStatus = Utility.Constant.ROWSTATUS_ACTIVE; saleInvoiceTransaction.SalesInvoiceId = session.GetObjectByKey <SalesInvoice>(BillId); saleInvoiceTransaction.Save(); ObjectBO objectBO = new ObjectBO(); NAS.DAL.CMS.ObjectDocument.Object transactionCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); TransactionObject transactionObject = new TransactionObject(session) { ObjectId = transactionCMSObject, TransactionId = saleInvoiceTransaction }; transactionObject.Save(); filter = new BinaryOperator("Code", DefaultAccountEnum.NAAN_DEFAULT.ToString(), BinaryOperatorType.Equal); Account account = session.FindObject <Account>(filter); // total GeneralJournal generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = saleInvoiceTransaction; generalJournal.RowStatus = Utility.Constant.ROWSTATUS_ACTIVE; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Debit = TotalAmount; generalJournal.Save(); GeneralJournalObject debitGeneralJournalObject = null; NAS.DAL.CMS.ObjectDocument.Object debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); // Discount generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = saleInvoiceTransaction; generalJournal.RowStatus = Utility.Constant.ROWSTATUS_ACTIVE; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Credit = DiscountAmount; generalJournal.Save(); debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); // Tax generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = saleInvoiceTransaction; generalJournal.RowStatus = Utility.Constant.ROWSTATUS_ACTIVE; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Credit = TaxAmount; generalJournal.Save(); debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); // Item generalJournal = new GeneralJournal(session); generalJournal.GeneralJournalId = Guid.NewGuid(); generalJournal.TransactionId = session.GetObjectByKey <Transaction>(saleInvoiceTransaction.TransactionId); generalJournal.RowStatus = Utility.Constant.ROWSTATUS_ACTIVE; generalJournal.JournalType = 'A'; generalJournal.AccountId = account; generalJournal.Credit = ItemAmount; generalJournal.Save(); debitJounalCMSObject = objectBO.CreateCMSObject(session, DAL.CMS.ObjectDocument.ObjectTypeEnum.INVOICE_SALE); debitGeneralJournalObject = new GeneralJournalObject(session) { GeneralJournalId = generalJournal, ObjectId = debitJounalCMSObject }; debitGeneralJournalObject.Save(); }