public JsonResult SaveARInvoice(POSAccount.Contract.ARInvoice arInvoiceData) { var recStatus = false; var strMessage = ""; try { arInvoiceData.CreatedBy = Utility.DEFAULTUSER; arInvoiceData.ModifiedBy = Utility.DEFAULTUSER; arInvoiceData.Source = "AR"; arInvoiceData.CurrencyCode = Utility.DEFAULTCURRENCYCODE; arInvoiceData.BranchID = Utility.SsnBranch; strMessage = "Invoice saved successfully."; var result = new POSAccount.BusinessFactory.ARInvoiceBO().SaveARInvoice(arInvoiceData); recStatus = result; } catch (Exception ex) { ModelState.AddModelError("Error", ex.Message); strMessage = ex.Message + " >> " + ex.InnerException.Message; } return(Json(new { success = recStatus, Message = strMessage, arInvoiceData = arInvoiceData })); }
public bool Save <T>(T item) where T : IContract { var result = 0; var orderheader = (OrderHeader)(object)item; if (currentTransaction == null) { connection = db.CreateConnection(); connection.Open(); } var transaction = (currentTransaction == null ? connection.BeginTransaction() : currentTransaction); try { var savecommand = db.GetStoredProcCommand(DBRoutine.SAVEORDERHEADER); db.AddInParameter(savecommand, "DocumentNo", System.Data.DbType.String, orderheader.DocumentNo); db.AddInParameter(savecommand, "DocumentDate", System.Data.DbType.DateTime, orderheader.DocumentDate); db.AddInParameter(savecommand, "CustomerCode", System.Data.DbType.String, orderheader.CustomerCode ?? ""); db.AddInParameter(savecommand, "BranchID", System.Data.DbType.Int16, orderheader.BranchID); db.AddInParameter(savecommand, "OrderType", System.Data.DbType.String, orderheader.OrderType); db.AddInParameter(savecommand, "PaymentType", System.Data.DbType.String, orderheader.PaymentType); db.AddInParameter(savecommand, "Status", System.Data.DbType.Boolean, orderheader.Status); db.AddInParameter(savecommand, "TotalAmount", System.Data.DbType.Decimal, orderheader.TotalAmount); db.AddInParameter(savecommand, "DiscountAmount", System.Data.DbType.Decimal, orderheader.DiscountAmount); db.AddInParameter(savecommand, "PaymentAmount", System.Data.DbType.Decimal, orderheader.PaymentAmount); db.AddInParameter(savecommand, "IsVAT", System.Data.DbType.Boolean, orderheader.IsVAT); db.AddInParameter(savecommand, "TaxAmount", System.Data.DbType.Decimal, orderheader.TaxAmount); db.AddInParameter(savecommand, "IsWHTax", System.Data.DbType.Boolean, orderheader.IsWHTax); db.AddInParameter(savecommand, "WithHoldingAmount", System.Data.DbType.Decimal, orderheader.WithHoldingAmount); db.AddInParameter(savecommand, "NetAmount", System.Data.DbType.Decimal, orderheader.NetAmount); db.AddInParameter(savecommand, "CreatedBy", System.Data.DbType.String, orderheader.CreatedBy); db.AddInParameter(savecommand, "ModifiedBy", System.Data.DbType.String, orderheader.ModifiedBy); db.AddOutParameter(savecommand, "NewDocumentNo", System.Data.DbType.String, 25); result = db.ExecuteNonQuery(savecommand, transaction); if (result > 0) { var orderdetailsDAL = new OrderDetailsDAL(); // Get the New DocumentNo No. orderheader.DocumentNo = savecommand.Parameters["@NewDocumentNo"].Value.ToString(); short itr = 1; orderheader.OrderDetails.ForEach(dt => { dt.ItemNo = itr++; dt.DocumentNo = orderheader.DocumentNo; dt.CreatedBy = orderheader.CreatedBy; dt.ModifiedBy = orderheader.ModifiedBy; dt.Status = true; dt.DiscountType = dt.DiscountType == null ? "" : dt.DiscountType; dt.SellPrice = decimal.Multiply(dt.SellRate, dt.Quantity); } ); result = Convert.ToInt16(orderdetailsDAL.Delete(orderheader.DocumentNo, transaction)); result = orderdetailsDAL.SaveList(orderheader.OrderDetails, transaction) == true ? 1 : 0; #region GENERATE AR INVOICE //-------------------------------------- ***** GENERATE AR-INVOICE ***** --------------------------------------------------------// if (result > 0) { var arHeader = new POSAccount.Contract.ARInvoice(); List <POSAccount.Contract.ARInvoiceDetail> lstARInvoiceItems = new List <POSAccount.Contract.ARInvoiceDetail>(); List <POSAccount.Contract.GLTransaction> lsgGLtransactionItems = new List <POSAccount.Contract.GLTransaction>(); foreach (var dt in orderheader.OrderDetails) { POSAccount.Contract.ChargeCodeMaster chargeCodeItem = (POSAccount.Contract.ChargeCodeMaster) new POSAccount.DataFactory.ChargeCodeDAL().GetItem <POSAccount.Contract.ChargeCodeMaster>(new POSAccount.Contract.ChargeCodeMaster { ChargeCode = dt.ChargeCode }); var mappingAccountCode = ""; var creditdebit = ""; if (chargeCodeItem != null) { mappingAccountCode = chargeCodeItem.AccountCode; if (mappingAccountCode.Length > 0) { creditdebit = new POSAccount.DataFactory.ChartOfAccountDAL().GetList(orderheader.BranchID).Where(x => x.AccountCode == mappingAccountCode).FirstOrDefault().DebitCredit; } } /*TODO: * * 1. if the order hearder got the WHtax and VAT ticked, then * automatically add the 2 rows to the GLTransaction table (list) below. * * */ lstARInvoiceItems.Add(new ARInvoiceDetail { DocumentNo = "", AccountCode = mappingAccountCode, AccountCodeDescription = "", BaseAmount = dt.SellPrice, ChargeCode = dt.ChargeCode, ChargeCodeDescription = dt.ChargeDescription, CurrencyCode = "THB", Discount = dt.Discount, DiscountType = dt.DiscountType, ExchangeRate = Convert.ToDecimal(0.00), ItemNo = dt.ItemNo, LocalAmount = dt.SellPrice, LocalAmountWithTax = dt.SellPrice, OrderNo = dt.DocumentNo, Remark = orderheader.DocumentNo, TaxAmount = Convert.ToDecimal(0.00), TaxCode = "", CreatedBy = dt.CreatedBy, ModifiedBy = dt.ModifiedBy, }); lsgGLtransactionItems.Add(new GLTransaction { DocumentNo = "", AccountCode = mappingAccountCode, BaseAmount = dt.SellPrice, CurrencyCode = "THB", ExchangeRate = Convert.ToDecimal(0.00), ItemNo = dt.ItemNo, LocalAmount = dt.SellPrice, Remark = "", Status = true, Source = "AR", CreditorCode = orderheader.CustomerCode, DocumentDate = orderheader.DocumentDate, BankInSlipNo = "", AccountDate = orderheader.DocumentDate, DocumentType = "REC", BranchID = orderheader.BranchID, Amount = orderheader.NetAmount, CreditAmount = orderheader.NetAmount, DebitAmount = 0, BankStatementPgNo = 0, BankStatementTotalPgNo = 0, ChequeNo = "", DebitCredit = creditdebit, DetailRemark = "", Period = 0, }); } arHeader.DocumentNo = ""; arHeader.DocumentDate = orderheader.DocumentDate; arHeader.CreatedBy = orderheader.CreatedBy; arHeader.ModifiedBy = orderheader.ModifiedBy; arHeader.DebtorCode = orderheader.CustomerCode; arHeader.BranchID = orderheader.BranchID; arHeader.CreditTerm = ""; arHeader.CurrencyCode = "THB"; arHeader.ExchangeRate = Convert.ToDecimal(0.00); arHeader.BaseAmount = orderheader.TotalAmount; arHeader.TaxAmount = 0; arHeader.LocalAmount = orderheader.TotalAmount; arHeader.NetAmount = orderheader.NetAmount; arHeader.WHPercent = Convert.ToInt16(3); arHeader.IsWHTax = orderheader.IsWHTax; arHeader.IsVAT = orderheader.IsVAT; arHeader.WithHoldingAmount = orderheader.WithHoldingAmount; arHeader.TaxAmount = orderheader.TaxAmount; arHeader.DiscountAmount = orderheader.DiscountAmount; arHeader.IsCancel = false; arHeader.ReferenceNo = orderheader.DocumentNo; arHeader.Remark = ""; arHeader.Source = "ARINV"; arHeader.ARInvoiceDetails = lstARInvoiceItems; arHeader.GLTransactionDetails = lsgGLtransactionItems; result = new POSAccount.DataFactory.ARInvoiceDAL().Save(arHeader, transaction) == true ? 1 : 0; } //-------------------------------------- ***** END GENERATE AR-INVOICE ******--------------------------------------------------------// #endregion } if (result > 0) { transaction.Commit(); } else { transaction.Rollback(); } } catch (Exception) { if (currentTransaction == null) { transaction.Rollback(); } throw; } return(result > 0 ? true : false); }