private DbDeleteStatement GetQuery_DeleteQuery(ItemSaleLine _obj)
        {
            DbDeleteStatement clause = DbMgr.CreateDeleteClause();

            clause.DeleteFrom("ItemSaleLines").Criteria.IsEqual("ItemSaleLines", "ItemSaleLineID", _obj.ItemSaleLineID);

            return(clause);
        }
        protected override OpResult _Store(ItemSaleLine _obj)
        {
            if (_obj == null)
            {
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.ObjectIsNull, _obj, "ItemSaleLine object cannot be created as it is null"));
            }

            bool is_creating = !Exists(_obj);

            DbInsertStatement clause = GetInsertStatement(_obj);

            DbCommand     cmdSQLInsert = CreateDbCommand(clause);
            DbTransaction myTrans      = DbMgr.DbConnection.BeginTransaction();

            try
            {
                cmdSQLInsert.CommandText = clause.ToString();
                cmdSQLInsert.Transaction = myTrans;
                cmdSQLInsert.ExecuteNonQuery();
                myTrans.Commit();
            }
            catch (OdbcException ex)
            {
                myTrans.Rollback();
                Log(ex.Message);
                Console.WriteLine(ex.ToString());
                if (is_creating)
                {
                    return(OpResult.NotifyStoreAction(OpResult.ResultStatus.CreatedWithException, _obj, ex.ToString()));
                }
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.UpdatedWithException, _obj, ex.ToString()));
            }
            catch (Exception ex)
            {
                Log(ex.Message);
                Console.WriteLine(ex.ToString());
                if (is_creating)
                {
                    return(OpResult.NotifyStoreAction(OpResult.ResultStatus.CreatedWithException, _obj, ex.ToString()));
                }
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.UpdatedWithException, _obj, ex.ToString()));
            }

            _obj.FromDb = true;

            if (is_creating)
            {
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Created, _obj));
            }
            return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Updated, _obj));
        }
        protected override OpResult _Delete(ItemSaleLine _obj)
        {
            if (_obj == null)
            {
                return(OpResult.NotifyDeleteAction(OpResult.ResultStatus.ObjectIsNull, _obj, "ItemSaleLine object cannot be deleted as it is null"));
            }

            if (Exists(_obj))
            {
                ExecuteNonQuery(GetQuery_DeleteQuery(_obj));
                return(OpResult.NotifyDeleteAction(OpResult.ResultStatus.ExistsAndDeleted, _obj));
            }

            return(OpResult.NotifyDeleteAction(OpResult.ResultStatus.NotExists, _obj, "ItemSaleLine object cannot be deleted as it does not exist"));
        }
        public BOItemSaleLine(Accountant accountant, Sale _sale, ItemSaleLine _line, BOContext context)
            : base(accountant, _sale, _line, context)
        {
            mObjectID       = BOType.BOItemSaleLine;
            mDataProxy      = _line.Clone() as ItemSaleLine;
            mDataProxy.Sale = _sale;

            if (mDataProxy.Sale.IsTaxInclusive == "Y")
            {
                mPrice = mDataProxy.TaxInclusiveUnitPrice;
            }
            else
            {
                mPrice = mDataProxy.TaxExclusiveUnitPrice;
            }
        }
        private void StoreLines(Sale _obj)
        {
            IList <SaleLine> lines = _obj.SaleLines;

            foreach (SaleLine line in lines)
            {
                RepositoryMgr.SaleLineMgr.Store(line);
                int?purchase_id      = line.SaleID;
                int?purchase_line_id = line.SaleLineID;
                if (line is ItemSaleLine)
                {
                    ItemSaleLine _line = line as ItemSaleLine;
                    _line.SaleID         = purchase_id;
                    _line.ItemSaleLineID = purchase_line_id;
                    RepositoryMgr.ItemSaleLineMgr.Store(_line);
                }
                else if (line is MiscSaleLine)
                {
                    MiscSaleLine _line = line as MiscSaleLine;
                    _line.SaleID         = purchase_id;
                    _line.MiscSaleLineID = purchase_line_id;
                    RepositoryMgr.MiscSaleLineMgr.Store(_line);
                }
                else if (line is ProfessionalSaleLine)
                {
                    ProfessionalSaleLine _line = line as ProfessionalSaleLine;
                    _line.SaleID = purchase_id;
                    _line.ProfessionalSaleLineID = purchase_line_id;
                    RepositoryMgr.ProfessionalSaleLineMgr.Store(_line);
                }
                else if (line is ServiceSaleLine)
                {
                    ServiceSaleLine _line = line as ServiceSaleLine;
                    _line.SaleID            = purchase_id;
                    _line.ServiceSaleLineID = purchase_line_id;
                    RepositoryMgr.ServiceSaleLineMgr.Store(_line);
                }
                else if (line is TimeBillingSaleLine)
                {
                    TimeBillingSaleLine _line = line as TimeBillingSaleLine;
                    _line.SaleID = purchase_id;
                    _line.TimeBillingSaleLineID = purchase_line_id;
                    RepositoryMgr.TimeBillingSaleLineMgr.Store(_line);
                }
            }
        }
        protected override OpResult _Store(ItemSaleLine _obj)
        {
            if (_obj == null)
            {
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.ObjectIsNull, _obj, "ItemSaleLine object cannot be created as it is null"));
            }

            if (Exists(_obj))
            {
                ExecuteNonQuery(GetQuery_UpdateQuery(_obj));
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Updated, _obj));
            }

            ExecuteNonQuery(GetQuery_InsertQuery(_obj));
            if (_obj.ItemSaleLineID == null)
            {
                _obj.ItemSaleLineID = DbMgr.GetLastInsertID();
            }
            _obj.FromDb = true;
            return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Created, _obj));
        }
