AR Invoice: Difference between revisions

From AutoCount Resource Center
Content added Content deleted
No edit summary
mNo edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Technical Specification==
===Rules in ARInvoice===
# AccNo (Sales A/C) cannot be empty or null.
# AccNo (Sales A/C) cannot be empty or null.
# AccNo (Purchase A/C) cannot be Creditor Account No.
# AccNo (Sales A/C) cannot be Debtor or Creditor Account No.
# NetTotal cannot be in negative value.
# NetTotal cannot be in negative value.
# '''NetTotal''' is the sum of amount & GST from details, this field is '''ReadOnly'''.
# '''NetTotal''' is the sum of amount & GST from details, this field is '''ReadOnly'''.
# Total '''GST''' is the sum of GST & GST Adjustment from details, this field is '''ReadOnly'''.
# Total '''GST''' is the sum of GST & GST Adjustment from details, this field is '''ReadOnly'''.
# Do not set '''empty string''' to '''ProjNo''' and '''DeptNo''', when it is empty, set to '''DBNull.Value'''.


<br />
===References of AutoCount Accounting version 1.8===
==References of AutoCount Accounting version 1.8, 1.9==
{{BaseReferenceAC18}}
{{BaseReferenceAC18}}
'''BCE.AutoCount.ARAP.dll'''
'''BCE.AutoCount.ARAP.dll'''


<br /><br />
<br />
==Sample with data model==
===Create new AR Invoice===
===Create new AR Invoice===
<syntaxhighlight lang="csharp">
<syntaxhighlight lang="csharp">
public void EditAPInvoiceEntry(BCE.Data.DBSetting dbSetting)
public void NewARInvoiceEntry(BCE.Data.DBSetting dbSetting, ARInvoiceSource source)
{
{
string userID = BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID;
string userID = BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID;
BCE.AutoCount.ARAP.APInvoice.APInvoiceDataAccess cmd = BCE.AutoCount.ARAP.APInvoice.APInvoiceDataAccess.Create(dbSetting);
BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDataAccess cmd =
BCE.AutoCount.ARAP.APInvoice.APInvoiceEntity doc = cmd.GetAPInvoice("PI-000001");
BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDataAccess.Create(dbSetting);
BCE.AutoCount.ARAP.APInvoice.APInvoiceDTLEntity dtl = null;


BCE.AutoCount.ARAP.ARInvoice.ARInvoiceEntity doc = cmd.NewARInvoice();
//if this AP Invoice has been knockoff(offset) with payment or credit note,
BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDTLEntity dtl = null;
//Changing of CreditorCode is not allowed.
//Therefore, when such case arise, it is advised to issue Credit Note and issue a new AP Invoice
//doc.CreditorCode = "400-X001";


doc.Description = "Purchase Generated";
doc.DebtorCode = source.CustomerCode;
doc.DocDate = new DateTime(2018, 5, 28);
doc.Description = source.Description;
doc.PurchaseAgent = "TOM";
doc.CurrencyRate = source.CurrencyRate;
doc.JournalType = "PURCHASE";
doc.DocNo = source.Document;
doc.DocDate = source.Date;
doc.SalesAgent = source.SalesPerson;
doc.JournalType = source.JournalType;

//Set whether to apply rounding method of either by Document or by Each Line,
//this may affect different result in GST Calculation due to decimal point rounding.
doc.RoundingMethod = source.RoundMethod;


doc.RoundingMethod = BCE.AutoCount.Document.DocumentRoundingMethod.LineByLine_Ver2;
//Document Level Inclusive Tax
//Document Level Inclusive Tax
doc.InclusiveTax = true;
doc.InclusiveTax = source.Inclusive;


foreach (ARInvoiceDetail ivDtl in source.Details)
doc.ClearDetails();
{
dtl = doc.NewDetail();


dtl.AccNo = ivDtl.Account;
//Add two lines of detail
dtl = doc.NewDetail();
dtl.Description = ivDtl.Description;
dtl.AccNo = "700-1010";
dtl.ProjNo = ivDtl.Project;
dtl.Description = "Raw Material Metal";
dtl.DeptNo = ivDtl.Department;
dtl.ProjNo = DBNull.Value;
dtl.TaxType = ivDtl.GSTCode;
dtl.Amount = 1000.00M;
dtl.Amount = ivDtl.Amount ?? 0;
dtl.TaxAdjustment = ivDtl.GSTAdjustment;

}
dtl = doc.NewDetail();
dtl.AccNo = "700-1010";
dtl.Description = "Process Cost";
dtl.ProjNo = DBNull.Value;
dtl.Amount = 150.00M;


try
try
{
{
cmd.SaveAPInvoice(doc, userID);
cmd.SaveARInvoice(doc, userID);
//log success
//log success
//BCE.Application.AppMessage.ShowMessage(string.Format("{0} is created.", doc.DocNo));
//AutoCount.AppMessage.ShowMessage(string.Format("{0} is created.", doc.DocNo));
}
}
catch (BCE.Application.AppException ex)
catch (BCE.Application.AppException ex)
{
{
//log ex.Message
//log ex.Message
//BCE.Application.AppMessage.ShowMessage(ex.Message);
//AutoCount.AppMessage.ShowMessage(ex.Message);
}
}
}
}
</syntaxhighlight>
</syntaxhighlight>




