public virtual void DeleteBillItem(DevExpress.Xpo.Session session, Guid billItemId) { try { NAS.DAL.Invoice.BillItem billItem = session.GetObjectByKey <NAS.DAL.Invoice.BillItem>(billItemId); Bill bill = billItem.BillId; if (billItem == null) { return; } billItem.Delete(); //Update totalprice bill.SumOfItemPrice = bill.BillItems.Sum(r => r.TotalPrice); bill.Save(); if (bill.PromotionCalculationType.Equals(Utility.Constant.CALCULATION_TYPE_ON_ITEMS)) { UpdatePromotionOnItems(session, bill.BillId); } UpdateSumOfTax(session, bill); #region Update bill Total bill.Total = bill.SumOfItemPrice - bill.SumOfPromotion + bill.SumOfTax; bill.Save(); #endregion Update bill Total } catch (Exception) { throw; } }
public virtual DevExpress.Xpo.XPCollection <NAS.DAL.Invoice.BillItem> GetBillItems(DevExpress.Xpo.Session session, Guid billId) { Bill bill = session.GetObjectByKey <Bill>(billId); if (bill != null) { return(bill.BillItems); } return(null); }
public override void ComboBoxItem_ItemRequestedByValue(DevExpress.Xpo.Session session, object source, DevExpress.Web.ASPxEditors.ListEditItemRequestedByValueEventArgs e) { ASPxComboBox combo = source as ASPxComboBox; Item obj = session.GetObjectByKey <Item>(e.Value); if (obj != null) { combo.DataSource = new Item[] { obj }; combo.DataBindItems(); } }
public override Bill GetBillById(DevExpress.Xpo.Session session, Guid billId) { NAS.DAL.Invoice.SalesInvoice bill = session.GetObjectByKey <NAS.DAL.Invoice.SalesInvoice>(billId, true); return(bill); }
public override bool Delete(DevExpress.Xpo.Session session, Guid billId) { try { //Get bill NAS.DAL.Invoice.SalesInvoice bill = session.GetObjectByKey <NAS.DAL.Invoice.SalesInvoice>(billId); if (bill == null) { throw new Exception("Could not found bill"); } //Validate if (bill.RowStatus.Equals(Utility.Constant.ROWSTATUS_BOOKED_ENTRY)) { throw new Exception(String.Format("Không thể xóa vì hóa đơn '{0}' đã được ghi sổ.", bill.Code)); } //Mark delete status on bill bill.RowStatus = Utility.Constant.ROWSTATUS_DELETED; bill.Save(); var billItems = bill.BillItems.Where(r => r.RowStatus >= 0); //Mark delete status on bill items if (billItems != null) { foreach (var item in billItems) { item.RowStatus = Utility.Constant.ROWSTATUS_DELETED; item.Save(); } } var invoiceTransactions = bill.SaleInvoiceTransactions.Where(r => r.RowStatus >= 0); //Mark delete status on bill invoice transactions if (invoiceTransactions != null) { foreach (var item in invoiceTransactions) { item.RowStatus = Utility.Constant.ROWSTATUS_DELETED; item.Save(); } } var generalJournals = bill.SaleInvoiceTransactions.Where(r => r.RowStatus >= 0) .SelectMany(r => r.GeneralJournals) .Where(r => r.RowStatus >= 0); //Mark delete status on bill invoice general journals if (generalJournals != null) { foreach (var item in generalJournals) { item.RowStatus = Utility.Constant.ROWSTATUS_DELETED; item.Save(); } } var inventoryTransactions = bill.SalesInvoiceInventoryTransactions.Where(r => r.RowStatus >= 0); //Mark delete status on bill invoice inventory transactions if (inventoryTransactions != null) { foreach (var item in inventoryTransactions) { item.RowStatus = Utility.Constant.ROWSTATUS_DELETED; item.Save(); } } var inventoryJournals = bill.SalesInvoiceInventoryTransactions.Where(r => r.RowStatus >= 0) .SelectMany(r => r.InventoryJournals) .Where(r => r.RowStatus >= 0); //Mark delete status on bill invoice inventory journals if (inventoryJournals != null) { foreach (var item in inventoryJournals) { item.RowStatus = Utility.Constant.ROWSTATUS_DELETED; item.Save(); } } return(true); } catch (Exception) { throw; } }
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; } }
public virtual void CreateBillItem( DevExpress.Xpo.Session session, Guid billId, Guid itemId, Guid unitId, double quantity, double price, double promotionInPercentage, string comment) { try { NAS.DAL.Invoice.Bill bill = session.GetObjectByKey <NAS.DAL.Invoice.Bill>(billId); if (bill == null) { throw new Exception("Could not found specific bill"); } //Get ItemUnit Item item = session.GetObjectByKey <Item>(itemId); Unit unit = session.GetObjectByKey <Unit>(unitId); ItemUnit itemUnit = session.FindObject <ItemUnit>( CriteriaOperator.And( new BinaryOperator("ItemId", item), new BinaryOperator("UnitId", unit), CriteriaOperator.Or( new BinaryOperator("RowStatus", Utility.Constant.ROWSTATUS_ACTIVE), new BinaryOperator("RowStatus", Utility.Constant.ROWSTATUS_DEFAULT) ) )); if (itemUnit == null) { throw new Exception("Could not found item unit"); } BillItem billItem = new BillItem(session) { BillId = bill, Comment = comment, //Currency ItemUnitId = itemUnit, Price = price, PromotionInNumber = promotionInPercentage != -1 ? (price * quantity * promotionInPercentage) / 100 : 0, PromotionInPercentage = promotionInPercentage, Quantity = quantity, RowStatus = Utility.Constant.ROWSTATUS_ACTIVE, TotalPrice = price * quantity }; billItem.Save(); //update SumOfItemPrice bill.SumOfItemPrice = bill.BillItems.Sum(r => r.TotalPrice); bill.Save(); if (bill.PromotionCalculationType.Equals(Utility.Constant.CALCULATION_TYPE_ON_ITEMS)) { UpdatePromotionOnItems(session, billId); } //Insert into BillItemTax... //Get VAT TaxType of Item ItemBO itemBO = new ItemBO(); ItemTax itemTax = itemBO.GetCurrentVATOfItem(session, itemId); if (itemTax != null) { BillItemTax billItemTax = new BillItemTax(session) { BillItemId = billItem, ItemTaxId = itemTax, TaxInNumber = itemTax.TaxId.Amount, TaxInPercentage = itemTax.TaxId.Percentage }; billItemTax.Save(); } UpdateSumOfTax(session, bill); #region Update bill Total bill.Total = bill.SumOfItemPrice - bill.SumOfPromotion + bill.SumOfTax; bill.Save(); #endregion Update bill Total } catch (Exception ex) { throw; } }