AR Invoice: Difference between revisions
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 |
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. |
BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDataAccess cmd = |
||
BCE.AutoCount.ARAP. |
BCE.AutoCount.ARAP.ARInvoice.ARInvoiceDataAccess.Create(dbSetting); |
||
⚫ | |||
BCE.AutoCount.ARAP.ARInvoice.ARInvoiceEntity doc = cmd.NewARInvoice(); |
|||
//if this AP Invoice has been knockoff(offset) with payment or credit note, |
|||
⚫ | |||
//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. |
doc.DebtorCode = source.CustomerCode; |
||
doc. |
doc.Description = source.Description; |
||
doc. |
doc.CurrencyRate = source.CurrencyRate; |
||
doc. |
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 = |
doc.InclusiveTax = source.Inclusive; |
||
foreach (ARInvoiceDetail ivDtl in source.Details) |
|||
doc.ClearDetails(); |
|||
{ |
|||
⚫ | |||
⚫ | |||
//Add two lines of detail |
|||
dtl = |
dtl.Description = ivDtl.Description; |
||
dtl. |
dtl.ProjNo = ivDtl.Project; |
||
dtl. |
dtl.DeptNo = ivDtl.Department; |
||
dtl. |
dtl.TaxType = ivDtl.GSTCode; |
||
dtl.Amount = |
dtl.Amount = ivDtl.Amount ?? 0; |
||
dtl.TaxAdjustment = ivDtl.GSTAdjustment; |
|||
} |
|||
⚫ | |||
⚫ | |||
dtl.Description = "Process Cost"; |
|||
dtl.ProjNo = DBNull.Value; |
|||
dtl.Amount = 150.00M; |
|||
try |
try |
||
{ |
{ |
||
cmd. |
cmd.SaveARInvoice(doc, userID); |
||
//log success |
//log success |
||
// |
//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 |
||
// |
//AutoCount.AppMessage.ShowMessage(ex.Message); |
||
} |
} |
||
} |
} |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
===Classes of Source=== |
===Classes of Source=== |
Revision as of 09:20, 28 May 2018
Rules in ARInvoice
- AccNo (Sales A/C) cannot be empty or null.
- AccNo (Purchase A/C) cannot be Creditor Account No.
- NetTotal cannot be in negative value.
- 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.
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);
}
Go to top
|
Resources For AutoCount Software Developers
|