2,743
edits
mNo edit summary |
No edit summary |
||
(24 intermediate revisions by the same user not shown) | |||
Line 1:
==Technical Specification==
# Payment '''Knockoff Date''' must be equal or greater than the '''Payment Date'''.
# Payment net total must be greater than 0.
# Payment net total must be the sum of Payment Amount in '''Payment Detail'''
Line 9 ⟶ 6:
# '''Payment Method''' is created in ''General Maintenance | '''Payment Method Maintenance'''''.
==
{{BaseReferenceAC18}}
'''BCE.AutoCount.ARAP.dll'''
==AR Payment API Usage==
Line 24 ⟶ 15:
public void NewARPayment(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess
BCE.AutoCount.ARAP.ARPayment.ARPaymentEntity
//If you want to set your own Payment Voucher number, uncomment doc.DocNo, otherwise, the system will use running number.
doc.DebtorCode = "300-A001";
// Add one payment detail
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity
//Knockoff Invoice
//doc.KnockOff(BCE.AutoCount.Document.DocumentType.ARInvoice, "IV-0001", 100);
try
{
cmd.SaveARPayment(doc, BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID);
BCE.Application.AppMessage.ShowMessage($"Success: {doc.DocNo}");
}
catch (BCE.Application.AppException ex)
{
BCE.Application.AppMessage.ShowMessage(ex.Message);
}
}
</syntaxhighlight>
Line 43 ⟶ 46:
public void EditARPayment(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess
BCE.AutoCount.ARAP.ARPayment.ARPaymentEntity
//Then exit this function
if (doc == null)
return;
BCE.AutoCount.ARAP.ARPayment.ARPaymentDTLEntity
}
</syntaxhighlight>
===Cancel===
<syntaxhighlight lang="csharp">
private void CancelARPayment(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess cmd = BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess.Create(dbSetting);
cmd.CancelARPayment("RC-0001", BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID);
}
</syntaxhighlight>
===Delete===
<syntaxhighlight lang="csharp">
private void DeleteARPayment(BCE.Data.DBSetting dbSetting)
{
BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess cmd = BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess.Create(dbSetting);
cmd.DeleteARPayment("RC-0001", BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID);
}
</syntaxhighlight>
===
<syntaxhighlight lang="csharp">
doc.KnockOff(knockoff.DocType, knockoff.DocNo, knockoff.Amount, knockoff.Date.Value);
</syntaxhighlight>
See [[AR Received Payment#Create New ARPayment|Example of ARPayment Knockoff]]
<br /><br />
==Sample Code with Data for Testing==
This sample code provides the example of creating new AR Payment with tested data.
===Source Data
'''Source Data''' is
The Source
You may either create your own data source
<syntaxhighlight lang="csharp">
Line 80 ⟶ 104:
public string Description { get; set; }
public string DepositMethod { get; set; }
//PaymentCurrencyCode will be the currency code of Debtor's Account.
//Need to define only when PaymentCurrencyCode is different from Debtor's Account Currency
public string PaymentCurrencyCode { get; set; }
//Require PaymentToHomeCurrencyRate,
//when PaymentCurrencyCode is in Foreign Currency
public decimal? PaymentToHomeCurrencyRate { get; set; }
//Require PaymentToDebtorCurrencyRate,
//when PaymentCurrencyCode is different from Debtor CurrencyCode
public decimal? PaymentToDebtorCurrencyRate { get; set; }
public string Project { get; set; }
public string Department { get; set; }
Line 104 ⟶ 133:
public string BankChargeBillNoForGst { get; set; }
public string PaymentBy { get; set; }
//If this cheque is returned/bounced cheque
//Set the returned/bounced date. Otherwise it is null
Line 139 ⟶ 169:
//Get the login user id
string userID = BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID;
//Create command object of ARPayment
BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess cmd =
BCE.AutoCount.ARAP.ARPayment.ARPaymentDataAccess.Create(dbSetting);
//Create a new ARPayment transaction
BCE.AutoCount.ARAP.ARPayment.ARPaymentEntity doc = cmd.NewARPayment();
Line 147 ⟶ 179:
//Assign value to master table
doc.DebtorCode = source.DebtorCode;
doc.DocNo = source.DocumentNo ?? doc.DocNo;
doc.DocNo2 = source.ReceiptNo2 ?? doc.DocNo2;
doc.DocDate = source.DocumentDate;
doc.CurrencyCode = source.PaymentCurrencyCode ?? doc.CurrencyCode;
Line 207 ⟶ 239:
</syntaxhighlight>
===Example of AR Payment in Home currency only===
====Test Data Result Screenshot====
[[File:ProgrammerNewARPayment1.PNG|link=]]
====Test Data====
<syntaxhighlight lang="csharp">
public void MainEntry(BCE.Data.DBSetting dbSetting)
{
ARPaymentSource source = new ARPaymentSource()
{
//Home Currency Debtor, payment with home currency
DebtorCode = "300-A001",
Description = "Payment Received",
DocumentDate = new DateTime(2017, 12, 20),
};
source.PaymentDetail.Add(new ARPaymentDetailSource()
{
PaymentMethod = "BANK",
ChequeNo = "CHQ00012",
PaymentAmount = 100,
BankCharge = 0.50M
});
//Document type is required for document knockoff
source.PaymentKnockoff.Add(new PaymentKnockoffSource()
{
DocType = PaymentKnockoffSource.ARInvoiceDocType,
DocNo = "I-000002",
Amount = 70
});
source.PaymentKnockoff.Add(new PaymentKnockoffSource()
{
DocType = PaymentKnockoffSource.ARInvoiceDocType,
DocNo = "I-000003",
Amount = 30
});
//Create New ARPayment in AutoCount Accounting
NewARPayment(source, dbSetting);
}
</syntaxhighlight>
----
===Example of Foreign Customer and payment in customer currency===
====Test Data Result Screenshot====
[[File:ProgrammerNewARPayment2.PNG|link=]]<br/>
A payment of SGD100.00 knockoff 2 outstanding invoices, which both invoices currency rate is 3.2.
[[File:ProgrammerNewARPayment3.PNG|link=]]<br />
AutoCount Accounting auto generate Loss in foreign currency transaction.<br />
This is because the currency rate when invoice was issued is 3.2, whereas the payment currency rate is 3.1.
====Test Data====
<syntaxhighlight lang="csharp">
public void MainEntry(BCE.Data.DBSetting dbSetting)
{
ARPaymentSource source = new ARPaymentSource()
{
//Singapore customer, payment in Singapore Dollar
DebtorCode = "300-S001",
Description = "Payment Received - Test Data",
DocumentDate = new DateTime(2017, 12, 21),
//If Payment Currency is same as Debtor Currency,
//"PaymentCurrencyCode" can be excluded
PaymentCurrencyCode = "SGD",
PaymentToHomeCurrencyRate = 3.1M,
};
source.PaymentDetail.Add(new ARPaymentDetailSource()
{
PaymentMethod = "BANK",
ChequeNo = "SGB0009",
PaymentAmount = 100, //Currency in SGD
});
//Document type is required for document knockoff
source.PaymentKnockoff.Add(new PaymentKnockoffSource()
{
DocType = PaymentKnockoffSource.ARInvoiceDocType,
DocNo = "I-000017",
Amount = 70
});
source.PaymentKnockoff.Add(new PaymentKnockoffSource()
{
DocType = PaymentKnockoffSource.ARInvoiceDocType,
DocNo = "I-000018",
Amount = 30
});
NewARPayment(source, dbSetting);
}
</syntaxhighlight>
<br />
{{SeeAlsoAPIAccount}}
[[Category:Programmer]]
[[Category:API]]
[[Category:Integrate]]
[[Category:Plug-In]]
{{NavigateDeveloper}}
|