Difference between revisions of "AR Deposit"

From AutoCount Resource Center
Jump to navigation Jump to search
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{NavigateDeveloper}}
+
==Technical Specification==
===Rules in AR Deposit===
+
# '''Deposit Payment Method''' must be a payment method that is created as type of "Deposit" Account in '''GL''' | '''Account Maintenance'''.
# DepositPaymentMethod must be a payment method that is link to an Account that is created as type of "Deposit" Account.
 
 
 
===Assemblies version 1.8===
 
<pre>
 
BCE.AutoCount.ARAP.dll
 
</pre>
 
  
 +
<br />
 +
==Assemblies version 1.8, 1.9==
 +
{{BaseReferenceAC18}}
 +
'''BCE.AutoCount.ARAP.dll'''
 +
<br />
 +
==Sample with data model==
 
===Create new AR Deposit===
 
===Create new AR Deposit===
 
<syntaxhighlight lang="csharp">
 
<syntaxhighlight lang="csharp">
Line 38: Line 38:
 
     doc.DeptNo = source.Department;
 
     doc.DeptNo = source.Department;
  
     source.Detail.ForEach(s => AddARDepositDetail(s, doc.AddDetail));
+
     source.PaymentDetail.ForEach(s => AddARDepositDetail(s, doc.AddDetail));
  
 
     try
 
     try
Line 93: Line 93:
 
     BCE.AutoCount.XtraUtils.LookupEditBuilder.DepositPaymentMethodLookupEditBuilder depositBuilder =
 
     BCE.AutoCount.XtraUtils.LookupEditBuilder.DepositPaymentMethodLookupEditBuilder depositBuilder =
 
         new BCE.AutoCount.XtraUtils.LookupEditBuilder.DepositPaymentMethodLookupEditBuilder();
 
         new BCE.AutoCount.XtraUtils.LookupEditBuilder.DepositPaymentMethodLookupEditBuilder();
 +
 
     //The return table contains of 3 columns: (1) PaymentMethod, (2) BankAccount, (3) CurrencyCode (in version 1.8.28.184)
 
     //The return table contains of 3 columns: (1) PaymentMethod, (2) BankAccount, (3) CurrencyCode (in version 1.8.28.184)
 
     return depositBuilder.BuildDataTable(dbSetting);
 
     return depositBuilder.BuildDataTable(dbSetting);
Line 98: Line 99:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
+
===Classes of Source (data model)===
===Classes of Source===
 
 
<syntaxhighlight lang="csharp">
 
<syntaxhighlight lang="csharp">
 
public class ARDepositSource
 
public class ARDepositSource
Line 107: Line 107:
 
     public string Description { get; set; }
 
     public string Description { get; set; }
 
     public string DepositMethod { get; set; }
 
     public string DepositMethod { get; set; }
    /// <summary>
+
 
     /// Currency Code that is used to pay the deposit
+
     //Currency Code that is used to pay the deposit
    /// </summary>
 
 
     public string CurrencyCode { get; set; }
 
     public string CurrencyCode { get; set; }
 
     public string CustomerAccount { get; set; }
 
     public string CustomerAccount { get; set; }
Line 118: Line 117:
 
     public string Project { get; set; }
 
     public string Project { get; set; }
 
     public string Department { get; set; }
 
     public string Department { get; set; }
    /// <summary>
+
 
     /// IsSecurityDeposit is to decide whether this deposit is subject to GST
+
     //IsSecurityDeposit is to decide whether this deposit is subject to GST
     /// </summary>
+
     //true: not subject to GST and is meant to be refund
 +
    //false: subject to GST and is considered as "Advance Payment"
 
     public bool IsSecurityDeposit { get; set; }
 
     public bool IsSecurityDeposit { get; set; }
  
     public List<ARDepositDetailSource> Detail = new List<ARDepositDetailSource>();
+
     public List<ARDepositDetailSource> PaymentDetail = new List<ARDepositDetailSource>();
 
}
 
}
  
Line 135: Line 135:
 
     public string BankChargeBillNoForGst { get; set; }
 
     public string BankChargeBillNoForGst { get; set; }
 
     public string PaymentBy { get; set; }
 
     public string PaymentBy { get; set; }
    /// <summary>
+
 
     /// If this cheque is returned/bounced cheque
+
     //If this cheque is returned/bounced cheque
     /// Set the returned/bounced date. Otherwise it is null
+
     //Set the returned/bounced date. Otherwise it is null
    /// </summary>
 
 
     public DateTime? ReturnChequeDate { get; set; }
 
     public DateTime? ReturnChequeDate { get; set; }
 
}
 
}
Line 144: Line 143:
  
 
===Implementation===
 
===Implementation===
[[File:ProgrammerNewARDeposit1.PNG|link=]]
+
* Deposit without Debtor Code
 +
