Difference between revisions of "AR Deposit"

From AutoCount Resource Center
Jump to navigation Jump to search
m
Line 15: Line 15:
 
BCE.AutoCount.ARAP.ARDeposit.ARDeposit doc = cmd.AddNew();
 
BCE.AutoCount.ARAP.ARDeposit.ARDeposit doc = cmd.AddNew();
   
  +
if (IsValidDepositMethod(source.DepositMethod, dbSetting))
doc.DocNo = source.DocumentNo;
 
  +
{
  +
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.DocDate = source.DocumentDate;
doc.Description = source.Description;
+
doc.Description = source.Description ?? doc.Description;
doc.DepositPaymentMethod = source.DepositMethod;
+
doc.CurrencyCode = source.CurrencyCode ?? doc.CurrencyCode;
doc.CurrencyCode = source.CurrencyCode;
 
 
doc.DebtorCode = source.CustomerAccount;
 
doc.DebtorCode = source.CustomerAccount;
 
doc.DebtorName = source.CustomerName;
 
doc.DebtorName = source.CustomerName;
Line 34: Line 44:
 
doc.Save();
 
doc.Save();
 
BCE.Application.AppMessage.ShowMessage(string.Format("{0} is Created.", doc.DocNo));
 
BCE.Application.AppMessage.ShowMessage(string.Format("{0} is Created.", doc.DocNo));
  +
//Log Success created
 
}
 
}
 
catch (BCE.Application.AppException ex)
 
catch (BCE.Application.AppException ex)
 
{
 
{
 
BCE.Application.AppMessage.ShowErrorMessage(ex.Message);
 
BCE.Application.AppMessage.ShowErrorMessage(ex.Message);
  +
//Log Error saving
 
}
 
}
 
}
 
}
Line 65: Line 77:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
====Get Deposit Payment Method====
+
====Method to check the validity of (Deposit) Payment Method====
  +
<syntaxhighlight lang="csharp">
  +
private bool IsValidDepositMethod(string depositMethod, BCE.Data.DBSetting dbSetting)
  +
{
  +
return GetDepositPaymentMethod(dbSetting).AsEnumerable()
  +
.Count(r => r.Field<string>("PaymentMethod") == depositMethod) > 0;
  +
}
  +
</syntaxhighlight>
  +
  +
====Get Deposit Payment Method Table with AutoCount Lookup Edit Builder====
   
 
<syntaxhighlight lang="csharp">
 
<syntaxhighlight lang="csharp">
Line 72: 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)
 
 
return depositBuilder.BuildDataTable(dbSetting);
 
return depositBuilder.BuildDataTable(dbSetting);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
   
   
Line 124: Line 143:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
  +
===Implementation===
  +
[[File:ProgrammerNewARDeposit1.PNG|link=]]
  +
[[File:ProgrammerNewARDeposit2.PNG|link=]]
  +
<syntaxhighlight lang="csharp">
  +
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.Detail.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.Detail.Add(new ARDepositDetailSource()
  +
{
  +
PaymentMethod = "BANK",
  +
ChequeNo = "CHQ00010",
  +
PaymentBy = "CHEQUE",
  +
DepositAmount = 800
  +
});
  +
  +
NewARDeposit(newDoc, dbSetting);
  +
}
  +
</syntaxhighlight>
   
 
==See Also==
 
==See Also==

Revision as of 09:04, 18 December 2017

Go to menu

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


Rules in AR Deposit

Assemblies version 1.8

BCE.AutoCount.ARAP.dll

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.Detail.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

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; }
    /// <summary>
    /// Currency Code that is used to pay the deposit
    /// </summary>
    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; }
    /// <summary>
    /// IsSecurityDeposit is to decide whether this deposit is subject to GST
    /// </summary>
    public bool IsSecurityDeposit { get; set; }

    public List<ARDepositDetailSource> Detail = 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; }
    /// <summary>
    /// If this cheque is returned/bounced cheque
    /// Set the returned/bounced date. Otherwise it is null
    /// </summary>
    public DateTime? ReturnChequeDate { get; set; }
}

Implementation

ProgrammerNewARDeposit1.PNG 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.Detail.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.Detail.Add(new ARDepositDetailSource()
    {
        PaymentMethod = "BANK",
        ChequeNo = "CHQ00010",
        PaymentBy = "CHEQUE",
        DepositAmount = 800
    });

    NewARDeposit(newDoc, dbSetting);
}

See Also