AR Invoice: Difference between revisions

From AutoCount Resource Center
Content added Content deleted
No edit summary
No edit summary
Line 13: Line 13:
===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.RoundingMethod = BCE.AutoCount.Document.DocumentRoundingMethod.LineByLine_Ver2;
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
//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===

Revision as of 09:20, 28 May 2018

Rules in ARInvoice

  1. AccNo (Sales A/C) cannot be empty or null.
  2. AccNo (Purchase A/C) cannot be 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.

References of AutoCount Accounting version 1.8

BCE.AutoCount.dll
BCE.AutoCount.CommonAccounting.dll
BCE.AutoCount.MainEntry.dll
BCE.Utils.dll
BCE.Utils.UI.dll
BCE.AutoCount.ARAP.dll



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);
}

Template:SeeAlsoAccount

Go to menu

Go to top
Resources For AutoCount Software Developers