public void NewCashSaleWithCash(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleCommand cmd =
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleCommand.Create(dbSetting);
BCE.AutoCount.Invoicing.Sales.CashSale.CashSale doc = cmd.AddNew();
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleDetail dtl;
//doc.DocNo = "CS-00011";
doc.DebtorCode = "300-C001";
doc.DocDate = DateTime.Today.Date;
//Enable 5 cents rounding in this document
//Ensure the "5 Cents Rounding Adjustment Account" is set to an account,
//in Tools | Options > G/L | G/L Posting...
doc.IsRoundAdj = true;
dtl = doc.AddDetail();
dtl.ItemCode = "FG00001";
dtl.Qty = 1;
dtl.UOM = "UNIT";
dtl.UnitPrice = 50.20M;
dtl.TaxType = "S-10";
dtl = doc.AddDetail();
dtl.ItemCode = "FG00002";
dtl.Qty = 10;
dtl.UOM = "UNIT";
dtl.UnitPrice = 60.20M;
dtl.Discount = "30%";
dtl.TaxType = "S-10";
//FinalTotal is the total after 5 cents rounding
MakeCashPayment(doc, doc.FinalTotal, dbSetting);
try
{
doc.Save();
BCE.Application.AppMessage.ShowMessage($"{doc.DocNo} is created.");
}
catch (Exception ex)
{
BCE.Application.AppMessage.ShowErrorMessage($"Failed to save Cash Sale.\n{ex.Message}");
}
}
//Create a Cash Payment for a Cash Sale
private void MakeCashPayment(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, decimal cashAmt, BCE.Data.DBSetting dbSetting)
{
//PaymentMode 1 indicate the payment in this Cash Sale is by Cash
cs.PaymentMode = 1;
cs.CashPayment = cashAmt;
cs.CCApprovalCode = DBNull.Value;
cs.CashSalePayment.ARPayment.ClearDetails();
cs.CashSalePayment = BCE.AutoCount.Invoicing.Sales.SalesPayment.Create(
cs.ReferPaymentDocKey, cs.DocKey,
BCE.AutoCount.Document.DocumentType.CashSale, dbSetting);
cs.CashSalePayment.DebtorCode = cs.DebtorCode;
cs.CashSalePayment.CurrencyCode = cs.CurrencyCode;
cs.CashSalePayment.DocDate = cs.DocDate;
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity payDtl = cs.CashSalePayment.ARPayment.NewDetail();
//"CASH" must be maintained
//in General Maintenance | Payment Method Maintenance
payDtl.PaymentMethod = "CASH";
payDtl.PaymentAmt = cashAmt;
if (cs.CashSalePayment.PaymentAmt > 0)
cs.ReferPaymentDocKey = cs.CashSalePayment.DocKey;
}