Exemple #7
0
        private Dictionary <string, DbFieldEntry> GetQueryMap_StoreItemSaleLines(Sale _sale, ItemSaleLine _line)
        {
            bool is_header = (_line == null);
            Dictionary <string, DbFieldEntry> query_map = new Dictionary <string, DbFieldEntry>();

            bool multi_currency_support = _sale.RepositoryMgr.CurrencyMgr.SupportMultiCurrency;

            #region Populate Sale Information
            query_map.Add("FirstName", DbMgr.CreateStringFieldEntry(is_header && _sale.Customer != null ? _sale.Customer.FirstName : ""));
            query_map.Add("CoLastName", DbMgr.CreateStringFieldEntry(is_header && _sale.Customer != null ? _sale.Customer.LastName : ""));
            query_map.Add("CardID", DbMgr.CreateStringFieldEntry(is_header && _sale.Customer != null ? _sale.Customer.CardIdentification : ""));
            query_map.Add("AddressLine1", DbMgr.CreateStringFieldEntry(is_header ? _sale.ShipToAddressLine1 : ""));
            query_map.Add("AddressLine2", DbMgr.CreateStringFieldEntry(is_header ? _sale.ShipToAddressLine2 : ""));
            query_map.Add("AddressLine3", DbMgr.CreateStringFieldEntry(is_header ? _sale.ShipToAddressLine3 : ""));
            query_map.Add("AddressLine4", DbMgr.CreateStringFieldEntry(is_header ? _sale.ShipToAddressLine4 : ""));
            query_map.Add("InvoiceNumber", DbMgr.CreateStringFieldEntry(is_header ? _sale.InvoiceNumber : ""));
            query_map.Add("Memo", DbMgr.CreateStringFieldEntry(is_header ? _sale.Memo : ""));
            query_map.Add("Inclusive", DbMgr.CreateStringFieldEntry(is_header && _sale.IsTaxInclusive == "Y" ? "1" : ""));
            query_map.Add("SaleDate", _sale.InvoiceDate != null && is_header ? (DbFieldEntry)DbMgr.CreateDateTimeFieldEntry(_sale.InvoiceDate) : (DbFieldEntry)DbMgr.CreateStringFieldEntry(""));
            query_map.Add("ShipVia", DbMgr.CreateStringFieldEntry(is_header && _sale.ShippingMethod != null ? _sale.ShippingMethod.Method : ""));
            query_map.Add("DeliveryStatus", DbMgr.CreateStringFieldEntry(is_header & _sale.InvoiceDelivery != null ? _sale.InvoiceDelivery.InvoiceDeliveryID : ""));
            query_map.Add("Comment", DbMgr.CreateStringFieldEntry(is_header && _sale.Comment != null ? _sale.Comment : ""));
            query_map.Add("SalespersonLastName", DbMgr.CreateStringFieldEntry(is_header && _sale.SalesPerson != null ? _sale.SalesPerson.LastName : ""));
            query_map.Add("SalespersonFirstName", DbMgr.CreateStringFieldEntry(is_header && _sale.SalesPerson != null ? _sale.SalesPerson.FirstName : ""));
            query_map.Add("ShippingDate", is_header && _sale.PromisedDate != null ? (DbFieldEntry)DbMgr.CreateDateTimeFieldEntry(_sale.PromisedDate) : (DbFieldEntry)DbMgr.CreateStringFieldEntry(""));
            query_map.Add("FreightExTaxAmount", DbMgr.CreateDoubleFieldEntry(is_header ? _sale.TaxExclusiveFreight : 0));
            query_map.Add("FreightIncTaxAmount", DbMgr.CreateDoubleFieldEntry(is_header ? _sale.TaxInclusiveFreight : 0));
            query_map.Add("FreightTaxCode", DbMgr.CreateStringFieldEntry(is_header && _sale.FreightTaxCode != null ? _sale.FreightTaxCode.Code : ""));

            string sale_status_text = "";
            Status sale_status      = _sale.InvoiceStatus;
            if (is_header && sale_status != null)
            {
                if (sale_status.Type == Status.StatusType.Quote)
                {
                    sale_status_text = "Q";
                }
                else if (sale_status.Type == Status.StatusType.Order)
                {
                    sale_status_text = "O";
                }
                else if (sale_status.Type == Status.StatusType.Open)
                {
                    sale_status_text = "I";
                }
            }
            query_map.Add("SaleStatus", DbMgr.CreateStringFieldEntry(sale_status_text));

            if (_sale.InvoiceStatus.Type == Accounting.Core.Definitions.Status.StatusType.Order ||
                _sale.InvoiceStatus.Type == Accounting.Core.Definitions.Status.StatusType.Open
                )
            {
                //sqlArray.Add("AmountPaid", DbMgr.CreateDoubleFieldEntry(_obj.AmountPaid));
            }
            if (multi_currency_support)
            {
                query_map.Add("CurrencyCode", DbMgr.CreateStringFieldEntry(is_header && RepositoryMgr.IsMultiUserVersion && _sale.Currency != null ? _sale.Currency.CurrencyCode : ""));
                query_map.Add("ExchangeRate", DbMgr.CreateDoubleFieldEntry(is_header && RepositoryMgr.IsMultiUserVersion ? _sale.TransactionExchangeRate : 0));
            }
            query_map.Add("PaymentIsDue", DbMgr.CreateIntFieldEntry(is_header && _sale.Terms != null ? _sale.Terms.PaymentIsDue : 0));
            query_map.Add("DiscountDays", DbMgr.CreateIntFieldEntry(is_header && _sale.Terms != null ? _sale.Terms.DiscountDays : 0));
            query_map.Add("BalanceDueDays", DbMgr.CreateIntFieldEntry(is_header && _sale.Terms != null ? _sale.Terms.BalanceDueDays : 0));
            query_map.Add("PercentDiscount", DbMgr.CreateDoubleFieldEntry(is_header && _sale.Terms != null ? _sale.Terms.EarlyPaymentDiscountPercent : 0));
            query_map.Add("PercentMonthlyCharge", DbMgr.CreateDoubleFieldEntry(is_header && _sale.Terms != null ? _sale.Terms.LatePaymentChargePercent : 0));
            query_map.Add("ReferralSource", DbMgr.CreateStringFieldEntry(is_header && _sale.ReferralSource != null ? _sale.ReferralSource.Description : ""));
            #endregion

            #region Populate Line Information
            query_map.Add("ItemNumber", DbMgr.CreateStringFieldEntry(!is_header && _line.Item != null ? _line.Item.ItemNumber : ""));
            query_map.Add("Quantity", DbMgr.CreateDoubleFieldEntry(!is_header ? _line.Quantity : 0));
            query_map.Add("Description", DbMgr.CreateStringFieldEntry(!is_header ? _line.Description : ""));
            query_map.Add("ExTaxPrice", DbMgr.CreateDoubleFieldEntry(!is_header ? _line.TaxExclusiveUnitPrice : 0));
            query_map.Add("IncTaxPrice", DbMgr.CreateDoubleFieldEntry(!is_header ? _line.TaxInclusiveUnitPrice : 0));
            query_map.Add("Discount", DbMgr.CreateDoubleFieldEntry(!is_header ? _line.Discount : 0));
            query_map.Add("ExTaxTotal", DbMgr.CreateDoubleFieldEntry(!is_header ? _line.TaxExclusiveTotal : 0));
            query_map.Add("IncTaxTotal", DbMgr.CreateDoubleFieldEntry(!is_header ? _line.TaxInclusiveTotal : 0));
            query_map.Add("Job", DbMgr.CreateStringFieldEntry(!is_header && _line.Job != null ? _line.Job.JobName : ""));
            query_map.Add("TaxCode", DbMgr.CreateStringFieldEntry(!is_header && _line.TaxCode != null ? _line.TaxCode.Code : ""));
            #endregion

            return(query_map);
        }
        private DbInsertStatement GetInsertStatement(ItemSaleLine _obj)
        {
            Sale _sale = _obj.Sale;

            DbInsertStatement clause = DbMgr.CreateInsertClause();

            if (_sale.Customer != null)
            {
                clause.InsertColumn("FirstName", DbMgr.CreateStringFieldEntry(_sale.Customer.FirstName));
                clause.InsertColumn("CoLastName", DbMgr.CreateStringFieldEntry(_sale.Customer.LastName));
                clause.InsertColumn("CardID", DbMgr.CreateStringFieldEntry(_sale.Customer.CardIdentification));
            }
            clause.InsertColumn("AddressLine1", DbMgr.CreateStringFieldEntry(_sale.ShipToAddressLine1));
            clause.InsertColumn("AddressLine2", DbMgr.CreateStringFieldEntry(_sale.ShipToAddressLine2));
            clause.InsertColumn("AddressLine3", DbMgr.CreateStringFieldEntry(_sale.ShipToAddressLine3));
            clause.InsertColumn("AddressLine4", DbMgr.CreateStringFieldEntry(_sale.ShipToAddressLine4));

            if (_sale.IsTaxInclusive == "Y")
            {
                clause.InsertColumn("Inclusive", DbMgr.CreateIntFieldEntry(1));
            }

            clause.InsertColumn("InvoiceNumber", DbMgr.CreateStringFieldEntry(_sale.InvoiceNumber));

            if (_sale.InvoiceDate != null)
            {
                clause.InsertColumn("SaleDate", DbMgr.CreateDateTimeFieldEntry(_sale.InvoiceDate));
            }

            if (_sale.ShippingMethod != null)
            {
                clause.InsertColumn("ShipVia", DbMgr.CreateStringFieldEntry(_sale.ShippingMethod.Method));
            }

            if (_obj.Item != null)
            {
                clause.InsertColumn("ItemNumber", DbMgr.CreateStringFieldEntry(_obj.Item.ItemNumber));
            }

            if (_sale.InvoiceDelivery != null)
            {
                clause.InsertColumn("DeliveryStatus", DbMgr.CreateStringFieldEntry(_sale.InvoiceDelivery.InvoiceDeliveryID));
            }

            clause.InsertColumn("Quantity", DbMgr.CreateDoubleFieldEntry(_obj.Quantity));

            clause.InsertColumn("Description", DbMgr.CreateStringFieldEntry(_obj.Description));

            clause.InsertColumn("ExTaxPrice", DbMgr.CreateDoubleFieldEntry(_obj.TaxExclusiveUnitPrice));
            clause.InsertColumn("IncTaxPrice", DbMgr.CreateDoubleFieldEntry(_obj.TaxInclusiveUnitPrice));

            clause.InsertColumn("Discount", DbMgr.CreateDoubleFieldEntry(_obj.Discount));

            clause.InsertColumn("ExTaxTotal", DbMgr.CreateDoubleFieldEntry(_obj.TaxExclusiveTotal));
            clause.InsertColumn("IncTaxTotal", DbMgr.CreateDoubleFieldEntry(_obj.TaxInclusiveTotal));

            if (_obj.Job != null)
            {
                clause.InsertColumn("Job", DbMgr.CreateStringFieldEntry(_obj.Job.JobName));
            }

            if (_sale.Comment != null)
            {
                clause.InsertColumn("Comment", DbMgr.CreateStringFieldEntry(_sale.Comment));
            }

            clause.InsertColumn("Memo", DbMgr.CreateStringFieldEntry(_sale.Memo));

            if (_sale.SalesPerson != null)
            {
                clause.InsertColumn("SalespersonLastName", DbMgr.CreateStringFieldEntry(_sale.SalesPerson.LastName));
                clause.InsertColumn("SalespersonFirstName", DbMgr.CreateStringFieldEntry(_sale.SalesPerson.FirstName));
            }

            if (_sale.PromisedDate != null)
            {
                clause.InsertColumn("ShippingDate", DbMgr.CreateDateTimeFieldEntry(_sale.PromisedDate));
            }

            if (_obj.TaxCode != null)
            {
                clause.InsertColumn("TaxCode", DbMgr.CreateStringFieldEntry(_obj.TaxCode.Code));
            }

            clause.InsertColumn("FreightExTaxAmount", DbMgr.CreateDoubleFieldEntry(_sale.TaxExclusiveFreight));
            clause.InsertColumn("FreightIncTaxAmount", DbMgr.CreateDoubleFieldEntry(_sale.TaxInclusiveFreight));

            if (_sale.FreightTaxCode != null)
            {
                clause.InsertColumn("FreightTaxCode", DbMgr.CreateStringFieldEntry(_sale.FreightTaxCode.Code));
            }

            if (_sale.InvoiceStatus != null)
            {
                clause.InsertColumn("SaleStatus", DbMgr.CreateStringFieldEntry(_sale.InvoiceStatus.StatusID));

                if (_sale.InvoiceStatus.Type == Accounting.Core.Definitions.Status.StatusType.Order ||
                    _sale.InvoiceStatus.Type == Accounting.Core.Definitions.Status.StatusType.Open
                    )
                {
                    //clause.InsertColumn("AmountPaid", DbMgr.CreateDoubleFieldEntry(_obj.AmountPaid));
                }
            }

            if (RepositoryMgr.IsMultiUserVersion)
            {
                if (_sale.Currency != null)
                {
                    clause.InsertColumn("CurrencyCode", DbMgr.CreateStringFieldEntry(_sale.Currency.CurrencyCode));
                }
                clause.InsertColumn("ExchangeRate", DbMgr.CreateDoubleFieldEntry(_sale.TransactionExchangeRate));
            }

            if (_sale.Terms != null)
            {
                clause.InsertColumn("PaymentIsDue", DbMgr.CreateIntFieldEntry(_sale.Terms.PaymentIsDue));
                clause.InsertColumn("DiscountDays", DbMgr.CreateIntFieldEntry(_sale.Terms.DiscountDays));
                clause.InsertColumn("BalanceDueDays", DbMgr.CreateIntFieldEntry(_sale.Terms.BalanceDueDays));
                clause.InsertColumn("PercentDiscount", DbMgr.CreateDoubleFieldEntry(_sale.Terms.EarlyPaymentDiscountPercent));
                clause.InsertColumn("PercentMonthlyCharge", DbMgr.CreateDoubleFieldEntry(_sale.Terms.LatePaymentChargePercent));
            }

            if (_sale.ReferralSource != null)
            {
                clause.InsertColumn("ReferralSource", DbMgr.CreateStringFieldEntry(_sale.ReferralSource.Description));
            }

            clause.Into("Import_Item_Sales");

            return(clause);
        }
 private DbUpdateStatement GetQuery_UpdateQuery(ItemSaleLine _obj)
 {
     return(DbMgr.CreateUpdateClause("ItemSaleLines", GetFields(_obj), "ItemSaleLineID", _obj.ItemSaleLineID));
 }
        private DbInsertStatement GetQuery_InsertQuery(ItemSaleLine _obj)
        {
            Dictionary <string, DbFieldEntry> fields = GetFields(_obj);

            return(DbMgr.CreateInsertClause("ItemSaleLines", fields));
        }