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;
}
Programmer:Cash Sale with Payment: Difference between revisions
Content added Content deleted
No edit summary |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
# NetTotal must not be negative amount |
# NetTotal must not be negative amount |
||
# Negative Quantity is allowed, if it does not violate the NetTotal rule. |
# Negative Quantity is allowed, if it does not violate the NetTotal rule. |
||
==Columns Specification== |
|||
===Master Table=== |
|||
{| class="wikitable mw-collapsible mw-collapsed" |
|||
!colspan=5|Columns Table |
|||
|- |
|||
! Column Name !! Data Type !! Size !! Mandatory !! Remark |
|||
|- |
|||
| DocNo || string || 20 || Yes || If apply system running number,<br/>do not assign or assign "<<New>>" |
|||
|- |
|||
| DocDate || DateTime || || Yes || '''Date only, without time'''<br/>Eg. DateTime.Today.Date |
|||
|- |
|||
| DebtorCode || string || 12 || Yes || |
|||
|- |
|||
| Description || string || 100 || No || |
|||
|- |
|||
| RefDocNo || string || 20 || No || |
|||
|- |
|||
| Remark1 || string || 40 || No || |
|||
|- |
|||
| Remark2 || string || 40 || No || |
|||
|- |
|||
| Remark3 || string || 40 || No || |
|||
|- |
|||
| Remark4 || string || 40 || No || |
|||
|- |
|||
| Note || string || Max || No || |
|||
|} |
|||
===Detail Table=== |
|||
{| class="wikitable mw-collapsible mw-collapsed" |
|||
!colspan=5|Columns Table |
|||
|- |
|||
! Column Name !! Data Type !! Size !! Mandatory !! Remark |
|||
|- |
|||
| ItemCode || string || 30 || No || Value must be maintained at Stock > [[Programmer:Stock Item|Item Maintenance]] |
|||
|- |
|||
| Location || string || 8 || No || Value must be maintained at Stock > Stock Location Maintenance |
|||
|- |
|||
| BatchNo || string || 20 || No || Value must be maintained at Stock > [[Programmer:Stock Item|Item Maintenance]] > Item Batch<br/>Requires enable "Item Batch No." module,<br/>and Item is controlled by BatchNo.<br/>Default: DBNull.Value |
|||
|- |
|||
| Description || string || 100 || No || |
|||
|- |
|||
| FurtherDescription || string || Max || No || |
|||
|} |
|||
===Payment Table=== |
|||
{| class="wikitable mw-collapsible mw-collapsed" |
|||
!colspan=5|Columns Table |
|||
|- |
|||
! Column Name !! Data Type !! Size !! Mandatory !! Remark |
|||
|- |
|||
| PaymentMethod || string || 20 || No || Value must be maintained in General Maintenance -> Payment Method Maintenance. |
|||
|- |
|||
| PaymentBy || string || 20 || No || |
|||
|- |
|||
| ChequeNo || string || 20 || No || |
|||
|- |
|||
| PaymentAmt || decimal || 18,4 || Yes || |
|||
|} |
|||
==References of AutoCount Accounting version 1.8, 1.9== |
==References of AutoCount Accounting version 1.8, 1.9== |
||
Line 94: | Line 154: | ||
<br/> |
<br/> |
||
==New Cash Sale with |
==New Cash Sale with Payments== |
||
{{DRAFT|In writing.}} |
|||
<tabber> |
<tabber> |
||
CASH= |
1. CASH= |
||
<syntaxhighlight lang="c#"> |
<syntaxhighlight lang="c#"> |
||
public void NewCashSaleWithCash(BCE.Data.DBSetting dbSetting) |
public void NewCashSaleWithCash(BCE.Data.DBSetting dbSetting) |
||
Line 143: | Line 202: | ||
} |
} |
||
} |
} |
||
</syntaxhighlight> |
|||
</tabber> |
|||
//Create a Cash Payment for a Cash Sale |
|||
<syntaxhighlight lang="c#"> |
|||
private void MakeCashPayment(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, decimal cashAmt, BCE.Data.DBSetting dbSetting) |
private void MakeCashPayment(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, decimal cashAmt, BCE.Data.DBSetting dbSetting) |
||
{ |
{ |
||
Line 167: | Line 223: | ||
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity payDtl = cs.CashSalePayment.ARPayment.NewDetail(); |
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity payDtl = cs.CashSalePayment.ARPayment.NewDetail(); |
||
//"CASH" must be maintained |
|||
payDtl.PaymentMethod = BCE.AutoCount.Invoicing.CommonFunction.GetFirstCashAccount(dbSetting); |
|||
//in General Maintenance | Payment Method Maintenance |
|||
payDtl.PaymentMethod = "CASH"; |
|||
payDtl.PaymentAmt = cashAmt; |
payDtl.PaymentAmt = cashAmt; |
||
Line 174: | Line 232: | ||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
|-| |
|||
2. Credit Card= |
|||
<syntaxhighlight lang="c#"> |
|||
public void NewCashSaleWithCreditCard(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"; |
|||
MakeCreditCardPayment(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}"); |
|||
} |
|||
} |
|||
private void MakeCreditCardPayment(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, decimal cardAmt, BCE.Data.DBSetting dbSetting) |
|||
{ |
|||
//PaymentMode 2 indicate the payment with Card |
|||
//or similar payment mode that requires "Approval Code" and "Card No". |
|||
cs.PaymentMode = 2; |
|||
cs.CashPayment = 0M; |
|||
cs.CCApprovalCode = "ABC0100123"; |
|||
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(); |
|||
//"MASTER" must be maintained |
|||
//in General Maintenance | Payment Method Maintenance |
|||
payDtl.PaymentMethod = "MASTER"; |
|||
payDtl.ChequeNo = "12XXXX-YYY-ZZZ-1234"; |
|||
payDtl.PaymentAmt = cardAmt; |
|||
if (cs.CashSalePayment.PaymentAmt > 0) |
|||
cs.ReferPaymentDocKey = cs.CashSalePayment.DocKey; |
|||
} |
|||
</syntaxhighlight> |
|||
|-| |
|||
3. Multi Payment= |
|||
<syntaxhighlight lang="c#"> |
|||
class PaymentInfo |
|||
{ |
|||
public string PaymentMethod { get; set; } |
|||
public string ChequeNo { get; set; } |
|||
public decimal Amount { get; set; } |
|||
} |
|||
public void NewCashSaleWithMultiPayments(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; |
|||
List<PaymentInfo> payments = new List<PaymentInfo>(); |
|||
//doc.DocNo = "CS-00011"; |
|||
doc.DebtorCode = "300-C001"; |
|||
doc.DocDate = DateTime.Today.Date; |
|||
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"; |
|||
//Create payments with collection of PaymentInfo |
|||
payments.AddRange(new PaymentInfo[] { |
|||
new PaymentInfo() |
|||
{ |
|||
PaymentMethod = "CASH", |
|||
Amount = 18M |
|||
}, |
|||
new PaymentInfo() |
|||
{ |
|||
PaymentMethod = "MASTER", |
|||
ChequeNo = "MB1839232", |
|||
Amount = 500.75M |
|||
} |
|||
}); |
|||
MakeMultiPayments(doc, payments, 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}"); |
|||
} |
|||
} |
|||
private void MakeMultiPayments(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, List<PaymentInfo> payments, BCE.Data.DBSetting dbSetting) |
|||
{ |
|||
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity payDtl; |
|||
//PaymentMode 3 indicate the cash sale is paid by more than one type of payments. |
|||
cs.PaymentMode = 3; |
|||
//cs.CashPayment = 0M; |
|||
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; |
|||
payments.ForEach(p => |
|||
{ |
|||
payDtl = cs.CashSalePayment.ARPayment.NewDetail(); |
|||
payDtl.PaymentMethod = p.PaymentMethod; |
|||
payDtl.ChequeNo = p.ChequeNo; |
|||
payDtl.PaymentAmt = p.Amount; |
|||
}); |
|||
if (cs.CashSalePayment.PaymentAmt > 0) |
|||
cs.ReferPaymentDocKey = cs.CashSalePayment.DocKey; |
|||
} |
|||
</syntaxhighlight> |
|||
</tabber> |
|||
<br/> |
|||
*Use method '''GetFirstCashAccount(BCE.Data.DBSetting)''' can retrieve the first row of the payment type that is Cash. |
|||
<syntaxhighlight lang="c#"> |
|||
//Get the first row payment type that is "CASH" |
|||
//Must have a Payment Method's "Payment Type" that is "CASH" |
|||
//in General Maintenance | Payment Method Maintenance |
|||
payDtl.PaymentMethod = BCE.AutoCount.Invoicing.CommonFunction.GetFirstCashAccount(dbSetting); |
|||
</syntaxhighlight> |
|||
Latest revision as of 01:43, 4 April 2019
Technical Specification
- NetTotal must not be negative amount
- Negative Quantity is allowed, if it does not violate the NetTotal rule.
Columns Specification
Master Table
Columns Table | ||||
---|---|---|---|---|
Column Name | Data Type | Size | Mandatory | Remark |
DocNo | string | 20 | Yes | If apply system running number, do not assign or assign "<<New>>" |
DocDate | DateTime | Yes | Date only, without time Eg. DateTime.Today.Date | |
DebtorCode | string | 12 | Yes | |
Description | string | 100 | No | |
RefDocNo | string | 20 | No | |
Remark1 | string | 40 | No | |
Remark2 | string | 40 | No | |
Remark3 | string | 40 | No | |
Remark4 | string | 40 | No | |
Note | string | Max | No |
Detail Table
Columns Table | ||||
---|---|---|---|---|
Column Name | Data Type | Size | Mandatory | Remark |
ItemCode | string | 30 | No | Value must be maintained at Stock > Item Maintenance |
Location | string | 8 | No | Value must be maintained at Stock > Stock Location Maintenance |
BatchNo | string | 20 | No | Value must be maintained at Stock > Item Maintenance > Item Batch Requires enable "Item Batch No." module, and Item is controlled by BatchNo. Default: DBNull.Value |
Description | string | 100 | No | |
FurtherDescription | string | Max | No |
Payment Table
Columns Table | ||||
---|---|---|---|---|
Column Name | Data Type | Size | Mandatory | Remark |
PaymentMethod | string | 20 | No | Value must be maintained in General Maintenance -> Payment Method Maintenance. |
PaymentBy | string | 20 | No | |
ChequeNo | string | 20 | No | |
PaymentAmt | decimal | 18,4 | Yes |
References of AutoCount Accounting version 1.8, 1.9
BCE.AutoCount.dll BCE.AutoCount.CommonAccounting.dll BCE.AutoCount.MainEntry.dll BCE.Utils.dll BCE.Utils.UI.dll BCE.AutoCount.Invoicing.dll BCE.AutoCount.Invoicing.Sales.dll
Cash Sale API Usage
New
public void NewCashSale(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.DebtorCode = "300-C001";
doc.DocNo = "CS-00011";
doc.DocDate = DateTime.Today.Date;
dtl = doc.AddDetail();
dtl.ItemCode = "FG00001";
dtl.Qty = 1;
dtl.UOM = "UNIT";
dtl.UnitPrice = 50.20M;
dtl = doc.AddDetail();
dtl.ItemCode = "FG00002";
dtl.Qty = 10;
dtl.UOM = "UNIT";
dtl.UnitPrice = 60.20M;
dtl.Discount = "30%";
doc.Save();
}
Edit
public void EditCashSale(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.Edit("CS-00011");
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleDetail dtl;
if (doc != null)
{
doc.ClearDetails();
dtl = doc.AddDetail();
dtl.ItemCode = "FG00001";
dtl.Qty = 1;
dtl.UOM = "UNIT";
dtl.UnitPrice = 50.20M;
dtl = doc.AddDetail();
dtl.ItemCode = "FG00003";
dtl.Qty = 10;
dtl.UOM = "UNIT";
dtl.UnitPrice = 6.30M;
dtl.Discount = "30%";
doc.Save();
}
}
Cancel
public void CancelCashSale(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleCommand cmd =
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleCommand.Create(dbSetting);
cmd.CancelDocument("CS-00011", BCE.AutoCount.Authentication
.UserAuthentication.GetOrCreate(dbSetting).LoginUserID);
}
Delete
public void DeleteCashSale(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleCommand cmd =
BCE.AutoCount.Invoicing.Sales.CashSale.CashSaleCommand.Create(dbSetting);
cmd.Delete("CS-00011");
}
New Cash Sale with Payments
public void NewCashSaleWithCreditCard(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";
MakeCreditCardPayment(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}");
}
}
private void MakeCreditCardPayment(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, decimal cardAmt, BCE.Data.DBSetting dbSetting)
{
//PaymentMode 2 indicate the payment with Card
//or similar payment mode that requires "Approval Code" and "Card No".
cs.PaymentMode = 2;
cs.CashPayment = 0M;
cs.CCApprovalCode = "ABC0100123";
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();
//"MASTER" must be maintained
//in General Maintenance | Payment Method Maintenance
payDtl.PaymentMethod = "MASTER";
payDtl.ChequeNo = "12XXXX-YYY-ZZZ-1234";
payDtl.PaymentAmt = cardAmt;
if (cs.CashSalePayment.PaymentAmt > 0)
cs.ReferPaymentDocKey = cs.CashSalePayment.DocKey;
}
class PaymentInfo
{
public string PaymentMethod { get; set; }
public string ChequeNo { get; set; }
public decimal Amount { get; set; }
}
public void NewCashSaleWithMultiPayments(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;
List<PaymentInfo> payments = new List<PaymentInfo>();
//doc.DocNo = "CS-00011";
doc.DebtorCode = "300-C001";
doc.DocDate = DateTime.Today.Date;
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";
//Create payments with collection of PaymentInfo
payments.AddRange(new PaymentInfo[] {
new PaymentInfo()
{
PaymentMethod = "CASH",
Amount = 18M
},
new PaymentInfo()
{
PaymentMethod = "MASTER",
ChequeNo = "MB1839232",
Amount = 500.75M
}
});
MakeMultiPayments(doc, payments, 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}");
}
}
private void MakeMultiPayments(BCE.AutoCount.Invoicing.Sales.CashSale.CashSale cs, List<PaymentInfo> payments, BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity payDtl;
//PaymentMode 3 indicate the cash sale is paid by more than one type of payments.
cs.PaymentMode = 3;
//cs.CashPayment = 0M;
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;
payments.ForEach(p =>
{
payDtl = cs.CashSalePayment.ARPayment.NewDetail();
payDtl.PaymentMethod = p.PaymentMethod;
payDtl.ChequeNo = p.ChequeNo;
payDtl.PaymentAmt = p.Amount;
});
if (cs.CashSalePayment.PaymentAmt > 0)
cs.ReferPaymentDocKey = cs.CashSalePayment.DocKey;
}
- Use method GetFirstCashAccount(BCE.Data.DBSetting) can retrieve the first row of the payment type that is Cash.
//Get the first row payment type that is "CASH"
//Must have a Payment Method's "Payment Type" that is "CASH"
//in General Maintenance | Payment Method Maintenance
payDtl.PaymentMethod = BCE.AutoCount.Invoicing.CommonFunction.GetFirstCashAccount(dbSetting);
See Also
- Programmer:Quotation
- Programmer:Sales Order
- Programmer:Delivery Order
- Programmer:Sales Invoice
- Programmer:Cash Sale with Payment
Go to top
|
Resources For AutoCount Software Developers
|