[[File:ProgrammerNewARDeposit1.PNG|link=]]<br />
 +
* Deposit with Debtor Code
 
[[File:ProgrammerNewARDeposit2.PNG|link=]]
 
[[File:ProgrammerNewARDeposit2.PNG|link=]]
 
<syntaxhighlight lang="csharp">
 
<syntaxhighlight lang="csharp">
Line 158: Line 159:
 
     };
 
     };
  
     newDoc.Detail.Add(new ARDepositDetailSource()
+
     newDoc.PaymentDetail.Add(new ARDepositDetailSource()
 
     {
 
     {
 
         PaymentMethod = "BANK",
 
         PaymentMethod = "BANK",
Line 179: Line 180:
 
     };
 
     };
  
     newDoc.Detail.Add(new ARDepositDetailSource()
+
     newDoc.PaymentDetail.Add(new ARDepositDetailSource()
 
     {
 
     {
 
         PaymentMethod = "BANK",
 
         PaymentMethod = "BANK",
Line 191: Line 192:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==See Also==
+
{{SeeAlsoAPIAccount}}
* [[AR Debtor]]
 
* [[AR Invoice]]
 
* [[AR Received Payment]]
 
* [[AR Debit Note]]
 
* [[AR Credit Note]]
 
* [[AR Refund]]
 
* [[AR Deposit]]
 
 
 
 
[[Category:Programmer]]
 
[[Category:Programmer]]
 
[[Category:API]]
 
[[Category:API]]
 
[[Category:Integrate]]
 
[[Category:Integrate]]
 
[[Category:Plug-In]]
 
[[Category:Plug-In]]
 +
{{NavigateDeveloper}}

Latest revision as of 07:28, 26 June 2018

Technical Specification

  1. Deposit Payment Method must be a payment method that is created as type of "Deposit" Account in GL | Account Maintenance.


Assemblies 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.ARAP.dll


Sample with data model

Create new AR Deposit

public void NewARDeposit(ARDepositSource source, BCE.Data.DBSetting dbSetting)
{
    BCE.AutoCount.ARAP.ARDeposit.ARDepositCommand cmd = BCE.AutoCount.ARAP.ARDeposit.ARDepositCommand.Create(dbSetting);
    BCE.AutoCount.ARAP.ARDeposit.ARDeposit doc = cmd.AddNew();

    if (IsValidDepositMethod(source.DepositMethod, dbSetting))
    {
        doc.DepositPaymentMethod = source.DepositMethod;
    }
    else
    {
        BCE.Application.AppMessage.ShowErrorMessage(string.Format("Invalid Deposit Payment Method of \"{0}\"", source.DepositMethod));
        //log error on Deposit Payment Method error
        return;
    }

    doc.DocNo = source.DocumentNo ?? doc.DocNo;
    doc.DocDate = source.DocumentDate;
    doc.Description = source.Description ?? doc.Description;
    doc.CurrencyCode = source.CurrencyCode ?? doc.CurrencyCode;
    doc.DebtorCode = source.CustomerAccount;
    doc.DebtorName = source.CustomerName;
    doc.Attention = source.Attention;
    doc.Phone1 = source.Phone;
    doc.Fax1 = source.Fax;
    doc.ProjNo = source.Project;
    doc.DeptNo = source.Department;

    source.PaymentDetail.ForEach(s => AddARDepositDetail(s, doc.AddDetail));

    try
    {
        doc.Save();
        BCE.Application.AppMessage.ShowMessage(string.Format("{0} is Created.", doc.DocNo));
        //Log Success created
    }
    catch (BCE.Application.AppException ex)
    {
        BCE.Application.AppMessage.ShowErrorMessage(ex.Message);
        //Log Error saving
    }
}

public void AddARDepositDetail(ARDepositDetailSource source , Func<BCE.AutoCount.ARAP.ARDeposit.ARDepositDetail> addDepositDetail)
{
    BCE.AutoCount.ARAP.ARDeposit.ARDepositDetail dtl = addDepositDetail();
    dtl.PaymentMethod = source.PaymentMethod;
    dtl.ChequeNo = source.ChequeNo;
    dtl.PaymentAmt = source.DepositAmount;
    dtl.BankCharge = source.BankCharge;
    dtl.BankChargeTaxType = source.BankChargeTaxCode;
    dtl.BankChargeTaxRefNo = source.BankChargeBillNoForGst;
    dtl.PaymentBy = source.PaymentBy;
            
    //Returned Cheque
    if (source.ReturnChequeDate.HasValue)
    {
        dtl.IsRCHQ = true;
        dtl.RCHQDate = source.ReturnChequeDate.Value;
    }
    else
    {
        dtl.IsRCHQ = false;
    }
}

Method to check the validity of (Deposit) Payment Method

private bool IsValidDepositMethod(string depositMethod, BCE.Data.DBSetting dbSetting)
{
    return GetDepositPaymentMethod(dbSetting).AsEnumerable()
        .Count(r => r.Field<string>("PaymentMethod") == depositMethod) > 0;
}

Get Deposit Payment Method Table with AutoCount Lookup Edit Builder

private DataTable GetDepositPaymentMethod(BCE.Data.DBSetting dbSetting)
{
    BCE.AutoCount.XtraUtils.LookupEditBuilder.DepositPaymentMethodLookupEditBuilder depositBuilder =
        new BCE.AutoCount.XtraUtils.LookupEditBuilder.DepositPaymentMethodLookupEditBuilder();

    //The return table contains of 3 columns: (1) PaymentMethod, (2) BankAccount, (3) CurrencyCode (in version 1.8.28.184)
    return depositBuilder.BuildDataTable(dbSetting);
}

Classes of Source (data model)

public class ARDepositSource
{
    public string DocumentNo { get; set; }
    public DateTime DocumentDate { get; set; } = DateTime.Today.Date;
    public string Description { get; set; }
    public string DepositMethod { get; set; }

    //Currency Code that is used to pay the deposit
    public string CurrencyCode { get; set; }
    public string CustomerAccount { get; set; }
    public string CustomerName { get; set; }
    public string Attention { get; set; }
    public string Phone { get; set; }
    public string Fax { get; set; }
    public string Project { get; set; }
    public string Department { get; set; }

    //IsSecurityDeposit is to decide whether this deposit is subject to GST
    //true: not subject to GST and is meant to be refund
    //false: subject to GST and is considered as "Advance Payment"
    public bool IsSecurityDeposit { get; set; }

    public List<ARDepositDetailSource> PaymentDetail = new List<ARDepositDetailSource>();
}

public class ARDepositDetailSource
{
    public string PaymentMethod { get; set; }
    public string ChequeNo { get; set; }
    public decimal DepositAmount { get; set; }
    public decimal BankCharge { get; set; }
    public string BankChargeTaxCode { get; set; }
    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
    public DateTime? ReturnChequeDate { get; set; }
}

Implementation

  • Deposit without Debtor Code

ProgrammerNewARDeposit1.PNG

  • Deposit with Debtor Code

ProgrammerNewARDeposit2.PNG

public void MainEntry(BCE.Data.DBSetting dbSetting)
{
    //Example of deposit without DebtorCode defined
    ARDepositSource newDoc = new ARDepositSource()
    {
        //DEPOSIT RECEIVED must be a Payment Method created for Deposit Account
        DepositMethod = "DEPOSIT RECEIVED",
        Description = "DEPOSIT",
        DocumentDate = new DateTime(2017, 11, 25)
    };

    newDoc.PaymentDetail.Add(new ARDepositDetailSource()
    {
        PaymentMethod = "BANK",
        ChequeNo = "CHQ00010",
        PaymentBy = "CHEQUE",
        DepositAmount = 500
    });

    NewARDeposit(newDoc, dbSetting);

    //Example of deposit with Debtor Code
    newDoc = new ARDepositSource()
    {
        //DEPOSIT RECEIVED must be a Payment Method created for Deposit Account
        DepositMethod = "DEPOSIT RECEIVED",
        CustomerAccount = "300-A001",
        Description = "DEPOSIT",
        DocumentDate = new DateTime(2017, 11, 26),
        Attention = "MR.Tan"
    };

    newDoc.PaymentDetail.Add(new ARDepositDetailSource()
    {
        PaymentMethod = "BANK",
        ChequeNo = "CHQ00010",
        PaymentBy = "CHEQUE",
        DepositAmount = 800
    });

    NewARDeposit(newDoc, dbSetting);
}

See Also

AutoCount Accounting Account API
AR AP
Transactions Version Transactions Version
AR Debtor (Customer) 1.8, 1.9
2.0
AP Creditor (Supplier) 1.8, 1.9
2.0
AR Invoice 1.8, 1.9
2.0
AP Invoice 1.8, 1.9
2.0
AR Received Payment 1.8, 1.9
2.0
AP Payment 1.8, 1.9
2.0
AR Debit Note 1.8, 1.9
2.0
AP Debit Note 1.8, 1.9
2.0
AR Credit Note 1.8, 1.9
2.0
AP Credit Note 1.8, 1.9
2.0
AR Refund 1.8, 1.9
2.0
AP Refund 1.8, 1.9
2.0
AR Deposit 1.8, 1.9
2.0
AP Deposit 1.8, 1.9
2.0
AR Deposit - Create New or Update
with Refund & Forfeit
1.8, 1.9
2.0
A/R and A/P Contra Entry 1.8, 1.9
2.0

Go to menu

IconAC81.png Go to top
ProgrammerGo.jpg Resources For AutoCount Software Developers