===Classes of Source===
===Classes of Source===
Line 119: Line 121:
</syntaxhighlight>
</syntaxhighlight>


{{SeeAlsoAPIAccount}}
{{SeeAlsoAccount}}

[[Category:Programmer]]
[[Category:Programmer]]
[[Category:API]]
[[Category:API]]

Latest revision as of 07:28, 24 July 2018

Technical Specification

  1. AccNo (Sales A/C) cannot be empty or null.
  2. AccNo (Sales A/C) cannot be Debtor or Creditor Account No.
  3. NetTotal cannot be in negative value.
  4. NetTotal is the sum of amount & GST from details, this field is ReadOnly.
  5. Total GST is the sum of GST & GST Adjustment from details, this field is ReadOnly.
  6. Do not set empty string to ProjNo and DeptNo, when it is empty, set to DBNull.Value.


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


Sample with data model

Create new AR Invoice

public void NewARInvoiceEntry(BCE.Data.DBSetting dbSetting, ARInvoiceSource source)
{
    string userID = BCE.AutoCount.Authentication.UserAuthentication.GetOrCreate(dbSetting).LoginUserID;
    BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDataAccess cmd =
        BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDataAccess.Create(dbSetting);

    BCE.AutoCount.ARAP.ARInvoice.ARInvoiceEntity doc = cmd.NewARInvoice();
    BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDTLEntity dtl = null;

    doc.DebtorCode = source.CustomerCode;
    doc.Description = source.Description;
    doc.CurrencyRate = source.CurrencyRate;
    doc.DocNo = source.Document;
    doc.DocDate = source.Date;
    doc.SalesAgent = source.SalesPerson;
    doc.JournalType = source.JournalType;

    //Set whether to apply rounding method of either by Document or by Each Line,
    //this may affect different result in GST Calculation due to decimal point rounding.
    doc.RoundingMethod = source.RoundMethod;

    //Document Level Inclusive Tax
    doc.InclusiveTax = source.Inclusive;

    foreach (ARInvoiceDetail ivDtl in source.Details)
    {
        dtl = doc.NewDetail();

        dtl.AccNo = ivDtl.Account;
        dtl.Description = ivDtl.Description;
        dtl.ProjNo = ivDtl.Project;
        dtl.DeptNo = ivDtl.Department;
        dtl.TaxType = ivDtl.GSTCode;
        dtl.Amount = ivDtl.Amount ?? 0;
        dtl.TaxAdjustment = ivDtl.GSTAdjustment;
    }

    try
    {
        cmd.SaveARInvoice(doc, userID);
        //log success
        //AutoCount.AppMessage.ShowMessage(string.Format("{0} is created.", doc.DocNo));
    }
    catch (BCE.Application.AppException ex)
    {
        //log ex.Message
        //AutoCount.AppMessage.ShowMessage(ex.Message);
    }
}

Classes of Source

public class ARInvoiceSource
{
    public string CustomerCode { get; set; }
    public string Description { get; set; }
    public decimal CurrencyRate { get; set; } = 1;
    public string Document { get; set; }
    public DateTime Date { get; set; }
    public string SalesPerson { get; set; }
    public string JournalType { get; set; } = "SALES";
    public BCE.AutoCount.Document.DocumentRoundingMethod RoundMethod { get; set; } = 
        BCE.AutoCount.Document.DocumentRoundingMethod.LineByLine_Ver2;
    public bool Inclusive { get; set; } = false;
    public List<ARInvoiceDetail> Details { get; set; } = new List<ARInvoiceDetail>();
}

public class ARInvoiceDetail
{
    public string Account { get; set; }
    public string Description { get; set; }
    public string Project { get; set; }
    public string Department { get; set; }
    public decimal? Amount { get; set; }
    public string GSTCode { get; set; }
    public decimal GSTAdjustment { get; set; }
}

Implementation

public void MainEntry(BCE.Data.DBSetting dbSetting)
{
    ARInvoiceSource newDoc = new ARInvoiceSource()
    {
        CustomerCode = "300-A001",
        Description = "SALES GENERATED",
        Document = "<<New>>",
        Date = new DateTime(2017, 11, 27),
        Inclusive = true
    };

    newDoc.Details.Add(new ARInvoiceDetail(){ Account = "500-0000", Description = "APPLE IPHONE X", Amount = 5000, GSTCode = "SR-S" });
    newDoc.Details.Add(new ARInvoiceDetail(){ Account = "520-0000", Description = "Discount 10%",   Amount = -500, GSTCode = "SR-S" });
    //No error while the Account is empty, because the amount is zero;
    //Hence no posting to account is required.
    newDoc.Details.Add(new ARInvoiceDetail(){                       Description = "GIFT",           Amount = 0,    GSTCode = "SR-S" });
    newDoc.Details.Add(new ARInvoiceDetail(){ Account = "500-0000", Description = "FREE Screen Protector",         GSTCode = "SR-S" });

    NewARInvoiceEntry(dbSetting, newDoc);
}

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

Go to top
Resources For AutoCount Software Developers