SDK Live: Difference between revisions

From eStream Software
 
(57 intermediate revisions by the same user not shown)
Line 31: Line 31:
==Documentation==
==Documentation==
* [https://www.sql.com.my/document/SQLLink/SQLSDK.zip SQLSDK.zip]
* [https://www.sql.com.my/document/SQLLink/SQLSDK.zip SQLSDK.zip]
* [https://www.sql.com.my/document/SQLLink/Video-SDK.exe Video-SDK.exe]
* [https://download.sql.com.my/customer/Fairy/Steps-SDK.gif Steps-SDK.gif]


==Linking Flow==
==Linking Flow==
Line 44: Line 44:
:* The SDK can be build in in your system or a Standalone windows Application(Middle Application).
:* The SDK can be build in in your system or a Standalone windows Application(Middle Application).
:* If you build in your system then it can be sync anytime either by a special interface with parameter (eg Date From, Date To & etc) or each transaction after post(not recommended)
:* If you build in your system then it can be sync anytime either by a special interface with parameter (eg Date From, Date To & etc) or each transaction after post(not recommended)
:* If you create a Standalone windows Application(Middle Application) you can make use the windows schedule to sync or call from you system to execute/run the Standalone windows Application(Middle Application).
:* If you create a Standalone windows Application(Middle Application) you can make use the <span style="color:#0000ff">Windows Schedule</span> to sync or call from you system to execute/run the Standalone windows Application(Middle Application).


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
Line 91: Line 91:
* [[#JScript/JavaScript| JavaScript]]
* [[#JScript/JavaScript| JavaScript]]
* [[#Delphi| Delphi]]
* [[#Delphi| Delphi]]
[https://docs.google.com/spreadsheets/d/1dGUXIM0aWAG7xIyE1D1IsPmdq7paF9gpq3h0NqzFQDc/edit?usp=sharing Summary Document Flow by Programming Language]


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
Line 96: Line 98:
==Example External Program==
==Example External Program==
===VB. Net===
===VB. Net===
* Example [https://download.sql.com.my/customer/Fairy/VBDotNet.zip VBDotNet-20220614]
* Example [https://download.sql.com.my/customer/Fairy/VBDotNet.zip VBDotNet-20230819]


===C Sharp===
===C Sharp===
* Example [https://download.sql.com.my/customer/Fairy/CSharp.zip CSharp-20220614]
* Example [https://download.sql.com.my/customer/Fairy/CSharp.zip CSharp-20230819]


===Steps (C Sharp & VB.Net Only)===
===Steps (C Sharp & VB.Net Only)===
Line 156: Line 158:
:- Add GL Ledger RO
:- Add GL Ledger RO
:- AR Statement
:- AR Statement
:- Add Add/Edit AR PM
:- Add LogInOut (For Testing purpose)


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


===History - C Sharp & VB.Net===
===History - C Sharp & VB.Net===
:Coming soon...
:19 Aug 2023...
::- Add Add/Edit AR PM
::- Add Add/Edit AR PM
::- Add LogInOut (For Testing purpose)


:14 Jun 2022
:14 Jun 2022
Line 306: Line 311:
:- pypiwin32 (Mandatory) -> pip install pypiwin32
:- pypiwin32 (Mandatory) -> pip install pypiwin32
:- Pillow (Optional for Picture) -> pip install Pillow
:- Pillow (Optional for Picture) -> pip install Pillow
:- striprtf (Optional for Rich Text to Text) -> pip install striprtf


====Common====
====Common====
Line 315: Line 319:
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 24 Jul 2023
#Updated 03 Oct 2023
import win32com.client
import win32com.client
import Common
import Common
Line 341: Line 345:
                         "D:\\Happy\\DB\\Default.DCF",
                         "D:\\Happy\\DB\\Default.DCF",
                         #"C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                         #"C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                         "ACC-0024.FDB") #Database Name
                         "ACC-0015.FDB") #Database Name
     except Exception as e:
     except Exception as e:
         print("Oops !", e)
         print("Oops !", e)
Line 359: Line 363:
     else:
     else:
         print ("Record Not Found")
         print ("Record Not Found")
       
       
def QuotedStr(ACode):
    return "'" + ACode.replace("'", "''") + "'"
</syntaxhighlight>
</syntaxhighlight>
|}
|}
Line 731: Line 740:
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 19 Jul 2023
#Updated 02 Aug 2023
import os, sys
import os, sys
import Common
import Common
from io import BytesIO
from io import BytesIO
from PIL import Image
from PIL import Image


def GetData():
def GetData():
Line 746: Line 754:
     dt = Image.open(imgdata)
     dt = Image.open(imgdata)
     dt.save("test.jpg")
     dt.save("test.jpg")
     print ("Done Export out...")
     print ("Done Export Picture file...")
     #print (lDataSet.FindField('Picture').Value)
     #print (lDataSet.FindField('Picture').Value)
      
      
     rtf = lDataSet.FindField('Description3').AsString
     rtf = lDataSet.FindField('Description3').AsString
     print (rtf)
     print (rtf)
   
    with open('out.rtf', 'w') as output:
        output.write(rtf)
        output.close()
    print ("Done Export RTF file...")
   
     txt = ComServer.Utility.RichTextToPlainText(rtf)
     txt = ComServer.Utility.RichTextToPlainText(rtf)
     print (txt)
     print (txt)
Line 760: Line 774:
     GetData()
     GetData()
     ComServer.Logout()
     ComServer.Logout()
finally:
finally:  
     ComServer = None
     ComServer = None
     Common.KillApp()
     Common.KillApp()
Line 810: Line 824:
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 22 Jul 2023
#Updated 21 Dec 2023
import Common
import Common
        
        
Line 878: Line 892:
         lDtl.FindField("RefCost").AsFloat = 22.3
         lDtl.FindField("RefCost").AsFloat = 22.3
         lDtl.FindField("RefPrice").AsFloat = 52
         lDtl.FindField("RefPrice").AsFloat = 52
        lDtl.FindField("ISBASE").AsFloat = 1
         lDtl.Post();
         lDtl.Post();


Line 885: Line 900:
         lDtl.FindField("RefCost").AsFloat = 102.5
         lDtl.FindField("RefCost").AsFloat = 102.5
         lDtl.FindField("RefPrice").AsFloat = 260.45
         lDtl.FindField("RefPrice").AsFloat = 260.45
        lDtl.FindField("ISBASE").AsFloat = 0
         lDtl.Post()
         lDtl.Post()
      
      
Line 1,087: Line 1,103:
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 25 Jul 2023
#Updated 08 Jan 2024
import Common
import Common
import datetime
import datetime
Line 1,190: Line 1,206:
         #Delete all Detail
         #Delete all Detail
         while lDetail.RecordCount != 0:
         while lDetail.RecordCount != 0:
             lDetail.First()
             lDetail.Last()
             lDetail.Delete()
             lDetail.Delete()
              
              
Line 1,255: Line 1,271:
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 25 Jul 2023
#Updated 08 Jan 2024
import Common
import Common
import datetime
import datetime
Line 1,341: Line 1,357:
         #Delete all Detail
         #Delete all Detail
         while lDetail.RecordCount != 0:
         while lDetail.RecordCount != 0:
             lDetail.First()
             lDetail.Last()
             lDetail.Delete()
             lDetail.Delete()
              
              
Line 1,595: Line 1,611:
====Stock Adjustment====
====Stock Adjustment====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_SJ
! ST_AJ
|-
|-
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 25 Jul 2023
#Updated 08 Jan 2024
import Common
import Common
import datetime
import datetime
Line 1,663: Line 1,679:
         #Delete all Detail
         #Delete all Detail
         while lDetail.RecordCount != 0:
         while lDetail.RecordCount != 0:
             lDetail.First()
             lDetail.Last()
             lDetail.Delete()
             lDetail.Delete()
              
              
Line 1,718: Line 1,734:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Sales.PriceHistory.RO====
====Sales Order====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Sales.PriceHistory.RO Script
! Sales Order
|-
|-
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 01 Apr 2021
#Updated 08 Jan 2024
import win32com.client
import Common
import datetime
import datetime
     
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.CODE, A.COMPANYNAME, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AGENT, A.AREA, "
    lSQL = lSQL + "B.ITEMCODE, B.DESCRIPTION ITEMDESC, B.QTY, B.UOM, B.UNITPRICE, B.DISC,  "
    lSQL = lSQL + "B.TAX, B.TAXRATE, B.TAXAMT, B.TAXINCLUSIVE, B.AMOUNT "
    lSQL = lSQL + "FROM SL_SO A "
    lSQL = lSQL + "INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY) "
    lSQL = lSQL + "WHERE A.CODE='300-A0002' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
   
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
       
    Common.ShowResult(lDataSet)


ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
def PostData():
 
     BizObject = ComServer.BizObjects.Find("SL_SO")
def CheckLogin():
     lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
     B = ComServer.IsLogin
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    if B == True:
   
        ComServer.Logout()
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
     ComServer.Login("ADMIN", "ADMIN", #UserName, Password
     lDate.strftime('%m/%d/%Y')
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0081.FDB") #Database Name
 
def GetData():
     RptObject = ComServer.RptObjects.Find('Sales.PriceHistory.RO')
      
      
     #RptObject.Params.Find("AgentData").Value            = #Not use if AllAgent is true
     lDocKey = BizObject.FindKeyByRef("DocNo", "--SO Test--")
    #RptObject.Params.Find("TaxData").Value              = #Not use if AllTax is true
       
    #RptObject.Params.Find("CompanyCategoryData").Value  = #Not use if AllCompanyCategory is true
    if lDocKey is None:
    RptObject.Params.Find("AllAgent").Value              = True
        BizObject.New()
    RptObject.Params.Find("AllTax").Value                = True
        lMain.FindField("DocNo").AsString = "--SO Test--"
    RptObject.Params.Find("AllShipper").Value            = True
        lMain.FindField("DocDate").value = lDate
    RptObject.Params.Find("AllArea").Value              = True
        lMain.FindField("PostDate").value = lDate
    RptObject.Params.Find("AllCompany").Value            = True
        lMain.FindField("Code").AsString = "300-C0001" #Customer Account
    RptObject.Params.Find("AllDocProject").Value        = True
        lMain.FindField("CompanyName").AsString = "Cash Sales"
    RptObject.Params.Find("AllItem").Value              = False
        #lMain.FindField("Address1").AsString = "" #Optional
    RptObject.Params.Find("AllItemProject").Value        = True
        #lMain.FindField("Address2").AsString = "" #Optional
    RptObject.Params.Find("AllLocation").Value          = True
        #lMain.FindField("Address3").AsString = "" #Optional
    RptObject.Params.Find("AllCompanyCategory").Value    = True
        #lMain.FindField("Address4").AsString = "" #Optional
    RptObject.Params.Find("AllBatch").Value              = True
        #lMain.FindField("Phone1").AsString = ""  #Optional
    RptObject.Params.Find("AllTariff").Value            = True
        lMain.FindField("Description").AsString = "Sales Order"
    RptObject.Params.Find("AllStockGroup").Value        = True
 
    #RptObject.Params.Find("AreaData").Value            = #Not use if AllArea is true
        #Insert Data - Detail   
    #RptObject.Params.Find("CategoryData").Value        = #Not use if AllTax is true
        lDetail.Append()
    #RptObject.Params.Find("CategoryTpl").Value          = #Not use if AllTax is true
        lDetail.FindField("Seq").value = 1
    #RptObject.Params.Find("CompanyData").Value          = #Not use if AllTax is true
        lDetail.FindField("ItemCode").AsString = "ANT"
     
        lDetail.FindField("Description").AsString = "Sales Item B"
    lDateFrom = datetime.datetime(2021, 3, 1, 13, 0)
        lDetail.FindField("Qty").AsFloat = 2
    lDateFrom.strftime('%m/%d/%Y')
        lDetail.FindField("UOM").AsString = "UNIT"
    lDateTo = datetime.datetime(2021, 3, 31, 13, 0)
        #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
    lDateTo.strftime('%m/%d/%Y')
        lDetail.FindField("Tax").AsString = "SV"
        lDetail.FindField("TaxRate").AsString = "6%"
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 100
        lDetail.FindField("Amount").AsFloat = 200
        lDetail.FindField("TaxAmt").AsFloat = 12
        lDetail.Post()
      
      
     RptObject.Params.Find("DateFrom").Value        = lDateFrom
     else:
    RptObject.Params.Find("DateTo").Value          = lDateTo
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
         BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Description 123 的第一 🐱"


    RptObject.Params.Find("DoCN_SC").Value          = False #Include Credit Note
        #Delete all Detail
    #RptObject.Params.Find("DocProjectData").Value  = #Not use if AllDocProject is true
        while lDetail.RecordCount != 0:
    RptObject.Params.Find("DoCS_CP").Value          = True #Include Cash Sales
            lDetail.Last()
    RptObject.Params.Find("DoDN_SD").Value          = False #Include Debit Note
            lDetail.Delete()
    RptObject.Params.Find("DoDO_GR").Value          = False #Include Delivery Order
           
    RptObject.Params.Find("DoED_EG").Value          = False #Include Extra Delivery Order
        #Append Detail
    RptObject.Params.Find("DoIV_PI").Value          = False #Include Invoice
        lDetail.Append()
    RptObject.Params.Find("DoQT_PQ").Value          = False #Include Quotation
        lDetail.FindField("Seq").value = 1
    RptObject.Params.Find("DoSO_PO").Value          = False #Include Sales Order
        lDetail.FindField("ItemCode").AsString = "BOM"
    #RptObject.Params.Find("ItemCode").Value       = #For Internal use only
        lDetail.FindField("Description").AsString = "Sales Item BOM"
    RptObject.Params.Find("ItemData").Value        = "ANT" + "\r" + "BOM"
        lDetail.FindField("Qty").AsFloat = 1
    #RptObject.Params.Find("ItemProjectData").Value  = #Not use if AllItemProject is true
        lDetail.FindField("UOM").AsString = "UNIT"
    #RptObject.Params.Find("LocationData").Value    = #Not use if AllLocation is true
        #lDetail.FindField("DISC").AsString       = "5%+3" #Optional(eg 5% plus 3 Discount)
    #RptObject.Params.Find("MaxRecords").Value      = #Not use if SelectMaxRecords is False
        lDetail.FindField("Tax").AsString = "SV"
    RptObject.Params.Find("SelectDate").Value        = True
        lDetail.FindField("TaxRate").AsString = "6%"
    RptObject.Params.Find("SelectMaxRecords").Value  = False
        lDetail.FindField("TaxInclusive").value = 0
    #RptObject.Params.Find("GroupBy").Value          = #Only use if wanted to grouping
        lDetail.FindField("UnitPrice").AsFloat = 100
    RptObject.Params.Find("HasCategory").Value      = False
        lDetail.FindField("Amount").AsFloat = 100
     #RptObject.Params.Find("ItemCategoryData").Value = #Not use if HasCategory is False
        lDetail.FindField("TaxAmt").AsFloat = 6
     #RptObject.Params.Find("BatchData").Value        = #Not use if AllBatch is true
        lDetail.Post()
     #RptObject.Params.Find("TariffData").Value      = #Not use if AllTariff is true
       
     #RptObject.Params.Find("ShipperData").Value      = #Not use if AllShipper is true
     try:
    RptObject.Params.Find("SortBy").Value            = "DocDate;DocNo"
        BizObject.Save()        
     #RptObject.Params.Find("StockGroupData").Value  = #Not use if AllStockGroup is true
     except Exception as e:
    #RptObject.Params.Find("SummaryInterval 
        print("Oops!", e)  
     BizObject.Close()
     print ("Posting/Update Done")
 
def DelData():
     BizObject = ComServer.BizObjects.Find("SL_SO")
      
      
     RptObject.CalculateReport()
     lDocKey = BizObject.FindKeyByRef("DocNo", "--SO Test--")
 
    lDataSet = RptObject.DataSets.Find("cdsMain")
          
          
     if lDataSet.RecordCount > 0:
     if lDocKey is None:
         while not lDataSet.eof:
         print ("Record Not Found")
            for idx in range(lDataSet.Fields.Count):
                LFld = lDataSet.Fields.Items(idx).FieldName
                print(LFld + " :"+ lDataSet.FindField(LFld).AsString)
            print("===")
            lDataSet.Next()
     else:
     else:
         print ("Record Not Found")
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()       
         print ("Deleting Done")
 
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
      
      
try:
    answer = input("Continue To delete?")
     CheckLogin()    
    if answer.lower() in ["y","yes"]:
     GetData()
        DelData()
     elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
      print ("Invalid Input")
     
     ComServer.Logout()  
finally:
finally:
    ComServer.Logout()
     ComServer = None
     ComServer = None
    Common.KillApp()
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Edited Sales Invoice List====
====Sales.PriceHistory.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Edited Sales Invoice List Script  
! Sales.PriceHistory.RO Script  
|-
|-
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 19 Jul 2021
#Updated 01 Apr 2021
import win32com.client
import win32com.client
import datetime


ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
Line 1,840: Line 1,890:


def GetData():
def GetData():
     lSQL = "SELECT REFERENCE FROM AUDIT "
     RptObject = ComServer.RptObjects.Find('Sales.PriceHistory.RO')
     lSQL = lSQL + "WHERE REF LIKE 'SL_IV%' "
   
     lSQL = lSQL + "AND UPDATEKIND='E' "
    #RptObject.Params.Find("AgentData").Value            = #Not use if AllAgent is true
     lSQL = lSQL + "AND CAST(DOCDATETIME AS DATE) = '10 JUN 2021' "
    #RptObject.Params.Find("TaxData").Value              = #Not use if AllTax is true
    #RptObject.Params.Find("CompanyCategoryData").Value  = #Not use if AllCompanyCategory is true
    RptObject.Params.Find("AllAgent").Value              = True
    RptObject.Params.Find("AllTax").Value                = True
    RptObject.Params.Find("AllShipper").Value            = True
    RptObject.Params.Find("AllArea").Value              = True
    RptObject.Params.Find("AllCompany").Value            = True
    RptObject.Params.Find("AllDocProject").Value        = True
    RptObject.Params.Find("AllItem").Value              = False
    RptObject.Params.Find("AllItemProject").Value        = True
    RptObject.Params.Find("AllLocation").Value          = True
    RptObject.Params.Find("AllCompanyCategory").Value    = True
     RptObject.Params.Find("AllBatch").Value              = True
    RptObject.Params.Find("AllTariff").Value            = True
    RptObject.Params.Find("AllStockGroup").Value        = True
    #RptObject.Params.Find("AreaData").Value            = #Not use if AllArea is true
    #RptObject.Params.Find("CategoryData").Value        = #Not use if AllTax is true
    #RptObject.Params.Find("CategoryTpl").Value          = #Not use if AllTax is true
    #RptObject.Params.Find("CompanyData").Value          = #Not use if AllTax is true
     
    lDateFrom = datetime.datetime(2021, 3, 1, 13, 0)
    lDateFrom.strftime('%m/%d/%Y')
    lDateTo = datetime.datetime(2021, 3, 31, 13, 0)
    lDateTo.strftime('%m/%d/%Y')
   
    RptObject.Params.Find("DateFrom").Value        = lDateFrom
     RptObject.Params.Find("DateTo").Value          = lDateTo
 
    RptObject.Params.Find("DoCN_SC").Value          = False #Include Credit Note
    #RptObject.Params.Find("DocProjectData").Value  = #Not use if AllDocProject is true
    RptObject.Params.Find("DoCS_CP").Value          = True #Include Cash Sales
    RptObject.Params.Find("DoDN_SD").Value          = False #Include Debit Note
    RptObject.Params.Find("DoDO_GR").Value          = False #Include Delivery Order
    RptObject.Params.Find("DoED_EG").Value          = False #Include Extra Delivery Order
    RptObject.Params.Find("DoIV_PI").Value          = False #Include Invoice
    RptObject.Params.Find("DoQT_PQ").Value          = False #Include Quotation
    RptObject.Params.Find("DoSO_PO").Value          = False #Include Sales Order
    #RptObject.Params.Find("ItemCode").Value        = #For Internal use only
    RptObject.Params.Find("ItemData").Value        = "ANT" + "\r" + "BOM"
    #RptObject.Params.Find("ItemProjectData").Value  = #Not use if AllItemProject is true
    #RptObject.Params.Find("LocationData").Value    = #Not use if AllLocation is true
    #RptObject.Params.Find("MaxRecords").Value      = #Not use if SelectMaxRecords is False
    RptObject.Params.Find("SelectDate").Value        = True
    RptObject.Params.Find("SelectMaxRecords").Value  = False
    #RptObject.Params.Find("GroupBy").Value          = #Only use if wanted to grouping
    RptObject.Params.Find("HasCategory").Value      = False
    #RptObject.Params.Find("ItemCategoryData").Value = #Not use if HasCategory is False
    #RptObject.Params.Find("BatchData").Value        = #Not use if AllBatch is true
    #RptObject.Params.Find("TariffData").Value      = #Not use if AllTariff is true
    #RptObject.Params.Find("ShipperData").Value      = #Not use if AllShipper is true
     RptObject.Params.Find("SortBy").Value            = "DocDate;DocNo"
    #RptObject.Params.Find("StockGroupData").Value  = #Not use if AllStockGroup is true
    #RptObject.Params.Find("SummaryInterval 
      
      
     lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    RptObject.CalculateReport()
 
    lDataSet = RptObject.DataSets.Find("cdsMain")
       
    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            for idx in range(lDataSet.Fields.Count):
                LFld = lDataSet.Fields.Items(idx).FieldName
                print(LFld + " :"+ lDataSet.FindField(LFld).AsString)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")
   
try:
    CheckLogin()     
    GetData()
finally:
    ComServer.Logout()
    ComServer = None
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
 
====Get Edited Sales Invoice List====
{| class="mw-collapsible mw-collapsed wikitable"
! Get Edited Sales Invoice List Script
|-
|
<syntaxhighlight lang="Python">
#Updated 19 Jul 2021
import win32com.client
 
ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
 
def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("ADMIN", "ADMIN", #UserName, Password
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0081.FDB") #Database Name
 
def GetData():
    lSQL = "SELECT REFERENCE FROM AUDIT "
    lSQL = lSQL + "WHERE REF LIKE 'SL_IV%' "
    lSQL = lSQL + "AND UPDATEKIND='E' "
    lSQL = lSQL + "AND CAST(DOCDATETIME AS DATE) = '10 JUN 2021' "
   
     lDataSet = ComServer.DBManager.NewDataSet(lSQL)


     if lDataSet.RecordCount > 0:
     if lDataSet.RecordCount > 0:
Line 2,205: Line 2,356:
|  
|  
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
#Updated 08 Jul 2022
#Updated 18 Jan 2024
import win32com.client
import Common
 
ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
 
def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("ADMIN", "ADMIN", #UserName, Password
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0081.FDB") #Database Name


def GetData():
def GetData():
Line 2,238: Line 2,379:
      
      
try:
try:
     CheckLogin()       
     Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer      
     GetData()
     GetData()
finally:
finally:
    ComServer.Logout()
     ComServer = None
     ComServer = None
    Common.KillApp()


</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
<br>


===PHP===
====Maintain Asset Item====
* Tested PHP Version : 7.4.3/8.1.10
{| class="mw-collapsible mw-collapsed wikitable"
* Add this in ..\xampp\php\php.ini
! Maintain Asset Item
<pre>
|-
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
</pre>
 
* Grid.css file for example code
{| class="mw-collapsible mw-collapsed wikitable"
! Grid.css file
|-
|  
|  
<pre>
<syntaxhighlight lang="Python">
body
#Updated 03 Oct 2023
{
import Common
  margin: 10;
import datetime
}
     
table {
def GetListData():
  font-family: arial, sans-serif;
    lSQL = "SELECT A.DOCNOEX, A.ACQUIREDATE, A.CODE, A.DESCRIPTION, A.ASSETGROUP, "
  border: 1px solid black;
    lSQL = lSQL + "A.AGENT, A.AREA, A.COST, A.USEFULLIFE, A.DEPRRATE, A.RESIDUAL, "
  border-collapse: collapse;
    lSQL = lSQL + "B.POSTDATE, B.DESCRIPTION HISTORYDESC "
  table-layout: auto;
    lSQL = lSQL + "FROM FA_ITEM A "
}
    lSQL = lSQL + "INNER JOIN FA_ITEM_HISTORY B ON (A.Code=B.Code) "
    lSQL = lSQL + "WHERE A.STATUS=1 " #1 = Active 2 = InActive   
   
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
       
    Common.ShowResult(lDataSet)


td, th {
def GetAutoKey(ACode):
  border: 1px solid black;
    lSQL = "SELECT AUTOKEY FROM FA_ITEM "
  text-align: left;
    lSQL = lSQL + "WHERE Code= ' + Common.QuotedStr(ACode)
  padding: 8px;
   
  white-space: nowrap;
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
}
    return lDataSet.FindField("AutoKey").AsFloat


tr:nth-child(even) {
def PostData():
  background-color: #dddddd;
    BizObject = ComServer.BizObjects.Find("FA.Item.OPF")
}
    lMain = BizObject.DataSets.Find("Main") #lMain contains master data
</pre>
    lProj = BizObject.DataSets.Find("Project") #lProj contains Project data
|}
    lDepr = BizObject.DataSets.Find("DeprSche") #lDepr contains Depreciation Scheduler data
    lHist = BizObject.DataSets.Find("History") #lHist contains History data
   
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
   
    lDocKey = GetAutoKey("--FA Test--")
       
    if lDocKey == 0:
        BizObject.New()
        lMain.FindField("Code").AsString = "--FA Test--"
        lMain.FindField("Description").AsString = "5ft Banquet Table"
        lMain.FindField("AcquireDate").value = lDate
        lMain.FindField("AssetGroup").AsString = "Default"
        lMain.FindField("Cost").AsFloat = 6190.50
        lMain.FindField("UsefulLife").AsFloat = 3
        lMain.FindField("Residual").AsFloat = 1
        lMain.FindField("DocNoEx").AsString = "IV-321578"
        lMain.FindField("Qty").AsFloat = 100


====Get Agent====
        #Insert Data - Depreciation Schedule
{| class="mw-collapsible mw-collapsed wikitable"
        lDate = datetime.datetime(2024, 9, 3, 13, 0)
! Get Agent Script 
        lDate.strftime('%m/%d/%Y')
|-
       
|
        lDepr.Append()
<syntaxhighlight lang="PHP">
        lDepr.FindField("SCHEDATE").value      = lDate
<!DOCTYPE html>
        lDepr.FindField("Description").AsString = "Depreciation 1/3"
<html>
        lDepr.FindField("AMOUNT").AsFloat      = 2063.17
<body>
        lDepr.Post()


<h1>SQL Acc SDK in PHP page</h1>
        lDate = datetime.datetime(2025, 9, 3, 13, 0)
        lDate.strftime('%m/%d/%Y')
       
        lDepr.Append()
        lDepr.FindField("SCHEDATE").value      = lDate
        lDepr.FindField("Description").AsString = "Depreciation 2/3"
        lDepr.FindField("AMOUNT").AsFloat      = 2063.17
        lDepr.Post()


<?php
        lDate = datetime.datetime(2026, 9, 3, 13, 0)
echo "Updated 01 May 2020<br>";
        lDate.strftime('%m/%d/%Y')


$ComServer = null;
        lDepr.Append()
        lDepr.FindField("SCHEDATE").value      = lDate
        lDepr.FindField("Description").AsString = "Depreciation 3/3"
        lDepr.FindField("AMOUNT").AsFloat      = 2063.16
        lDepr.Post()       


function CheckLogin()
        #Insert Data - Hisory 
{
        lDate = datetime.datetime(2023, 1, 20, 13, 0)
    global $ComServer;
        lDate.strftime('%m/%d/%Y')
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
       
     $status = $ComServer->IsLogin();
        lHist.Append()
        lHist.FindField("PostDate").value = lDate
        lHist.FindField("Description").AsString = "Supplier ABC 4 Units"
        lHist.Post()
       
        lDate = datetime.datetime(2023, 2, 22, 13, 0)
        lDate.strftime('%m/%d/%Y')
       
        lHist.Append()
        lHist.FindField("PostDate").value = lDate
        lHist.FindField("Description").AsString = "Supplier XYZ Sdn Bhd 6 Units"
        lHist.Post()
       
        #Insert Data - Project
        lProj.Edit()
        lProj.FindField("Project").AsString = "KL"
        lProj.FindField("Rate").AsFloat = 40.00
        lProj.Post()
       
        lProj.Append()
        lProj.FindField("Project").AsString = "JB"
        lProj.FindField("Rate").AsFloat = 60.00
        lProj.Post()         
     else:
        BizObject.Params.Find("Autokey").AsString = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited 5ft Banquet Tables"


    if ($status == true)
        #Delete all Project
    {
        while lProj.RecordCount != 0:
         $ComServer->Logout();
            lProj.First()
    }
            lProj.Delete()
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
           
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
         lProj.Append()
                      "ACC-0082.FDB"); #Database Name
        lProj.FindField("Project").AsString = "----"
   
        lProj.FindField("Rate").AsFloat = 10.00
}
        lProj.Post()
       
        lProj.Append()
        lProj.FindField("Project").AsString = "KL"
        lProj.FindField("Rate").AsFloat = 40.00
        lProj.Post()


function GetData()
        lProj.Append()
{
        lProj.FindField("Project").AsString = "JB"
     global $ComServer;
        lProj.FindField("Rate").AsFloat = 50.00
        lProj.Post()     
       
        #Insert Data - Hisory 
        lDate = datetime.datetime(2023, 2, 10, 13, 0)
        lDate.strftime('%m/%d/%Y')
       
        lHist.Append()
        lHist.FindField("PostDate").value = lDate
        lHist.FindField("Description").AsString = "1 of table leg broken"
        lHist.Post()       
    try:
        BizObject.Save()         
    except Exception as e:
        print("Oops!", e)   
     BizObject.Close()
    print ("Posting/Update Done")


     $lSQL = "SELECT * FROM AGENT
def DelData():
        WHERE CODE='HALIM'";
     BizObject = ComServer.BizObjects.Find("FA.Item.OPF")
   
    lDocKey = GetAutoKey("--FA Test--")
       
    if lDocKey == 0:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Autokey").AsString = lDocKey
        BizObject.Open()
        BizObject.Delete()       
        print ("Deleting Done")


     $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
try:
 
     Common.CheckLogin()
     if ($lDataSet->RecordCount > 0)
    global ComServer
     {
    ComServer = Common.ComServer
        echo "Result : ";
     GetListData()
        echo $lDataSet->FindField('Description')->AsString() . "<br>";
     PostData()
     }
      
     else
     answer = input("Continue To delete?")
    {
     if answer.lower() in ["y","yes"]:
        echo "Record Not Found";
         DelData()
     }
    elif answer.lower() in ["n","no"]:
}
         print ("Deleting Aborted")
 
    else:
if (isset($_POST['BtnData']))
      print ("Invalid Input")
{
     
    try
     ComServer.Logout()  
    {
finally:
         CheckLogin();
    ComServer = None
        GetData();
     Common.KillApp()
         echo date("d M Y h:i:s A") . " - Done";
    }
    finally
     {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
     }
}
 
?>
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Get Agent"/>
    </form>
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Add & Edit Agent====
====Customer Payment====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Add & Edit Agent Script 
! AR_PM
|-
|-
|  
|  
<syntaxhighlight lang="PHP">
<syntaxhighlight lang="Python">
<!DOCTYPE html>
#Updated 04 Dec 2023
<html>
import Common
<body>
import datetime
     
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.CODE, B.COMPANYNAME, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AGENT, A.AREA, A.PAYMENTMETHOD "
    lSQL = lSQL + "FROM AR_PM A "
    lSQL = lSQL + "INNER JOIN AR_CUSTOMER B ON (A.CODE=B.CODE) "
    lSQL = lSQL + "WHERE A.CODE='300-A0002' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
   
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
       
    Common.ShowResult(lDataSet)


<h1>SQL Acc SDK in PHP page</h1>
def PostData():
 
    BizObject = ComServer.BizObjects.Find("AR_PM")
<?php
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
echo "Updated 01 May 2020<br>";
    lDetail = BizObject.DataSets.Find("cdsKnockOff") #lDetail contains detail data
 
   
$ComServer = null;
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
 
    lDate.strftime('%m/%d/%Y')
function CheckLogin()
   
{
    lDocKey = BizObject.FindKeyByRef("DocNo", "--PM Test--")
     global $ComServer;
       
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
     if lDocKey is None:
     $status = $ComServer->IsLogin();
        BizObject.New()
        lMain.FindField("DocNo").AsString = "--PM Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Code").AsString = "300-C0001" #Customer Account
        lMain.FindField("Description").AsString = "Payment for A/c"
        lMain.FindField("PaymentMethod").AsString = "325-000" #Bank or Cash Account
        lMain.FindField("ChequeNumber").AsString = ""
        lMain.FindField("BankCharge").AsFloat = 0
        lMain.FindField("DocAmt").AsFloat = 10000.00
        lMain.FindField("Cancelled").AsString = "F"   
 
        #Knock Off IV 
        V = ["IV", "--IV Test--"]  #DocType, DocNo
        if (lDetail.Locate("DocType;DocNo", V, False, False)) :
            lDetail.Edit()
            lDetail.FindField("KOAmt").AsFloat = 147.09 #Partial Knock off
            lDetail.FindField("KnockOff").AsString = "T"
            lDetail.Post()
     else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Payment for A/c 的第一 🐱"
 
        #Knock Off IV 
        V = ["IV", "--IV Test--"]  #DocType, DocNo
        if (lDetail.Locate("DocType;DocNo", V, False, False)) :
            lDetail.Edit()
            lDetail.FindField("KOAmt").AsFloat = 200.09 #Partial Knock off
            lDetail.FindField("KnockOff").AsString = "T"
            lDetail.Post()
       
    try:
        BizObject.Save()         
    except Exception as e:
        print("Oops!", e)   
    BizObject.Close()
    print ("Posting/Update Done")


    if ($status == true)
def DelData():
     {
     #Deleting only work if the record never not knock off by Refund
        $ComServer->Logout();
     BizObject = ComServer.BizObjects.Find("AR_PM")
     }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
      
      
}
    lDocKey = BizObject.FindKeyByRef("DocNo", "--PM Test--")
       
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()       
        print ("Deleting Done")


function PostData(){
try:
global $ComServer;
    Common.CheckLogin()
    global ComServer
     $BizObject = $ComServer->BizObjects->Find("Agent");
     ComServer = Common.ComServer
     $lMain = $BizObject->DataSets->Find("MainDataSet");
    GetListData()
     PostData()
      
      
     $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
     answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
if ($lDocKey == null){
         DelData()
        $BizObject->New();
    elif answer.lower() in ["n","no"]:
        $lMain->FindField("CODE")->value = "FAIRY";
        print ("Deleting Aborted")
         $lMain->FindField("DESCRIPTION")->value = "FAIRY TAIL";
     else:
} else{
      print ("Invalid Input")
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
     
        $BizObject->Open();
     ComServer.Logout()  
        $BizObject->Edit();
finally:
        $lMain->FindField("DESCRIPTION")->value = "FAIRY TAIL WIZARD";
    ComServer = None
}
     Common.KillApp()
try{
$BizObject->Save();
echo "Posting Done <br>";
}catch (Exception $e) {
     echo 'Caught exception: ',  $e->getMessage(), "\n";
}
}
 
if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        PostData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
     {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
     }
}
 
?>
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Add/Edit Agent"/>
    </form>
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Delete Agent====
====Customer Due Listing====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Delete Agent Script 
! Customer Due Listing
|-
|-
|  
|  
<syntaxhighlight lang="PHP">
<syntaxhighlight lang="Python">
<!DOCTYPE html>
#Updated 08 Oct 2024
<html>
import Common
<body>
import datetime


<h1>SQL Acc SDK in PHP page</h1>
def GetData():
    RptObject = ComServer.RptObjects.Find('Customer.DueDocument.RO')
    #RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is true
    RptObject.Params.Find("AllAgent").Value            = True
    RptObject.Params.Find("AllArea").Value              = True
    RptObject.Params.Find("AllCompany").Value          = False
    RptObject.Params.Find("AllCompanyCategory").Value  = True
    RptObject.Params.Find("AllCurrency").Value          = True
    RptObject.Params.Find("AllDocProject").Value        = True
    RptObject.Params.Find("AllItemProject").Value      = True
    #RptObject.Params.Find("AreaData").Value            = 'Not use if AllArea is true
    #RptObject.Params.Find("CompanyCategoryData").Value = 'Not use if AllCompanyCategory is true
    RptObject.Params.Find("CompanyData").Value          = "300-C0001"
    #RptObject.Params.Find("CurrencyData").Value        = 'Not use if AllCurrency is true
    #RptObject.Params.Find("DocProjectData").Value      = 'Not use if AllDocProject is true
    #RptObject.Params.Find("GroupBy").Value            = #
    #RptObject.Params.Find("ItemProjectData").Value    = #
    RptObject.Params.Find("PrintContra").Value        = True
    RptObject.Params.Find("PrintCreditNote").Value    = True
    RptObject.Params.Find("PrintDebitNote").Value      = True
    RptObject.Params.Find("PrintInvoice").Value        = True
    RptObject.Params.Find("PrintOverDue").Value        = True
    RptObject.Params.Find("PrintUnDue").Value          = False
    RptObject.Params.Find("ShowForeignCurrency").Value = True
    RptObject.Params.Find("ShowLocalCurrency").Value  = True
    RptObject.Params.Find("SortBy").Value              = "DocDate;DueDate;DocNo"


<?php
    lDateTo = datetime.datetime(2024, 9, 30, 13, 0)
echo "Updated 01 May 2020<br>";
    lDateTo.strftime('%m/%d/%Y')
   
    RptObject.Params.Find("DateTo").Value              = lDateTo
    RptObject.Params.Find("IncludePDCheque").Value    = True
 
    RptObject.CalculateReport()
 
    lDataSet = RptObject.DataSets.Find("cdsMain")
    print("Record count : ", lDataSet.RecordCount)         
    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            print(lDataSet.FindField('CODE').AsString)
            print(lDataSet.FindField('DOCTYPE').AsString)
            print(lDataSet.FindField('DOCDATE').AsString)           
            print(lDataSet.FindField('DOCNO').AsString)
            print(lDataSet.FindField('DUEDATE').AsString)
            print(lDataSet.FindField('DOCAMT').AsString)
            print(lDataSet.FindField('OUTSTANDING').AsString)
            print(lDataSet.FindField('AGE').AsString)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")
   
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer     
    GetData()
    ComServer.Logout()
finally:   
    ComServer = None
    Common.KillApp()
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
<br>


$ComServer = null;
===PHP===
* Tested PHP Version : 7.4.3/8.1.10
* Add this in ..\xampp\php\php.ini
<pre>
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
</pre>


function CheckLogin()
* Grid.css file for example code
{| class="mw-collapsible mw-collapsed wikitable"
! Grid.css file
|-
|
<pre>
body
{
{
    global $ComServer;
  margin: 10;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
}
    $status = $ComServer->IsLogin();
table {
  font-family: arial, sans-serif;
  border: 1px solid black;
  border-collapse: collapse;
  table-layout: auto;
}


    if ($status == true)
td, th {
    {
  border: 1px solid black;
        $ComServer->Logout();
  text-align: left;
    }
  padding: 8px;
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
  white-space: nowrap;
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
   
}
}


function PostData(){
tr:nth-child(even) {
global $ComServer;
  background-color: #dddddd;
    $BizObject = $ComServer->BizObjects->Find("Agent");
    $lMain = $BizObject->DataSets->Find("MainDataSet");
   
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
if ($lDocKey == null){
        echo "Record Not Found";
} else{
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
        $BizObject->Open();
        $BizObject->Delete();
        echo "Delete Done<br>";
}
}
}
 
</pre>
if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        PostData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Delete Agent"/>
    </form>
</body>
</html>
</syntaxhighlight>
|}
|}


<div style="float: right;">  [[#top|[top]]]</div>
====Get Agent====
 
====Complete Post====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! SL_CS, AR_PM, SL_CN & AR_CN Script  
! Get Agent Script
|-
|-
|  
|  
Line 2,548: Line 2,816:


<?php
<?php
echo "Updated 01 May 2020<br>";
echo "Updated 22 Oct 2024<br>";
#This will doing following posting
#01. Cash Sales - SL_CS
#02. Sales Credit Note - SL_CN
#03. Customer Payment With Knock off - AR_PM
#04. Edit Credit Note Posted in Step 02 & Knock Off - AR_CN
#05. Customer Refund to Knock off Credit Note - AR_CF


$ComServer = null;
$ComServer = null;
Line 2,574: Line 2,836:
}
}


function PostDataCS(){
function GetData()
global $ComServer;
{
    global $ComServer;
$BizObject = $ComServer->BizObjects->Find("SL_CS");
 
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
     $lSQL = "SELECT * FROM AGENT
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
        WHERE CODE='HALIM'";
 
     $BizObject->New();
     $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
    $lMain->FindField("DocKey")->value = -1;
 
    $lMain->FindField("DocNo")->AsString = "--CS Test--";
     if ($lDataSet->RecordCount > 0)
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
     {
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
        echo "Result : ";
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
        echo $lDataSet->FindField('Description')->AsString() . "<br>";
     $lMain->FindField("CompanyName")->AsString = "Cash Sales";
     }
    $lMain->FindField("Address1")->AsString = ""; #Optional
     else
    $lMain->FindField("Address2")->AsString = ""; #Optional
     {
     $lMain->FindField("Address3")->AsString = ""; #Optional
        echo "Record Not Found";
    $lMain->FindField("Address4")->AsString = ""; #Optional
     }
    $lMain->FindField("Phone1")->AsString = "";   #Optional
$lDataSet = null;
    $lMain->FindField("Description")->AsString = "Sales";
}
    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "500-000"; #Sales Account
    $lDetail->FindField("Description")->AsString = "Sales Item A";
$txt = <<<EOT
          Item A Line 1
          Item A Line 2
          EOT;
    $lDetail->FindField("Description3")->AsString = $txt;
     $lDetail->FindField("Qty")->AsFloat = 1;
     $lDetail->FindField("Tax")->AsString = "SV";
     $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
     $lDetail->FindField("UnitPrice")->AsFloat = 435;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 24.63;


    $lDetail->DisableControls();
if (isset($_POST['BtnData']))
    $lDetail->FindField("TaxInclusive")->value = 1;
{
    $lDetail->EnableControls();   
     try
    $lDetail->Post();
     {
        CheckLogin();
     #For Tax Inclusive = False with override Tax Amount
        GetData();
     $lDetail->Append();
        echo date("d M Y h:i:s A") . " - Done";
    $lDetail->FindField("DtlKey")->value = -1;
     }
    $lDetail->FindField("DocKey")->value = -1;
     finally
    $lDetail->FindField("Seq")->value = 2;
     {
    $lDetail->FindField("Account")->AsString = "500-000";
        $ComServer->Logout();
    $lDetail->FindField("Description")->AsString = "Sales Item B";
        #free the object
    $lDetail->FindField("Qty")->AsFloat = 1;
        $ComServer = null;
    $lDetail->FindField("Tax")->AsString = "SV";
     }
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 94.43;
    $lDetail->FindField("Amount")->AsFloat = 94.43;
    $lDetail->FindField("TaxAmt")->AsFloat = 5.66;
     $lDetail->Post();
     #For With Item Code
     $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 3;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    #$lDetail->FindField("Account")->AsString = "500-000"; #If you wanted override the Sales Account Code
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->FindField("Qty")->AsFloat = 2;
    #$lDetail->FindField("DISC")->AsString = "5%+3"; #Optional(eg 5% plus 3 Discount)
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 100;
    $lDetail->FindField("Amount")->AsFloat = 200;
    $lDetail->FindField("TaxAmt")->AsFloat = 12;
    $lDetail->Post();
     $BizObject->Save();
    $BizObject->Close();
}
}


function PostDataPM(){
?>
global $ComServer;
     <form method="post">         
        <input type="submit" name="BtnData"
     $BizObject = $ComServer->BizObjects->Find("AR_PM");
                value="Get Agent"/>  
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
     </form>  
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
</body>
</html>
    $BizObject->New();
</syntaxhighlight>
    $lMain->FindField("DOCKEY")->Value = -1;
|}
     $lMain->FindField("DocNo")->AsString = "--PM Test--";
 
    $lMain->FindField("CODE")->AsString = "300-C0001"; #Customer Account
<div style="float: right;">   [[#top|[top]]]</div>
    $lMain->FindField("DocDate")->Value = "04/23/2020"; #MM/DD/YYYY
    $lMain->FindField("PostDate")->Value = "04/23/2020"; #MM/DD/YYYY
    $lMain->FindField("Description")->AsString = "Payment for A/c";
    $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
    $lMain->FindField("ChequeNumber")->AsString = "";
    $lMain->FindField("BankCharge")->AsFloat = 0;
    $lMain->FindField("DocAmt")->AsFloat = 200.00;
    $lMain->FindField("Cancelled")->AsString = "F";


     #Knock Off IV 
====Add & Edit Agent====
     $V = array("IV", "--CS Test--"); #DocType, DocNo
{| class="mw-collapsible mw-collapsed wikitable"
! Add & Edit Agent Script 
|-
|
<syntaxhighlight lang="PHP">
<!DOCTYPE html>
<html>
<body>
 
<h1>SQL Acc SDK in PHP page</h1>
 
<?php
echo "Updated 01 May 2020<br>";
 
$ComServer = null;
 
function CheckLogin()
{
     global $ComServer;
     $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();
 
    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
      
      
    if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
        $lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 147.09; #Partial Knock off
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
}
    $BizObject->Save();
    $BizObject->Close();
}
}


function PostDataCN(){
function PostData(){
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("SL_CN");
    $BizObject = $ComServer->BizObjects->Find("Agent");
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
     $lMain = $BizObject->DataSets->Find("MainDataSet");
     $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
   
     $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
    $BizObject->New();
if ($lDocKey == null){
    $lMain->FindField("DocKey")->value = -1;
        $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--CN Test--";
        $lMain->FindField("CODE")->value = "FAIRY";
    $lMain->FindField("DocDate")->value = "04/23/2020"; #MM/DD/YYYY
        $lMain->FindField("DESCRIPTION")->value = "FAIRY TAIL";
    $lMain->FindField("PostDate")->value = "04/23/2020"; #MM/DD/YYYY
} else{
    $lMain->FindField("Code")->AsString = "300-C0001";
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
        $BizObject->Open();
    $lMain->FindField("Address1")->AsString = "";
        $BizObject->Edit();
    $lMain->FindField("Address2")->AsString = "";
        $lMain->FindField("DESCRIPTION")->value = "FAIRY TAIL WIZARD";
    $lMain->FindField("Address3")->AsString = "";
}
    $lMain->FindField("Address4")->AsString = "";
try{
    $lMain->FindField("Phone1")->AsString = "";
$BizObject->Save();
    $lMain->FindField("Description")->AsString = "Sales Returned";
echo "Posting Done <br>";
}catch (Exception $e) {
    #For With Item Code
     echo 'Caught exception: ',  $e->getMessage(), "\n";
    $lDetail->Append();
}
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Description2")->AsString = "Product Spoil"; #Reason
    $lDetail->FindField("Remark1")->AsString = "--CS Test--";  #Invoice No
    $lDetail->FindField("Remark2")->AsString = "20 Apr 2020";  #Invoice Date
    $lDetail->FindField("Qty")->AsFloat = 1;
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 100;
     $lDetail->FindField("Amount")->AsFloat = 100;
    $lDetail->FindField("TaxAmt")->AsFloat = 6;
    $lDetail->Post();
    $BizObject->Save();
    $BizObject->Close();
}
}


function PostKnockIVCN(){
if (isset($_POST['BtnData']))
global $ComServer;
{
     try
    $BizObject = $ComServer->BizObjects->Find("AR_CN");
     {
    $lMain = $BizObject->DataSets->Find("MainDataSet");
         CheckLogin();
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff");
         PostData();
         echo date("d M Y h:i:s A") . " - Done";
     #Find CN Number
    }
     $lDocNo = "--CN Test--";
    finally
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
    {
    $BizObject->Params->Find("DocKey")->AsString = $lDocKey;
        $ComServer->Logout();
        #free the object
if ($lDocKey != null){
        $ComServer = null;
         $BizObject->Open();
    }
        $BizObject->Edit();
         $lMain->Edit();
          
        #Knock Off IV       
        $V = array("IV", "--CS Test--"); #DocType, DocNo
       
        if ($lDetail->Locate("DocType;DocNo", $V, False, False)){
            $lDetail->Edit();
            $lDetail->FindField("KOAmt")->AsFloat = 100; #Partial Knock off
            $lDetail->FindField("KnockOff")->AsString = "T";
            $lDetail->Post();
}
        $BizObject->Save();
        $BizObject->Close();
}
}
}


function PostDataCF(){
?>
global $ComServer;
    $BizObject = $ComServer->BizObjects->Find("AR_CF");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
    $BizObject->New();
    $lMain->FindField("DOCKEY")->Value = -1;
    $lMain->FindField("DocNo")->AsString = "--CF Test--";
    $lMain->FindField("CODE")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("DocDate")->Value = "04/23/2020"; #MM/DD/YYYY
    $lMain->FindField("PostDate")->Value = "04/23/2020"; #MM/DD/YYYY
    $lMain->FindField("Description")->AsString = "Payment for A/c";
    $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
    $lMain->FindField("ChequeNumber")->AsString = "";
    $lMain->FindField("BankCharge")->AsFloat = 0;
    $lMain->FindField("DocAmt")->AsFloat = 6;
    $lMain->FindField("Cancelled")->AsString = "F";
 
    #Knock Off CN
    $V = array("CN", "--CN Test--");  #DocType, DocNo
   
    if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
        $lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 4; #Partial Knock off
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
}
    $BizObject->Save();
    $BizObject->Close();
}
 
if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Posting Cash Sales<br>";
        PostDataCS();
        echo date("d M Y h:i:s A")." - Posting Customer Payment<br>";
        PostDataPM();
        echo date("d M Y h:i:s A")." - Posting Sales Credit Note<br>";
        PostDataCN();
        echo date("d M Y h:i:s A")." - Posting Knock Off Sales Credit Note<br>";
        PostKnockIVCN();
        echo date("d M Y h:i:s A")." - Posting Customer Refund<br>";
        PostDataCF();
        echo date("d M Y h:i:s A")." - Posting Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>  
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Complete Post"/>  
                 value="Add/Edit Agent"/>  
     </form>  
     </form>  
</body>
</body>
Line 2,839: Line 2,973:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Invoice Next Number====
====Delete Agent====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Invoice Next Number Script  
! Delete Agent Script
|-
|-
|  
|  
Line 2,853: Line 2,987:
<?php
<?php
echo "Updated 01 May 2020<br>";
echo "Updated 01 May 2020<br>";
#This action to Get Next Number for Customer Invoice


$ComServer = null;
$ComServer = null;
Line 2,873: Line 3,006:
}
}


function GetData(){
function PostData(){
global $ComServer;
global $ComServer;
     $lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A
     $BizObject = $ComServer->BizObjects->Find("Agent");
        INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY)
    $lMain = $BizObject->DataSets->Find("MainDataSet");
WHERE A.DOCTYPE='IV'
   
AND A.DESCRIPTION='Customer Invoice'
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
AND A.STATESET=1
";
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
if ($lDocKey == null){
 
        echo "Record Not Found";
    if ($lDataSet->RecordCount > 0) {
} else{
$lDataSet->First();
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
        $fmt = $lDataSet->FindField('Format')->AsString();
         $BizObject->Open();
         $NextNo = $lDataSet->FindField('NEXTNUMBER')->AsFloat();
         $BizObject->Delete();
         echo "Delete Done<br>";
         echo date("d M Y h:i:s A")." Format in SQLAcc : " . str_ireplace("d","s", $fmt)."<br>";
}
        $fmt= str_ireplace(".","'0", $fmt);
         echo date("d M Y h:i:s A")." Format in PHP : " . str_ireplace("d","s", $fmt)."<br>";
echo date("d M Y h:i:s A")." Output in PHP : " .sprintf($fmt,$NextNo)."<br>";
}else {
    echo "Record Not Found";
    }
}
}


Line 2,904: Line 3,029:
     {
     {
         CheckLogin();
         CheckLogin();
         GetData();
         PostData();
         echo date("d M Y h:i:s A")." - Done";
         echo date("d M Y h:i:s A") . " - Done";
     }
     }
     finally
     finally
Line 2,915: Line 3,040:
}
}


?>  
?>
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Get Doc Number"/>  
                 value="Delete Agent"/>  
     </form>  
     </form>  
</body>
</body>
Line 2,927: Line 3,052:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Add & Edit AR_Customer====
====Complete Post====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Add & Edit AR_Customer Script  
! SL_CS, AR_PM, SL_CN & AR_CN Script  
|-
|-
|  
|  
Line 2,940: Line 3,065:


<?php
<?php
echo "Updated 11 Jun 2020<br>";
echo "Updated 18 May 2024<br>";
#This will doing following posting
#01. Cash Sales - SL_CS
#02. Sales Credit Note - SL_CN
#03. Customer Payment With Knock off - AR_PM
#04. Edit Credit Note Posted in Step 02 & Knock Off - AR_CN
#05. Customer Refund to Knock off Credit Note - AR_CF


$ComServer = null;
$ComServer = null;
Line 2,955: Line 3,086:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\\eStream\\SQLAccounting\\Share\\Default.DCF", #DCF File
                       "C:\\eStream\\SQLAccounting\\Share\\Default.DCF", #DCF file
                       "ACC-0035.FDB"); #Database Name
                       "ACC-0082.FDB"); #Database Name
      
      
}
}


function PostData(){
function PostDataCS(){
global $ComServer;
global $ComServer;
    $BizObject = $ComServer->BizObjects->Find("AR_Customer");
$BizObject = $ComServer->BizObjects->Find("SL_CS");
     $lMain = $BizObject->DataSets->Find("MainDataSet");
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
$lDtl  = $BizObject->DataSets->Find("cdsBranch");
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
   
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
if ($lDocKey == null){
    $BizObject->New();
        $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--CS Test--";
        $lMain->FindField("CODE")->value = "FAIRY";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
        $lMain->FindField("CompanyName")->value = "FAIRY TAIL";
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
        $lDtl->Edit(); #For 1St Branch
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
        $lDtl->FindField("BranchName")->AsString = "BILLING";
    $lMain->FindField("Address1")->AsString = ""; #Optional
        $lDtl->FindField("Address1")->AsString   = "Address1";
    $lMain->FindField("Address2")->AsString = ""; #Optional
        $lDtl->FindField("Address2")->AsString   = "Address2";
    $lMain->FindField("Address3")->AsString = ""; #Optional
        $lDtl->FindField("Address3")->AsString   = "Address3";
    $lMain->FindField("Address4")->AsString = ""; #Optional
        $lDtl->FindField("Address4")->AsString   = "Address4";  
    $lMain->FindField("Phone1")->AsString = "";   #Optional
        $lDtl->FindField("Attention")->AsString  = "Attention";  
    $lMain->FindField("Description")->AsString = "Sales";
        $lDtl->FindField("Phone1")->AsString     = "Phone1";
        $lDtl->FindField("Fax1")->AsString       = "Fax1";
    #Insert Data - Detail
        $lDtl->FindField("Email")->AsString       = "EmailAddress";
    #For Tax Inclusive = True with override Tax Amount
        $lDtl->Post();
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "500-000"; #Sales Account
    $lDetail->FindField("Description")->AsString = "Sales Item A";
$txt = <<<EOT
          Item A Line 1
          Item A Line 2
          EOT;
    $lDetail->FindField("Description3")->AsString = $txt;
    $lDetail->FindField("Qty")->AsFloat = 1;
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 435;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 24.63;


        $lDtl->Append(); #For 2nd Branch
    $lDetail->DisableControls();
        $lDtl->FindField("BranchName")->AsString  = "Branch1";
    $lDetail->FindField("TaxInclusive")->value = 1;
        $lDtl->FindField("Address1")->AsString    = "DAddress1";
    $lDetail->EnableControls();     
        $lDtl->FindField("Address2")->AsString    = "DAddress2";
    $lDetail->Post();
        $lDtl->FindField("Address3")->AsString    = "DAddress3";
        $lDtl->FindField("Address4")->AsString   = "DAddress4"; 
    #For Tax Inclusive = False with override Tax Amount
        $lDtl->FindField("Attention")->AsString  = "DAttention"; 
    $lDetail->Append();
        $lDtl->FindField("Phone1")->AsString      = "DPhone1";
    $lDetail->FindField("Seq")->value = 2;
        $lDtl->FindField("Fax1")->AsString        = "DFax1";
    $lDetail->FindField("Account")->AsString = "500-000";
        $lDtl->FindField("Email")->AsString      = "DEmailAddress";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
        $lDtl->Post();
    $lDetail->FindField("Qty")->AsFloat = 1;
} else{
    $lDetail->FindField("Tax")->AsString = "SV";
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
    $lDetail->FindField("TaxRate")->AsString = "6%";
        $BizObject->Open();
    $lDetail->FindField("TaxInclusive")->value = 0;
        $BizObject->Edit();
    $lDetail->FindField("UnitPrice")->AsFloat = 94.43;
        $lMain->FindField("CompanyName")->value = "FAIRY TAIL WIZARD";
    $lDetail->FindField("Amount")->AsFloat = 94.43;
    $lDetail->FindField("TaxAmt")->AsFloat = 5.66;
$r = $lDtl->RecordCount();
    $lDetail->Post();
$x = 1;
while ($x <= $r ){
$lDtl->First();
            $lDtl->Delete();
$x++;
}
        #Insert back with new Information
        $lDtl->Edit(); #For 1St Branch
        $lDtl->FindField("BranchName")->AsString  = "BILLING"; #Make sure this always same as b4 delete data
        $lDtl->FindField("Address1")->AsString    = "New Address1";
        $lDtl->FindField("Address2")->AsString    = "New Address2";
        $lDtl->FindField("Address3")->AsString   = "New Address3";
        $lDtl->FindField("Address4")->AsString    = "New Address4";
        $lDtl->FindField("Attention")->AsString   = "New Attention";
        $lDtl->FindField("Phone1")->AsString      = "New Phone1";
        $lDtl->FindField("Fax1")->AsString        = "New Fax1";
        $lDtl->FindField("Email")->AsString      = "New EmailAddress";
        $lDtl->Post();
 
        $lDtl->Append(); #For 2nd Branch
        $lDtl->FindField("BranchName")->AsString = "Branch1"; #Make sure this always same as b4 delete data
        $lDtl->FindField("Address1")->AsString   = "New DAddress1";
        $lDtl->FindField("Address2")->AsString    = "New DAddress2";
        $lDtl->FindField("Address3")->AsString    = "New DAddress3";
        $lDtl->FindField("Address4")->AsString    = "New DAddress4";  
        $lDtl->FindField("Attention")->AsString  = "New DAttention"; 
        $lDtl->FindField("Phone1")->AsString      = "New DPhone1";
        $lDtl->FindField("Fax1")->AsString        = "New DFax1";
        $lDtl->FindField("Email")->AsString      = "New DEmailAddress";
        $lDtl->Post();
}
    #For With Item Code
try{
    $lDetail->Append();
$BizObject->Save();
    $lDetail->FindField("Seq")->value = 3;
echo "Posting Done <br>";
    $lDetail->FindField("ItemCode")->AsString = "ANT";
}catch (Exception $e) {
    $lDetail->FindField("Description")->AsString = "Sales Item B";
     echo 'Caught exception: ',  $e->getMessage(), "\n";
    #$lDetail->FindField("Account")->AsString = "500-000"; #If you wanted override the Sales Account Code
}
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->FindField("Qty")->AsFloat = 2;
    #$lDetail->FindField("DISC")->AsString = "5%+3"; #Optional(eg 5% plus 3 Discount)
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 100;
     $lDetail->FindField("Amount")->AsFloat = 200;
    $lDetail->FindField("TaxAmt")->AsFloat = 12;
    $lDetail->Post();
    $BizObject->Save();
    $BizObject->Close();
}
}


if (isset($_POST['BtnData']))
function PostDataPM(){
{
global $ComServer;
     try
     {
    $BizObject = $ComServer->BizObjects->Find("AR_PM");
        CheckLogin();
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
        PostData();
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
        echo date("d M Y h:i:s A") . " - Done";
     }
     $BizObject->New();
     finally
     $lMain->FindField("DocNo")->AsString = "--PM Test--";
     {
    $lMain->FindField("CODE")->AsString = "300-C0001"; #Customer Account
         $ComServer->Logout();
    $lMain->FindField("DocDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
         #free the object
    $lMain->FindField("PostDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
         $ComServer = null;
    $lMain->FindField("Description")->AsString = "Payment for A/c";
     }
    $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
    $lMain->FindField("ChequeNumber")->AsString = "";
    $lMain->FindField("BankCharge")->AsFloat = 0;
    $lMain->FindField("DocAmt")->AsFloat = 200.00;
    $lMain->FindField("Cancelled")->AsString = "F";
 
    #Knock Off IV 
     $V = array("IV", "--CS Test--");  #DocType, DocNo
      
     if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
         $lDetail->Edit();
         $lDetail->FindField("KOAmt")->AsFloat = 147.09; #Partial Knock off
         $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
}
     $BizObject->Save();
    $BizObject->Close();
}
}


?>
function PostDataCN(){
     <form method="post">          
global $ComServer;
        <input type="submit" name="BtnData"
                value="Add/Edit AR Customer"/>
$BizObject = $ComServer->BizObjects->Find("SL_CN");
     </form>  
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
</body>
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
</html>
 
    $BizObject->New();
</syntaxhighlight>
    $lMain->FindField("DocNo")->AsString = "--CN Test--";
|}
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
<div style="float: right;">   [[#top|[top]]]</div>
     $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
====Get Stock List====
    $lMain->FindField("Code")->AsString = "300-C0001";
{| class="mw-collapsible mw-collapsed wikitable"
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
! Get Stock List Script
    $lMain->FindField("Address1")->AsString = "";
|-
    $lMain->FindField("Address2")->AsString = "";
|
    $lMain->FindField("Address3")->AsString = "";
<syntaxhighlight lang="PHP">
    $lMain->FindField("Address4")->AsString = "";
<!DOCTYPE html>
    $lMain->FindField("Phone1")->AsString = "";
<html>
    $lMain->FindField("Description")->AsString = "Sales Returned";
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
    #For With Item Code
</head>
    $lDetail->Append();
<body>
    $lDetail->FindField("ItemCode")->AsString = "ANT";
 
    $lDetail->FindField("Description")->AsString = "Sales Item B";
<h1>SQL Acc SDK in PHP page</h1>
     $lDetail->FindField("Description2")->AsString = "Product Spoil"; #Reason
 
     $lDetail->FindField("Remark1")->AsString = "--CS Test--";  #Invoice No
<?php
    $lDetail->FindField("Remark2")->AsString = "20 Apr 2020";   #Invoice Date
echo "Updated 22 Jun 2020<br>";
     $lDetail->FindField("Qty")->AsFloat = 1;
#This action to Get Stock Item List
    $lDetail->FindField("Tax")->AsString = "SV";
 
     $lDetail->FindField("TaxRate")->AsString = "6%";
$ComServer = null;
     $lDetail->FindField("TaxInclusive")->value = 0;
 
     $lDetail->FindField("UnitPrice")->AsFloat = 100;
function CheckLogin()
     $lDetail->FindField("Amount")->AsFloat = 100;
{
    $lDetail->FindField("TaxAmt")->AsFloat = 6;
     global $ComServer;
    $lDetail->Post();
     $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
     $status = $ComServer->IsLogin();
    $BizObject->Save();
 
     $BizObject->Close();
     if ($status == true)
     {
        $ComServer->Logout();
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
      
}
}


function GetData(){
function PostKnockIVCN(){
global $ComServer;
global $ComServer;
     $lSQL = "SELECT A.*, B.UOM, B.RATE, B.REFCOST, B.REFPRICE, B.ISBASE FROM ST_ITEM A
     $BizObject = $ComServer->BizObjects->Find("AR_CN");
        INNER JOIN ST_ITEM_UOM B ON (A.CODE=B.CODE)  
    $lMain = $BizObject->DataSets->Find("MainDataSet");
WHERE A.ISACTIVE='T'
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff");
";
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
    #Find CN Number
 
    $lDocNo = "--CN Test--";
    if ($lDataSet->RecordCount > 0) {
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
$lDataSet->First();
    $BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$fc = $lDataSet->Fields->Count-1;
echo "<table>";
if ($lDocKey != null){
echo "<tr>";
        $BizObject->Open();
for ($x = 0; $x <= $fc; $x++) {
        $BizObject->Edit();
#Insert Header
        $lMain->Edit();
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
       
        #Knock Off IV       
        $V = array("IV", "--CS Test--"); #DocType, DocNo
       
        if ($lDetail->Locate("DocType;DocNo", $V, False, False)){
            $lDetail->Edit();
            $lDetail->FindField("KOAmt")->AsFloat = 100; #Partial Knock off
            $lDetail->FindField("KnockOff")->AsString = "T";
            $lDetail->Post();
}
}
echo "</tr>";
        $BizObject->Save();
        $BizObject->Close();
#Looping Dataset
}
while (! $lDataSet->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";
    }
    echo "</tr>";
$lDataSet->Next();
}
echo "</table>"."<br>";
}else {
    echo "Record Not Found";
    }
}
}


if (isset($_POST['BtnData']))
function PostDataCF(){
{
global $ComServer;
     try
     {
    $BizObject = $ComServer->BizObjects->Find("AR_CF");
         CheckLogin();
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
         GetData();
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
         echo date("d M Y h:i:s A")." - Done";
     }
    $BizObject->New();
     finally
    $lMain->FindField("DocNo")->AsString = "--CF Test--";
     {
    $lMain->FindField("CODE")->AsString = "300-C0001"; #Customer Account
         $ComServer->Logout();
    $lMain->FindField("DocDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
         #free the object
    $lMain->FindField("PostDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
         $ComServer = null;
    $lMain->FindField("Description")->AsString = "Payment for A/c";
    $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
    $lMain->FindField("ChequeNumber")->AsString = "";
    $lMain->FindField("BankCharge")->AsFloat = 0;
    $lMain->FindField("DocAmt")->AsFloat = 6;
    $lMain->FindField("Cancelled")->AsString = "F";
 
    #Knock Off CN
    $V = array("CN", "--CN Test--");  #DocType, DocNo
   
    if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
        $lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 4; #Partial Knock off
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
}
    $BizObject->Save();
    $BizObject->Close();
}
 
if (isset($_POST['BtnData']))
{
     try
     {
         CheckLogin();
         echo date("d M Y h:i:s A")." - Posting Cash Sales<br>";
        PostDataCS();
        echo date("d M Y h:i:s A")." - Posting Customer Payment<br>";
        PostDataPM();
        echo date("d M Y h:i:s A")." - Posting Sales Credit Note<br>";
        PostDataCN();
        echo date("d M Y h:i:s A")." - Posting Knock Off Sales Credit Note<br>";
        PostKnockIVCN();
        echo date("d M Y h:i:s A")." - Posting Customer Refund<br>";
        PostDataCF();
         echo date("d M Y h:i:s A")." - Posting Done";
     }
     finally
     {
         $ComServer->Logout();
         #free the object
         $ComServer = null;
     }
     }
}
}
Line 3,166: Line 3,335:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Get Stock list"/>  
                 value="Complete Post"/>  
     </form>  
     </form>  
</body>
</body>
Line 3,172: Line 3,341:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_IV====
====Get Invoice Next Number====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_IV Script  
! Get Invoice Next Number Script  
|-
|-
|  
|  
Line 3,182: Line 3,352:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 3,190: Line 3,357:


<?php
<?php
echo "Updated 24 Jun 2020<br>";
echo "Updated 01 May 2020<br>";
#This action to Post Customer Invoice
#This action to Get Next Number for Customer Invoice


$ComServer = null;
$ComServer = null;
Line 3,206: Line 3,373:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                       "ACC-0070.FDB"); #Database Name
                       "ACC-0082.FDB"); #Database Name
      
      
}
}


function PostData(){
function GetData(){
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("AR_IV");
    $lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
        INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY)
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
WHERE A.DOCTYPE='IV'
AND A.DESCRIPTION='Customer Invoice'
AND A.STATESET=1
";
    $BizObject->New();
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
    $lMain->FindField("DocKey")->value = -1;
    $lMain->FindField("DocNo")->AsString = "--IV Test--";
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("Description")->AsString = "Sales";
    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "500-000"; #Sales Account
    $lDetail->FindField("Description")->AsString = "Sales Item A";
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 24.63;


     $lDetail->DisableControls();
     if ($lDataSet->RecordCount > 0) {
    $lDetail->FindField("TaxInclusive")->value = 1;
$lDataSet->First();
    $lDetail->EnableControls();   
        $fmt = $lDataSet->FindField('Format')->AsString();
    $lDetail->Post();
        $NextNo = $lDataSet->FindField('NEXTNUMBER')->AsFloat();
    #For Tax Inclusive = False with override Tax Amount
        echo date("d M Y h:i:s A")." Format in SQLAcc : " . str_ireplace("d","s", $fmt)."<br>";
    $lDetail->Append();
        $fmt= str_ireplace(".","'0", $fmt);
    $lDetail->FindField("DtlKey")->value = -1;
        echo date("d M Y h:i:s A")." Format in PHP : " . str_ireplace("d","s", $fmt)."<br>";
    $lDetail->FindField("DocKey")->value = -1;
echo date("d M Y h:i:s A")." Output in PHP : " .sprintf($fmt,$NextNo)."<br>";
    $lDetail->FindField("Seq")->value = 2;
}else {
    $lDetail->FindField("Account")->AsString = "500-000";
     echo "Record Not Found";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
     }
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 94.43;
    $lDetail->FindField("TaxAmt")->AsFloat = 5.66;
    $lDetail->Post();
     $BizObject->Save();
     $BizObject->Close();
}
}


Line 3,268: Line 3,409:
     {
     {
         CheckLogin();
         CheckLogin();
PostData();
        GetData();
         echo date("d M Y h:i:s A")." - Done";
         echo date("d M Y h:i:s A")." - Done";
     }
     }
Line 3,282: Line 3,423:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Post Customer Invoice"/>  
                 value="Get Doc Number"/>  
     </form>  
     </form>  
</body>
</body>
Line 3,288: Line 3,429:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Outstanding Invoice List====
====Add & Edit AR_Customer====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Outstanding Invoice List Script  
! Add & Edit AR_Customer Script  
|-
|-
|  
|  
Line 3,298: Line 3,440:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 3,306: Line 3,445:


<?php
<?php
echo "Updated 24 Jun 2020<br>";
echo "Updated 11 Jun 2020<br>";
#This action to Get Outstanding Invoice List


$ComServer = null;
$ComServer = null;
Line 3,322: Line 3,460:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF", #DCF file
                       "C:\\eStream\\SQLAccounting\\Share\\Default.DCF", #DCF File
                       "ACC-0024.FDB"); #Database Name
                       "ACC-0035.FDB"); #Database Name
      
      
}
}


function GetData(){
function PostData(){
global $ComServer;
global $ComServer;
     $lSQL = "SELECT A.*, B.COMPANYNAME, (A.DOCAMT-A.PAYMENTAMT) OUTSTANDING  FROM AR_IV A
     $BizObject = $ComServer->BizObjects->Find("AR_Customer");
        INNER JOIN AR_CUSTOMER B ON (A.CODE=B.CODE)  
    $lMain = $BizObject->DataSets->Find("MainDataSet");
WHERE (A.DOCAMT-A.PAYMENTAMT)<>0
$lDtl  = $BizObject->DataSets->Find("cdsBranch");
AND CANCELLED='F'
   
";
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
if ($lDocKey == null){
        $BizObject->New();
        $lMain->FindField("CODE")->value = "FAIRY";
        $lMain->FindField("CompanyName")->value = "FAIRY TAIL";
        $lDtl->Edit(); #For 1St Branch
        $lDtl->FindField("BranchName")->AsString  = "BILLING";
        $lDtl->FindField("Address1")->AsString    = "Address1";
        $lDtl->FindField("Address2")->AsString    = "Address2";
        $lDtl->FindField("Address3")->AsString    = "Address3";
        $lDtl->FindField("Address4")->AsString    = "Address4";
        $lDtl->FindField("Attention")->AsString  = "Attention";
        $lDtl->FindField("Phone1")->AsString      = "Phone1";
        $lDtl->FindField("Fax1")->AsString        = "Fax1";
        $lDtl->FindField("Email")->AsString      = "EmailAddress";
        $lDtl->Post();


    if ($lDataSet->RecordCount > 0) {
        $lDtl->Append(); #For 2nd Branch
$lDataSet->First();
        $lDtl->FindField("BranchName")->AsString  = "Branch1";
$fc = $lDataSet->Fields->Count-1;
        $lDtl->FindField("Address1")->AsString    = "DAddress1";
echo "<table>";
        $lDtl->FindField("Address2")->AsString    = "DAddress2";
echo "<tr>";
        $lDtl->FindField("Address3")->AsString    = "DAddress3";
for ($x = 0; $x <= $fc; $x++) {
        $lDtl->FindField("Address4")->AsString    = "DAddress4"; 
#Insert Header
        $lDtl->FindField("Attention")->AsString  = "DAttention";
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
        $lDtl->FindField("Phone1")->AsString      = "DPhone1";
        $lDtl->FindField("Fax1")->AsString        = "DFax1";
        $lDtl->FindField("Email")->AsString      = "DEmailAddress";
        $lDtl->Post();
} else{
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->FindField("CompanyName")->value = "FAIRY TAIL WIZARD";
$r = $lDtl->RecordCount();
$x = 1;
while ($x <= $r ){
$lDtl->First();
            $lDtl->Delete();
$x++;
}
}
echo "</tr>";
#Looping Dataset
        #Insert back with new Information
while (! $lDataSet->Eof()){
        $lDtl->Edit(); #For 1St Branch
echo "<tr>";
        $lDtl->FindField("BranchName")->AsString  = "BILLING"; #Make sure this always same as b4 delete data
    for ($x = 0; $x <= $fc; $x++) {
        $lDtl->FindField("Address1")->AsString    = "New Address1";
$lFN = $lDataSet->Fields->Items($x)->FieldName();
        $lDtl->FindField("Address2")->AsString    = "New Address2";
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";  
        $lDtl->FindField("Address3")->AsString    = "New Address3";
    }
        $lDtl->FindField("Address4")->AsString    = "New Address4";
    echo "</tr>";
        $lDtl->FindField("Attention")->AsString  = "New Attention"; 
$lDataSet->Next();
        $lDtl->FindField("Phone1")->AsString      = "New Phone1";
}
        $lDtl->FindField("Fax1")->AsString        = "New Fax1";
echo "</table>"."<br>";
        $lDtl->FindField("Email")->AsString      = "New EmailAddress";
}else {
        $lDtl->Post();
     echo "Record Not Found";
 
    }
        $lDtl->Append(); #For 2nd Branch
        $lDtl->FindField("BranchName")->AsString  = "Branch1"; #Make sure this always same as b4 delete data
        $lDtl->FindField("Address1")->AsString    = "New DAddress1";
        $lDtl->FindField("Address2")->AsString    = "New DAddress2";
        $lDtl->FindField("Address3")->AsString    = "New DAddress3";
        $lDtl->FindField("Address4")->AsString   = "New DAddress4";
        $lDtl->FindField("Attention")->AsString  = "New DAttention"; 
        $lDtl->FindField("Phone1")->AsString      = "New DPhone1";
        $lDtl->FindField("Fax1")->AsString        = "New DFax1";
        $lDtl->FindField("Email")->AsString      = "New DEmailAddress";
        $lDtl->Post();
}
try{
$BizObject->Save();
echo "Posting Done <br>";
}catch (Exception $e) {
     echo 'Caught exception: ',  $e->getMessage(), "\n";
}
}
}


Line 3,370: Line 3,556:
     {
     {
         CheckLogin();
         CheckLogin();
         GetData();
         PostData();
         echo date("d M Y h:i:s A")." - Done";
         echo date("d M Y h:i:s A") . " - Done";
     }
     }
     finally
     finally
Line 3,381: Line 3,567:
}
}


?>  
?>
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Get Outstanding Invoice List"/>  
                 value="Add/Edit AR Customer"/>  
     </form>  
     </form>  
</body>
</body>
</html>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
 
====Get Stock List====
====Stock Month End - Weighted Average====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Stock Month End - Weighted Average Script  
! Get Stock List Script  
|-
|-
|  
|  
Line 3,408: Line 3,594:


<?php
<?php
echo "Updated 01 Dec 2021<br>";
echo "Updated 22 Jun 2020<br>";
 
#This action to Get Stock Item List


$ComServer = null;
$ComServer = null;
Line 3,430: Line 3,616:


function GetData(){
function GetData(){
#Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
global $ComServer;
global $ComServer;
     $lSQL = "SELECT A.ItemCode, A.Location, A.Batch, MAX(B.Seq) AS Seq, 2 AS CostingMethod
     $lSQL = "SELECT A.*, B.UOM, B.RATE, B.REFCOST, B.REFPRICE, B.ISBASE FROM ST_ITEM A
        FROM ST_TR A INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO)  
        INNER JOIN ST_ITEM_UOM B ON (A.CODE=B.CODE)  
WHERE A.PostDate<='31 Jul 2020'
WHERE A.ISACTIVE='T'
AND A.ITEMCODE='Adj_Voucher'
GROUP BY A.ItemCode, A.Location, A.Batch
";
";
$lDataSet1 = $ComServer->DBManager->NewDataSet($lSQL);
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
$Seq = "";
$lDataSet1->First();
while (! $lDataSet1->Eof()){
$Seq = $Seq.$lDataSet1->FindField("SEQ")->AsString .",";
$lDataSet1->Next();
}


    $lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.UTDQty, B.UTDCost FROM ST_TR A
     if ($lDataSet->RecordCount > 0) {
        INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO)
$lDataSet->First();
WHERE A.PostDate<='31 Jul 2020'
$fc = $lDataSet->Fields->Count-1;
AND A.ITEMCODE='Adj_Voucher'
AND B.SEQ IN (".substr_replace($Seq ,"",-1).")
AND B.UTDQty<>0
ORDER BY A.ItemCode, A.Location, A.Batch
";
$lDataSet2 = $ComServer->DBManager->NewDataSet($lSQL);
     if ($lDataSet2->RecordCount > 0) {
$lDataSet2->First();
$fc = $lDataSet2->Fields->Count-1;
echo "<table>";
echo "<table>";
echo "<tr>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
#Insert Header
echo "<td>".$lDataSet2->Fields->Items($x)->FieldName()."</td>";  
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
}
}
echo "</tr>";
echo "</tr>";
#Looping Dataset
#Looping Dataset
while (! $lDataSet2->Eof()){
while (! $lDataSet->Eof()){
echo "<tr>";
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet2->Fields->Items($x)->FieldName();
$lFN = $lDataSet->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet2->FindField($lFN)->AsString()."</td>";  
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";  
    }
    }
    echo "</tr>";
    echo "</tr>";
$lDataSet2->Next();
$lDataSet->Next();
}
}
echo "</table>"."<br>";
echo "</table>"."<br>";
Line 3,506: Line 3,671:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Month End - WA"/>  
                 value="Get Stock list"/>  
     </form>  
     </form>  
</body>
</body>
Line 3,514: Line 3,679:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Stock Month End - FIFO====
====AR_IV====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Stock Month End - FIFO Script  
! AR_IV Script  
|-
|-
|  
|  
Line 3,530: Line 3,695:


<?php
<?php
echo "Updated 16 Jul 2020<br>";
echo "Updated 18 May 2024<br>";
#This action to Get Outstanding Invoice List
#This action to Post Customer Invoice


$ComServer = null;
$ComServer = null;
Line 3,547: Line 3,712:
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0024.FDB"); #Database Name
                       "ACC-0070.FDB"); #Database Name
      
      
}
}


function GetData(){
function PostData(){
#Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
global $ComServer;
global $ComServer;
    $lSQL = "SELECT  A.ItemCode, A.Location, A.Batch, MAX(B.Seq) AS Seq, 1 AS CostingMethod
$BizObject = $ComServer->BizObjects->Find("AR_IV");
        FROM ST_TR A INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO)  
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
WHERE A.PostDate<='31 Jul 2020'
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
AND A.ItemCode IN ('ANT', 'COVER', 'BOM')
GROUP BY A.ItemCode, A.Location, A.Batch
";
$lDataSet1 = $ComServer->DBManager->NewDataSet($lSQL);
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--IV Test--";
$Seq = "";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
$lDataSet1->First();
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
while (! $lDataSet1->Eof()){
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
$Seq = $Seq.$lDataSet1->FindField("SEQ")->AsString .",";
    $lMain->FindField("Description")->AsString = "Sales";
$lDataSet1->Next();
}
    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "500-000"; #Sales Account
    $lDetail->FindField("Description")->AsString = "Sales Item A";
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 24.63;


     $lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.QTY, B.COST FROM ST_TR A
     $lDetail->DisableControls();
        INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO)
     $lDetail->FindField("TaxInclusive")->value = 1;
WHERE B.COSTTYPE='U'
    $lDetail->EnableControls();  
AND A.PostDate<='31 Jul 2020'
    $lDetail->Post();
AND B.SEQ IN (".substr_replace($Seq ,"",-1).")
AND A.ItemCode IN ('ANT1.0', 'COVER', 'BOM')
AND B.Qty<>0
ORDER BY A.ItemCode, A.Location, A.Batch
";
$lDataSet2 = $ComServer->DBManager->NewDataSet($lSQL);
     if ($lDataSet2->RecordCount > 0) {
$lDataSet2->First();
$fc = $lDataSet2->Fields->Count-1;
echo "<table>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet2->Fields->Items($x)->FieldName()."</td>";
}
echo "</tr>";
#Looping Dataset
while (! $lDataSet2->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet2->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet2->FindField($lFN)->AsString()."</td>";  
    }
    echo "</tr>";
$lDataSet2->Next();
}
echo "</table>"."<br>";
}else {
    echo "Record Not Found";
    }
#FIFO Detail Key to link with $lDataSet2 & $lDataSet3 is TRANSNO
    #For Tax Inclusive = False with override Tax Amount
$Seq = "";
    $lDetail->Append();
$lDataSet2->First();
    $lDetail->FindField("Seq")->value = 2;
while (! $lDataSet2->Eof()){
    $lDetail->FindField("Account")->AsString = "500-000";
$Seq = $Seq.$lDataSet2->FindField("TRANSNO")->AsString .",";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
$lDataSet2->Next();
    $lDetail->FindField("Tax")->AsString = "SV";
}
    $lDetail->FindField("TaxRate")->AsString = "6%";
 
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lSQL = "SELECT  TransNo, Cost, SUM(Qty) AS Qty, MIN(CostSeq) AS Seq FROM ST_TR_FIFO
    $lDetail->FindField("Amount")->AsFloat = 94.43;
        WHERE CostType='B'
    $lDetail->FindField("TaxAmt")->AsFloat = 5.66;
AND TRANSNO IN (".substr_replace($Seq ,"",-1).")
    $lDetail->Post();
GROUP BY TransNo, Cost
";
    $BizObject->Save();
     $BizObject->Close();
$lDataSet3 = $ComServer->DBManager->NewDataSet($lSQL);
 
    if ($lDataSet3->RecordCount > 0) {
$lDataSet3->First();
$fc = $lDataSet3->Fields->Count-1;
echo "<table>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet3->Fields->Items($x)->FieldName()."</td>";  
}
echo "</tr>";
#Looping Dataset
while (! $lDataSet3->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet3->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet3->FindField($lFN)->AsString()."</td>";  
    }
    echo "</tr>";
$lDataSet3->Next();
}
echo "</table>"."<br>";
}else {
     echo "Record Not Found";
    }
}
}


Line 3,657: Line 3,768:
     {
     {
         CheckLogin();
         CheckLogin();
        GetData();
PostData();
         echo date("d M Y h:i:s A")." - Done";
         echo date("d M Y h:i:s A")." - Done";
     }
     }
     finally
     finally
     {
     {
         #$ComServer->Logout();
         $ComServer->Logout();
         #free the object
         #free the object
         $ComServer = null;
         $ComServer = null;
Line 3,671: Line 3,782:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Month End - FIFO"/>  
                 value="Post Customer Invoice"/>  
     </form>  
     </form>  
</body>
</body>
Line 3,679: Line 3,790:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Add & Edit Stock Item====
====Get Outstanding Invoice List====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Add & Edit Stock Item Script  
! Get Outstanding Invoice List Script  
|-
|-
|  
|  
Line 3,687: Line 3,798:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 3,692: Line 3,806:


<?php
<?php
echo "Updated 05 Aug 2020<br>";
echo "Updated 24 Jun 2020<br>";
#This action to Get Outstanding Invoice List
 
$ComServer = null;
$ComServer = null;


Line 3,711: Line 3,827:
}
}


function PostData(){
function GetData(){
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("ST_ITEM");
    $lSQL = "SELECT A.*, B.COMPANYNAME, (A.DOCAMT-A.PAYMENTAMT) OUTSTANDING  FROM AR_IV A
    $lMain = $BizObject->DataSets->Find("MainDataSet");
        INNER JOIN AR_CUSTOMER B ON (A.CODE=B.CODE)  
    $lUOM  = $BizObject->DataSets->Find("cdsUOM");
WHERE (A.DOCAMT-A.PAYMENTAMT)<>0
$lBarcode = $BizObject->DataSets->Find("cdsBarcode");  
AND CANCELLED='F'
";
$lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY-PHP");
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);


if ($lDocKey == null){
    if ($lDataSet->RecordCount > 0) {
        $BizObject->New();
$lDataSet->First();
        $lMain->FindField("CODE")->AsString = "FAIRY-PHP";
$fc = $lDataSet->Fields->Count-1;
        $lMain->FindField("DESCRIPTION")->AsString = "FAIRY TAIL";
echo "<table>";
        $lMain->FindField("STOCKGROUP")->AsString = "DEFAULT";
echo "<tr>";
        $lMain->FindField("STOCKCONTROL")->AsString = "T";
for ($x = 0; $x <= $fc; $x++) {
        $lMain->FindField("ISACTIVE")->AsString = "T";
#Insert Header
 
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
        $lUOM->Edit(); #For 1St UOM
        $lUOM->FindField("UOM")->AsString = "PCS";
        $lUOM->FindField("Rate")->AsFloat = 1;
        $lUOM->FindField("RefCost")->AsFloat = 10.2;
        $lUOM->FindField("RefPrice")->AsFloat = 25;
        $lUOM->Post();
 
        $lUOM->Append(); #For 2nd UOM
        $lUOM->FindField("UOM")->AsString = "CTN";
        $lUOM->FindField("Rate")->AsFloat = 12;
        $lUOM->FindField("RefCost")->AsFloat = 102;
        $lUOM->FindField("RefPrice")->AsFloat = 240;
        $lUOM->Post();
 
        $lBarcode->Append(); #For 1st UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "123456789";
$lBarcode->FindField("UOM")->AsString = "PCS";
        $lBarcode->Post();
        $lBarcode->Append(); #For 2nd UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "987654321";
$lBarcode->FindField("UOM")->AsString = "CTN";
        $lBarcode->Post();
} else{
        $BizObject->Params->Find("Dockey")->AsString = $lDocKey;
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->FindField("DESCRIPTION")->AsString = "FAIRY TAIL WIZARD";
$r = $lUOM->RecordCount();
$x = 1;
while ($x <= $r ){
$lUOM->First();
            $lUOM->Delete();
$x++;
}
}
echo "</tr>";
$r = $lBarcode->RecordCount();
#Looping Dataset
$x = 1;
while (! $lDataSet->Eof()){
while ($x <= $r ){
echo "<tr>";
$lBarcode->First();
    for ($x = 0; $x <= $fc; $x++) {
            $lBarcode->Delete();
$lFN = $lDataSet->Fields->Items($x)->FieldName();
$x++;
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";  
}
    }
    echo "</tr>";
        $lUOM->Append(); #For 1St UOM
$lDataSet->Next();
        $lUOM->FindField("UOM")->AsString = "PCS"; #Make sure this always same as b4 delete data
}
        $lUOM->FindField("Rate")->AsFloat = 1; #Make sure this always same as b4 delete data
echo "</table>"."<br>";
        $lUOM->FindField("RefCost")->AsFloat = 22.3;
}else {
        $lUOM->FindField("RefPrice")->AsFloat = 52;
     echo "Record Not Found";
        $lUOM->Post();
     }
 
        $lUOM->Append(); #For 2nd UOM
        $lUOM->FindField("UOM")->AsString = "CTN"; #Make sure this always same as b4 delete data
        $lUOM->FindField("Rate")->AsFloat = 12; #Make sure this always same as b4 delete data
        $lUOM->FindField("RefCost")->AsFloat = 102.5;
        $lUOM->FindField("RefPrice")->AsFloat = 260.45;
        $lUOM->Post();
        $lBarcode->Append(); #For 1st UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "456321789";
$lBarcode->FindField("UOM")->AsString = "PCS";
        $lBarcode->Post();
        $lBarcode->Append(); #For 2nd UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "321456987";
$lBarcode->FindField("UOM")->AsString = "CTN";
        $lBarcode->Post();
}
try{
        $BizObject->Save();
        $BizObject->Close();
}catch (Exception $e) {
     echo 'Caught exception: ',  $e->getMessage(), "\n";
     }
}
}


if (isset($_POST['BtnData']))
if (isset($_POST['BtnData']))
Line 3,813: Line 3,870:
     {
     {
         CheckLogin();
         CheckLogin();
         echo date("d M Y h:i:s A")." - Begin Posting Stock Item<br>";
         GetData();
         PostData();
         echo date("d M Y h:i:s A")." - Done";
echo date("d M Y h:i:s A")." - Done<br>";
     }
     }
     finally
     finally
Line 3,828: Line 3,884:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Add & Edit Stock Item"/>  
                 value="Get Outstanding Invoice List"/>  
     </form>  
     </form>  
</body>
</body>
Line 3,836: Line 3,892:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Add Stock Issue====
====Stock Month End - Weighted Average====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Add Stock Issue Script  
! Stock Month End - Weighted Average Script  
|-
|-
|  
|  
Line 3,844: Line 3,900:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 3,849: Line 3,908:


<?php
<?php
echo "Updated 21 Oct 2020<br>";
echo "Updated 01 Dec 2021<br>";
 
 
$ComServer = null;
$ComServer = null;


Line 3,863: Line 3,924:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0024.FDB"); #Database Name
                       "ACC-0024.FDB"); #Database Name
      
      
}
}


function CheckLogin1()
function GetData(){
{
#Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
   
}
 
function PostData(){
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("ST_IS");
    $lSQL = "SELECT A.ItemCode, A.Location, A.Batch,  MAX(B.Seq) AS Seq, 2 AS CostingMethod
    $lMain = $BizObject->DataSets->Find("MainDataSet");
        FROM ST_TR A INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO)  
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail");  
WHERE A.PostDate<='31 Jul 2020'
AND A.ITEMCODE='Adj_Voucher'
GROUP BY A.ItemCode, A.Location, A.Batch
";
    $BizObject->New();
$lDataSet1 = $ComServer->DBManager->NewDataSet($lSQL);
    $lMain->FindField("DocKey")->value = -1;
    $lMain->FindField("DocNo")->AsString = "--IS Test--";
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("Description")->AsString = "Stock Issue";
    #Insert Data - Detail
$Seq = "";
    $lDetail->Append();
$lDataSet1->First();
    $lDetail->FindField("DtlKey")->value = -1;
while (! $lDataSet1->Eof()){
    $lDetail->FindField("DocKey")->value = -1;
$Seq = $Seq.$lDataSet1->FindField("SEQ")->AsString .",";
    $lDetail->FindField("Seq")->value = 1;
$lDataSet1->Next();
    $lDetail->FindField("ItemCode")->AsString = "ANT";
}
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lDetail->FindField("UOM")->AsString = "BOX";
    $lDetail->Post();


     $lDetail->Append();
     $lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.UTDQty, B.UTDCost FROM ST_TR A
     $lDetail->FindField("DtlKey")->value = -1;
        INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO)
    $lDetail->FindField("DocKey")->value = -1;
WHERE A.PostDate<='31 Jul 2020'
    $lDetail->FindField("Seq")->value = 2;
AND A.ITEMCODE='Adj_Voucher'
    $lDetail->FindField("ItemCode")->AsString = "N-CHARGER";
AND B.SEQ IN (".substr_replace($Seq ,"",-1).")
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER";
AND B.UTDQty<>0
    $lDetail->FindField("Qty")->AsFloat = 5;
ORDER BY A.ItemCode, A.Location, A.Batch
    $lDetail->FindField("UOM")->AsString = "UNIT";
";
    $lDetail->Post();
$lDataSet2 = $ComServer->DBManager->NewDataSet($lSQL);
    $BizObject->Save();
    $BizObject->Close();
     if ($lDataSet2->RecordCount > 0) {
$lDataSet2->First();
try{
$fc = $lDataSet2->Fields->Count-1;
        $BizObject->Save();
echo "<table>";
        $BizObject->Close();
echo "<tr>";
}catch (Exception $e) {
for ($x = 0; $x <= $fc; $x++) {
     echo 'Caught exception: ',  $e->getMessage(), "\n";
#Insert Header
     }
echo "<td>".$lDataSet2->Fields->Items($x)->FieldName()."</td>";  
}
echo "</tr>";
#Looping Dataset
while (! $lDataSet2->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet2->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet2->FindField($lFN)->AsString()."</td>";  
    }
    echo "</tr>";
$lDataSet2->Next();
}
echo "</table>"."<br>";
}else {
     echo "Record Not Found";
     }
}
}


if (isset($_POST['BtnData']))
if (isset($_POST['BtnData']))
Line 3,926: Line 3,991:
     try
     try
     {
     {
         CheckLogin1();
         CheckLogin();
         echo date("d M Y h:i:s A")." - Begin Posting<br>";
         GetData();
         PostData();
         echo date("d M Y h:i:s A")." - Done";
echo date("d M Y h:i:s A")." - Done<br>";
     }
     }
     finally
     finally
Line 3,942: Line 4,006:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Add Stock Issue"/>  
                 value="Month End - WA"/>  
     </form>  
     </form>  
</body>
</body>
Line 3,950: Line 4,014:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Add Points====
====Stock Month End - FIFO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Add Points Script  
! Stock Month End - FIFO Script  
|-
|-
|  
|  
Line 3,958: Line 4,022:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 3,963: Line 4,030:


<?php
<?php
echo "Updated 30 Oct 2020<br>";
echo "Updated 16 Jul 2020<br>";
#This action to Get Outstanding Invoice List
 
$ComServer = null;
$ComServer = null;


Line 3,982: Line 4,051:
}
}


function PostData(){
function GetData(){
#Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("Sales.Points.OPF");
    $lSQL = "SELECT  A.ItemCode, A.Location, A.Batch, MAX(B.Seq) AS Seq, 1 AS CostingMethod
    $lMain = $BizObject->DataSets->Find("Main"); #lMain contains master data
        FROM ST_TR A INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO)
WHERE A.PostDate<='31 Jul 2020'
AND A.ItemCode IN ('ANT', 'COVER', 'BOM')
GROUP BY A.ItemCode, A.Location, A.Batch
";
$lDataSet1 = $ComServer->DBManager->NewDataSet($lSQL);
    $BizObject->New();
$Seq = "";
    $lMain->FindField("DocKey")->value = -1;
$lDataSet1->First();
    $lMain->FindField("DocNo")->AsString = "--Point Test--";
while (! $lDataSet1->Eof()){
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
$Seq = $Seq.$lDataSet1->FindField("SEQ")->AsString .",";
     $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
$lDataSet1->Next();
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
}
$lMain->FindField("DESCRIPTION")->AsString = "Points Earn";
 
    $lMain->FindField("FromDocType")->AsString = "CS";
    $lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.QTY, B.COST FROM ST_TR A
$lMain->FindField("FromDocNo")->AsString = "CS-01234";
        INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO)
$lMain->FindField("FROMDOCAMT")->AsFloat = 100.10;
WHERE B.COSTTYPE='U'
$lMain->FindField("Points")->AsFloat = 10;
AND A.PostDate<='31 Jul 2020'
AND B.SEQ IN (".substr_replace($Seq ,"",-1).")
AND A.ItemCode IN ('ANT1.0', 'COVER', 'BOM')
AND B.Qty<>0
ORDER BY A.ItemCode, A.Location, A.Batch
";
$lDataSet2 = $ComServer->DBManager->NewDataSet($lSQL);
     if ($lDataSet2->RecordCount > 0) {
$lDataSet2->First();
$fc = $lDataSet2->Fields->Count-1;
echo "<table>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet2->Fields->Items($x)->FieldName()."</td>";
}
echo "</tr>";
#Looping Dataset
while (! $lDataSet2->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet2->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet2->FindField($lFN)->AsString()."</td>";
    }
    echo "</tr>";
$lDataSet2->Next();
}
echo "</table>"."<br>";
}else {
    echo "Record Not Found";
    }
try{
#FIFO Detail Key to link with $lDataSet2 & $lDataSet3 is TRANSNO
$BizObject->Save();
$Seq = "";
}catch (Exception $e) {
$lDataSet2->First();
echo 'Caught exception: ',  $e->getMessage(), "\n";
while (! $lDataSet2->Eof()){
    }
$Seq = $Seq.$lDataSet2->FindField("TRANSNO")->AsString .",";
}
$lDataSet2->Next();
}


    $lSQL = "SELECT  TransNo, Cost, SUM(Qty) AS Qty, MIN(CostSeq) AS Seq FROM ST_TR_FIFO
        WHERE CostType='B'
AND TRANSNO IN (".substr_replace($Seq ,"",-1).")
GROUP BY TransNo, Cost
";
$lDataSet3 = $ComServer->DBManager->NewDataSet($lSQL);
    if ($lDataSet3->RecordCount > 0) {
$lDataSet3->First();
$fc = $lDataSet3->Fields->Count-1;
echo "<table>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet3->Fields->Items($x)->FieldName()."</td>";
}
echo "</tr>";
#Looping Dataset
while (! $lDataSet3->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet3->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet3->FindField($lFN)->AsString()."</td>";
    }
    echo "</tr>";
$lDataSet3->Next();
}
echo "</table>"."<br>";
}else {
    echo "Record Not Found";
    }
}


if (isset($_POST['BtnData']))
if (isset($_POST['BtnData']))
Line 4,013: Line 4,157:
     {
     {
         CheckLogin();
         CheckLogin();
         echo date("d M Y h:i:s A")." - Posting Point<br>";
        GetData();
        PostData();
         echo date("d M Y h:i:s A")." - Done";
     }
     }
     finally
     finally
     {
     {
         $ComServer->Logout();
         #$ComServer->Logout();
         #free the object
         #free the object
         $ComServer = null;
         $ComServer = null;
Line 4,027: Line 4,171:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Post Point"/>  
                 value="Month End - FIFO"/>  
     </form>  
     </form>  
</body>
</body>
Line 4,035: Line 4,179:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_CN====
====Add & Edit Stock Item====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_CN Script  
! Add & Edit Stock Item Script  
|-
|-
|  
|  
Line 4,043: Line 4,187:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 4,051: Line 4,192:


<?php
<?php
echo "Updated 12 Dec 2020<br>";
echo "Updated 05 Aug 2020<br>";
#This action to Post Customer Credit Note
 
$ComServer = null;
$ComServer = null;


Line 4,068: Line 4,207:
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0040.FDB"); #Database Name
                       "ACC-0024.FDB"); #Database Name
      
      
}
}
Line 4,075: Line 4,214:
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("AR_CN");
$BizObject = $ComServer->BizObjects->Find("ST_ITEM");
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
     $lMain = $BizObject->DataSets->Find("MainDataSet");  
     $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
     $lUOM  = $BizObject->DataSets->Find("cdsUOM");  
$lKO = $BizObject->DataSets->Find("cdsKnockOff");
$lBarcode = $BizObject->DataSets->Find("cdsBarcode");  
    $BizObject->New();
$lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY-PHP");
    $lMain->FindField("DocKey")->value = -1;
 
    $lMain->FindField("DocNo")->AsString = "--CN Test1--";
if ($lDocKey == null){
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
        $BizObject->New();
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
        $lMain->FindField("CODE")->AsString = "FAIRY-PHP";
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
        $lMain->FindField("DESCRIPTION")->AsString = "FAIRY TAIL";
    $lMain->FindField("Description")->AsString = "Sales";
        $lMain->FindField("STOCKGROUP")->AsString = "DEFAULT";
        $lMain->FindField("STOCKCONTROL")->AsString = "T";
    #Insert Data - Detail
        $lMain->FindField("ISACTIVE")->AsString = "T";
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "510-000"; #Sales Return Account
    $lDetail->FindField("Description")->AsString = "Return Item A";
    $lDetail->FindField("Tax")->AsString = "";
    $lDetail->FindField("TaxRate")->AsString = "";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 0;
$lDetail->Post();


    $V = array("IV", "IV-00003"); #DocType, DocNo
        $lUOM->Edit(); #For 1St UOM
          
         $lUOM->FindField("UOM")->AsString = "PCS";
    if ($lKO->Locate("DocType;DocNo", $V, False, False)){
         $lUOM->FindField("Rate")->AsFloat = 1;
        $lKO->Edit();
         $lUOM->FindField("RefCost")->AsFloat = 10.2;
         $lKO->FindField("KOAmt")->AsFloat = 100; #Partial Knock off
         $lUOM->FindField("RefPrice")->AsFloat = 25;
         $lKO->FindField("KnockOff")->AsString = "T";
        $lUOM->Post();
         $lKO->Post();
}
    $BizObject->Save();
    $BizObject->Close();
}


if (isset($_POST['BtnData']))
        $lUOM->Append(); #For 2nd UOM
{
         $lUOM->FindField("UOM")->AsString = "CTN";
    try
        $lUOM->FindField("Rate")->AsFloat = 12;
    {
         $lUOM->FindField("RefCost")->AsFloat = 102;
         CheckLogin();
         $lUOM->FindField("RefPrice")->AsFloat = 240;
PostData();
         $lUOM->Post();
         echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
         $ComServer->Logout();
        #free the object
         $ComServer = null;
    }
}


?>  
        $lBarcode->Append(); #For 1st UOM Barcode
    <form method="post">          
        $lBarcode->FindField("BARCODE")->AsString = "123456789";
         <input type="submit" name="BtnData"
$lBarcode->FindField("UOM")->AsString = "PCS";
                value="Post Customer Credit Note"/>  
        $lBarcode->Post();
    </form>  
</body>
        $lBarcode->Append(); #For 2nd UOM Barcode
</html>
         $lBarcode->FindField("BARCODE")->AsString = "987654321";
</syntaxhighlight>
$lBarcode->FindField("UOM")->AsString = "CTN";
|}
        $lBarcode->Post();
<div style="float: right;">   [[#top|[top]]]</div>
} else{
        $BizObject->Params->Find("Dockey")->AsString = $lDocKey;
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->FindField("DESCRIPTION")->AsString = "FAIRY TAIL WIZARD";
$r = $lUOM->RecordCount();
$x = 1;
while ($x <= $r ){
$lUOM->First();
            $lUOM->Delete();
$x++;
}
$r = $lBarcode->RecordCount();
$x = 1;
while ($x <= $r ){
$lBarcode->First();
            $lBarcode->Delete();
$x++;
}
        $lUOM->Append(); #For 1St UOM
        $lUOM->FindField("UOM")->AsString = "PCS"; #Make sure this always same as b4 delete data
        $lUOM->FindField("Rate")->AsFloat = 1; #Make sure this always same as b4 delete data
        $lUOM->FindField("RefCost")->AsFloat = 22.3;
        $lUOM->FindField("RefPrice")->AsFloat = 52;
        $lUOM->Post();


====SO to DO====
        $lUOM->Append(); #For 2nd UOM
{| class="mw-collapsible mw-collapsed wikitable"
        $lUOM->FindField("UOM")->AsString = "CTN"; #Make sure this always same as b4 delete data
! SO to DO Script  
        $lUOM->FindField("Rate")->AsFloat = 12; #Make sure this always same as b4 delete data
|-
        $lUOM->FindField("RefCost")->AsFloat = 102.5;
|  
        $lUOM->FindField("RefPrice")->AsFloat = 260.45;
<syntaxhighlight lang="PHP">
        $lUOM->Post();
<!DOCTYPE html>
<html>
        $lBarcode->Append(); #For 1st UOM Barcode
<head>
        $lBarcode->FindField("BARCODE")->AsString = "456321789";
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
$lBarcode->FindField("UOM")->AsString = "PCS";
</head>
        $lBarcode->Post();
<body>
 
        $lBarcode->Append(); #For 2nd UOM Barcode
<h1>SQL Acc SDK in PHP page</h1>
        $lBarcode->FindField("BARCODE")->AsString = "321456987";
 
$lBarcode->FindField("UOM")->AsString = "CTN";
<?php
        $lBarcode->Post();
echo "Updated 15 Jan 2021<br>";
}
#This action to
#01. Get Oustanding SO
try{
#02. Post To DO
        $BizObject->Save();
        $BizObject->Close();
}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }
}
 
 
if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting Stock Item<br>";
        PostData();
echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Add & Edit Stock Item"/>
    </form>
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
 
====Add Stock Issue====
{| class="mw-collapsible mw-collapsed wikitable"
! Add Stock Issue Script  
|-
|  
<syntaxhighlight lang="PHP">
<!DOCTYPE html>
<html>
<body>
 
<h1>SQL Acc SDK in PHP page</h1>


<?php
echo "Updated 18 May 2024<br>";
$ComServer = null;
$ComServer = null;


Line 4,176: Line 4,363:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0024.FDB"); #Database Name
                       "ACC-0024.FDB"); #Database Name
   
}
function CheckLogin1()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
      
      
}
}
Line 4,184: Line 4,378:
global $ComServer;
global $ComServer;
     $lSQL = "SELECT Dockey, DocNo,Code, CompanyName, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount,
$BizObject = $ComServer->BizObjects->Find("ST_IS");
            COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM (
     $lMain = $BizObject->DataSets->Find("MainDataSet");
            SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName,
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail");
            B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount,
            C.Qty XFQty FROM SL_SO A
    $BizObject->New();
            INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY)
    $lMain->FindField("DocKey")->value = -1;
            LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY
    $lMain->FindField("DocNo")->AsString = "--IS Test--";
                                      AND C.FROMDOCTYPE='SO')
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
            WHERE A.DOCNO='SO-00140')
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
            GROUP BY Dockey, DocNo, Code, CompanyName, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount
    $lMain->FindField("Description")->AsString = "Stock Issue";
HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0
";
    #Insert Data - Detail
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lDetail->FindField("UOM")->AsString = "BOX";
    $lDetail->Post();
 
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("ItemCode")->AsString = "N-CHARGER";
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER";
    $lDetail->FindField("Qty")->AsFloat = 5;
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->Post();
    $BizObject->Save();
    $BizObject->Close();
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL); #Get Oustanding SO Qty
try{
        $BizObject->Save();
        $BizObject->Close();
}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }
}


    if ($lDataSet->RecordCount > 0) {
$BizObject = $ComServer->BizObjects->Find("SL_DO");
        $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
        $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
$lDataSet->First();
$BizObject->New();
$lMain->FindField("DocKey")->value = -1;
$lMain->FindField("DocNo")->AsString = "--DO Test--";
$lMain->FindField("DocDate")->value = "01/20/2021"; #MM/DD/YYYY
$lMain->FindField("PostDate")->value = "01/20/2021"; #MM/DD/YYYY
$lMain->FindField("Code")->AsString = $lDataSet->FindField("Code")->AsString;
$lMain->FindField("CompanyName")->AsString = $lDataSet->FindField("CompanyName")->AsString;
$lMain->FindField("Description")->AsString = "Delivery Order";


while (! $lDataSet->Eof()){
if (isset($_POST['BtnData']))
    $lDetail->Append();
{
    $lDetail->FindField("DtlKey")->value = -1;
     try
    $lDetail->FindField("DocKey")->value = -1;
     {
    $lDetail->FindField("ItemCode")->AsString = $lDataSet->FindField("ItemCode")->AsString;
         CheckLogin1();
    $lDetail->FindField("UOM")->AsString = $lDataSet->FindField("UOM")->AsString;
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
$lDetail->FindField("Qty")->AsFloat = $lDataSet->FindField("OSQty")->AsFloat;
        PostData();
    $lDetail->FindField("DISC")->value = $lDataSet->FindField("DISC")->value;
echo date("d M Y h:i:s A")." - Done<br>";
    $lDetail->FindField("Tax")->AsString = "";
    $lDetail->FindField("TaxRate")->AsString = "";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = $lDataSet->FindField("UnitPrice")->AsFloat;
    $lDetail->FindField("Amount")->AsFloat = $lDataSet->FindField("Amount")->AsFloat;
    $lDetail->FindField("TaxAmt")->AsFloat = 0;
$lDetail->FindField("FromDocType")->AsString = "SO";
$lDetail->FindField("FromDockey")->AsFloat = $lDataSet->FindField("Dockey")->AsFloat;
$lDetail->FindField("FromDtlkey")->AsFloat = $lDataSet->FindField("DtlKey")->AsFloat;
    $lDetail->Post();
$lDataSet->Next();
 
}
        $BizObject->Save();
        $BizObject->Close();
}else {
    echo "Record Not Found";
    }
}
 
if (isset($_POST['BtnData']))
{
     try
     {
         CheckLogin();
PostData();
        echo date("d M Y h:i:s A")." - Done";
     }
     }
     finally
     finally
Line 4,261: Line 4,438:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Post SO to DO"/>  
                 value="Add Stock Issue"/>  
     </form>  
     </form>  
</body>
</body>
Line 4,269: Line 4,446:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====ST_AJ====
====Add Points====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_AJ Script  
! Add Points Script  
|-
|-
|  
|  
Line 4,277: Line 4,454:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 4,285: Line 4,459:


<?php
<?php
echo "Updated 08 Feb 2021<br>";
echo "Updated 18 May 2024<br>";
 
$ComServer = null;
$ComServer = null;


Line 4,301: Line 4,474:
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0100.FDB"); #Database Name
                       "ACC-0024.FDB"); #Database Name
      
      
}
}
Line 4,308: Line 4,481:
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("ST_AJ");
$BizObject = $ComServer->BizObjects->Find("Sales.Points.OPF");
     $lMain = $BizObject->DataSets->Find("MainDataSet");
     $lMain = $BizObject->DataSets->Find("Main"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail");  
     $BizObject->New();
     $BizObject->New();
     $lMain->FindField("DocKey")->value = -1;
     $lMain->FindField("DocNo")->AsString = "--Point Test--";
     $lMain->FindField("DocNo")->AsString = "--AJ Test--";
     $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
     $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
     $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
     $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
     $lMain->FindField("CompanyName")->AsString = "Cash Sales";
     $lMain->FindField("Description")->AsString = "Stock Adjustment";
$lMain->FindField("DESCRIPTION")->AsString = "Points Earn";
     $lMain->FindField("FromDocType")->AsString = "CS";
$lMain->FindField("FromDocNo")->AsString = "CS-01234";
$lMain->FindField("FROMDOCAMT")->AsFloat = 100.10;
$lMain->FindField("Points")->AsFloat = 10;
    #Insert Data - Detail - Increase Stock Qty
try{
    $lDetail->Append();
$BizObject->Save();
    $lDetail->FindField("DtlKey")->value = -1;
}catch (Exception $e) {
    $lDetail->FindField("DocKey")->value = -1;
echo 'Caught exception: ',  $e->getMessage(), "\n";
    $lDetail->FindField("Seq")->value = 1;
     }
    $lDetail->FindField("ItemCode")->AsString = "ANT";
}
    $lDetail->FindField("Description")->AsString = "ANTENA";
 
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lDetail->FindField("UOM")->AsString = "BOX";
    $lDetail->Post();
    #Insert Data - Detail - Reduce Stock Qty
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("ItemCode")->AsString = "N-CHARGER";
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER";
    $lDetail->FindField("Qty")->AsFloat = -5;
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->Post();
    $BizObject->Save();
    $BizObject->Close();
try{
        $BizObject->Save();
        $BizObject->Close();
}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
     }
}


if (isset($_POST['BtnData']))
if (isset($_POST['BtnData']))
Line 4,356: Line 4,508:
     {
     {
         CheckLogin();
         CheckLogin();
PostData();
         echo date("d M Y h:i:s A")." - Posting Point<br>";
         echo date("d M Y h:i:s A")." - Done";
        PostData();
     }
     }
     finally
     finally
Line 4,370: Line 4,522:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Post ST_AJ"/>  
                 value="Post Point"/>  
     </form>  
     </form>  
</body>
</body>
Line 4,378: Line 4,530:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Stock Serial Number balance====
====AR_CN====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Stock Serial Number Balance List Script  
! AR_CN Script  
|-
|-
|  
|  
Line 4,394: Line 4,546:


<?php
<?php
echo "Updated 21 May 2021<br>";
echo "Updated 12 Dec 2020<br>";
#This action to Post Customer Credit Note


$ComServer = null;
$ComServer = null;
Line 4,409: Line 4,562:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "D:\Happy\DB\Default.DCF",  #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0024.FDB"); #Database Name
                       "ACC-0040.FDB"); #Database Name
      
      
}
}


function GetData(){
function PostData(){
global $ComServer;
global $ComServer;
     $lSQL = "SELECT ItemCode, Location, Batch, SerialNumber, SUM(Qty) Qty  FROM ST_TR_SN 
$BizObject = $ComServer->BizObjects->Find("AR_CN");
        GROUP BY ItemCode, Location, Batch, SerialNumber
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
HAVING SUM(Qty) > 0
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
";
$lKO = $BizObject->DataSets->Find("cdsKnockOff");
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
    $BizObject->New();
 
     $lMain->FindField("DocKey")->value = -1;
     if ($lDataSet->RecordCount > 0) {
    $lMain->FindField("DocNo")->AsString = "--CN Test1--";
$lDataSet->First();
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
$fc = $lDataSet->Fields->Count-1;
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
echo "<table>";
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
echo "<tr>";
    $lMain->FindField("Description")->AsString = "Sales";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
    #Insert Data - Detail
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
    #For Tax Inclusive = True with override Tax Amount
}
    $lDetail->Append();
echo "</tr>";
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
#Looping Dataset
    $lDetail->FindField("Seq")->value = 1;
while (! $lDataSet->Eof()){
    $lDetail->FindField("Account")->AsString = "510-000"; #Sales Return Account
echo "<tr>";
    $lDetail->FindField("Description")->AsString = "Return Item A";
    for ($x = 0; $x <= $fc; $x++) {
    $lDetail->FindField("Tax")->AsString = "";
$lFN = $lDataSet->Fields->Items($x)->FieldName();
    $lDetail->FindField("TaxRate")->AsString = "";
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";
    $lDetail->FindField("TaxInclusive")->value = 0;
    }
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    echo "</tr>";
    $lDetail->FindField("TaxAmt")->AsFloat = 0;
$lDataSet->Next();
$lDetail->Post();
}
 
echo "</table>"."<br>";
    $V = array("IV", "IV-00003");  #DocType, DocNo
}else {
       
     echo "Record Not Found";
    if ($lKO->Locate("DocType;DocNo", $V, False, False)){
     }
        $lKO->Edit();
        $lKO->FindField("KOAmt")->AsFloat = 100; #Partial Knock off
        $lKO->FindField("KnockOff")->AsString = "T";
        $lKO->Post();
}
     $BizObject->Save();
     $BizObject->Close();
}
}


Line 4,456: Line 4,615:
     {
     {
         CheckLogin();
         CheckLogin();
GetData();
PostData();
         echo date("d M Y h:i:s A")." - Done";
         echo date("d M Y h:i:s A")." - Done";
     }
     }
Line 4,470: Line 4,629:
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnData"
                 value="Get SN Balance"/>  
                 value="Post Customer Credit Note"/>  
     </form>  
     </form>  
</body>
</body>
Line 4,478: Line 4,637:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====SL_IV-Add, Edit & Delete====
====SO to DO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Insert, Edit & Delete Invoice Script  
! SO to DO Script  
|-
|-
|  
|  
Line 4,486: Line 4,645:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 4,491: Line 4,653:


<?php
<?php
echo "Updated 14 Mar 2022<br>";
echo "Updated 18 May 2024<br>";
#This action to
#01. Get Oustanding SO
#02. Post To DO
 
$ComServer = null;
$ComServer = null;


Line 4,505: Line 4,671:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0015.FDB"); #Database Name
                       "ACC-0024.FDB"); #Database Name
      
      
}
}


function PostDataIV(){
function PostData(){
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("SL_IV");
    $lSQL = "SELECT Dockey, DocNo,Code, CompanyName, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount,
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
            COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM (
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
            SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName,
            B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount,
            C.Qty XFQty FROM SL_SO A
            INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY)
            LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY
                                      AND C.FROMDOCTYPE='SO')
            WHERE A.DOCNO='SO-00140')
            GROUP BY Dockey, DocNo, Code, CompanyName, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount
HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0
";
    #Find IV Number
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL); #Get Oustanding SO Qty
    $lDocNo = "--IV Test--";
 
     $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
     if ($lDataSet->RecordCount > 0) {
$BizObject = $ComServer->BizObjects->Find("SL_DO");
if ($lDocKey != null){
        $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
        echo "Dockey = ".$lDocKey."<br>";
        $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
$lDataSet->First();
        $BizObject->Edit();
$BizObject->New();
        $lMain->Edit();
$lMain->FindField("DocNo")->AsString = "--DO Test--";
    $lMain->FindField("DocDate")->value = "02/20/2022"; #MM/DD/YYYY
$lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2021-01-20")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = "02/20/2022"; #MM/DD/YYYY
$lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2021-01-20")); #YYYY-MM-DD
        $lMain->FindField("CompanyName")->AsString = "Cash Sales-Edited";
$lMain->FindField("Code")->AsString = $lDataSet->FindField("Code")->AsString;
        $lMain->FindField("Address1")->AsString = ""; #Optional
$lMain->FindField("CompanyName")->AsString = $lDataSet->FindField("CompanyName")->AsString;
        $lMain->FindField("Address2")->AsString = ""; #Optional
$lMain->FindField("Description")->AsString = "Delivery Order";
        $lMain->FindField("Address3")->AsString = ""; #Optional
 
        $lMain->FindField("Address4")->AsString = ""; #Optional
while (! $lDataSet->Eof()){
        $lMain->FindField("Phone1")->AsString = "";   #Optional
    $lDetail->Append();
        $lMain->FindField("Description")->AsString = "Sales - Edited";
    $lDetail->FindField("ItemCode")->AsString = $lDataSet->FindField("ItemCode")->AsString;
    $lDetail->FindField("UOM")->AsString = $lDataSet->FindField("UOM")->AsString;
$lDetail->FindField("Qty")->AsFloat = $lDataSet->FindField("OSQty")->AsFloat;
    $lDetail->FindField("DISC")->value = $lDataSet->FindField("DISC")->value;
    $lDetail->FindField("Tax")->AsString = "";
    $lDetail->FindField("TaxRate")->AsString = "";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = $lDataSet->FindField("UnitPrice")->AsFloat;
    $lDetail->FindField("Amount")->AsFloat = $lDataSet->FindField("Amount")->AsFloat;
    $lDetail->FindField("TaxAmt")->AsFloat = 0;
$lDetail->FindField("FromDocType")->AsString = "SO";
$lDetail->FindField("FromDockey")->AsFloat = $lDataSet->FindField("Dockey")->AsFloat;
$lDetail->FindField("FromDtlkey")->AsFloat = $lDataSet->FindField("DtlKey")->AsFloat;
    $lDetail->Post();
$lDataSet->Next();


$r = $lDetail->RecordCount();
$x = 1;
while ($x <= $r ){
$lDetail->First();
            $lDetail->Delete();
$x++;
}
}
         $lDetail->Append();
         $BizObject->Save();
         $lDetail->FindField("ItemCode")->AsString = "COVER";
         $BizObject->Close();
        $lDetail->FindField("Description")->AsString = "Sales Item Cover";
}else {
    $lDetail->FindField("UOM")->AsString = "UNIT";
    echo "Record Not Found";
        $lDetail->FindField("Qty")->AsFloat = 3;
    }
        $lDetail->FindField("Tax")->AsString = "";
}
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
        $lDetail->FindField("UnitPrice")->AsFloat = 5.60;
        $lDetail->FindField("Amount")->AsFloat = 16.80;
        $lDetail->FindField("TaxAmt")->AsFloat = 0;
        $lDetail->Post();
} else {
      echo "New Invoice<br>";
  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = $lDocNo;
  $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
  $lMain->FindField("DocDate")->value = "02/18/2022"; #MM/DD/YYYY
      $lMain->FindField("PostDate")->value = "02/18/2022"; #MM/DD/YYYY
      $lMain->FindField("CompanyName")->AsString = "Cash Sales";
      $lMain->FindField("Address1")->AsString = ""; #Optional
      $lMain->FindField("Address2")->AsString = ""; #Optional
      $lMain->FindField("Address3")->AsString = ""; #Optional
      $lMain->FindField("Address4")->AsString = ""; #Optional
      $lMain->FindField("Phone1")->AsString = "";  #Optional
      $lMain->FindField("Description")->AsString = "Sales";
  #$lMain->FindField('DocAmt')->value = $Amt;
      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "ANT";
      $lDetail->FindField("Description")->AsString = "Sales Item ANT";
  $lDetail->FindField("UOM")->AsString = "UNIT";
      $lDetail->FindField("Qty")->AsFloat = 1;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 100;
      $lDetail->FindField("Amount")->AsFloat = 100;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();


if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
PostData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}


      $lDetail->Append();
?>  
      $lDetail->FindField("ItemCode")->AsString = "BOM";
      $lDetail->FindField("Description")->AsString = "Sales Item BOM";
  $lDetail->FindField("UOM")->AsString = "UNIT";
      $lDetail->FindField("Qty")->AsFloat = 2;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 150;
      $lDetail->FindField("Amount")->AsFloat = 300;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
}
    $BizObject->Save();
echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();
}
 
function PostDelIV(){
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("SL_IV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find IV Number
    $lDocNo = "--IV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}
if (isset($_POST['BtnPost']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostDataIV();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        PostDelIV();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>  
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnPost"
         <input type="submit" name="BtnData"
                 value="Post Sales IV"/>
                 value="Post SO to DO"/>  
        <input type="submit" name="BtnDel"
                value="Post Delete IV"/>
     </form>  
     </form>  
</body>
</body>
Line 4,671: Line 4,761:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL_PV-Add, Edit & Delete====
====ST_AJ====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Insert, Edit & Delete Invoice Script  
! ST_AJ Script  
|-
|-
|  
|  
Line 4,679: Line 4,769:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 4,684: Line 4,777:


<?php
<?php
echo "Updated 15 Mar 2022<br>";
echo "Updated 18 May 2024<br>";
 
$ComServer = null;
$ComServer = null;


Line 4,698: Line 4,792:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0015.FDB"); #Database Name
                       "ACC-0100.FDB"); #Database Name
      
      
}
}
Line 4,706: Line 4,800:
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("GL_PV");
$BizObject = $ComServer->BizObjects->Find("ST_AJ");
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
     $lMain = $BizObject->DataSets->Find("MainDataSet");  
     $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
     $lDetail = $BizObject->DataSets->Find("cdsDocDetail");  
     #Find PV Number
     $BizObject->New();
     $lDocNo = "--PV Test--";
     $lMain->FindField("DocNo")->AsString = "--AJ Test--";
     $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
     $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Description")->AsString = "Stock Adjustment";
if ($lDocKey != null){
    #Insert Data - Detail - Increase Stock Qty
        echo "Dockey = ".$lDocKey."<br>";
    $lDetail->Append();
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
    $lDetail->FindField("Seq")->value = 1;
$BizObject->Open();
    $lDetail->FindField("ItemCode")->AsString = "ANT";
        $BizObject->Edit();
    $lDetail->FindField("Description")->AsString = "ANTENA";
        $lMain->Edit();
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lMain->FindField("DocDate")->value = "02/20/2022"; #MM/DD/YYYY
    $lDetail->FindField("UOM")->AsString = "BOX";
        $lMain->FindField("PostDate")->value = "02/20/2022"; #MM/DD/YYYY
    $lDetail->Post();
        $lMain->FindField("Description")->AsString = "Tenaga Malaysia - Edited";
$lMain->FindField("PaymentMethod")->AsString = "310-001"; #GL Bank/Cash account code
$lMain->FindField("CHEQUENUMBER")->AsString = "MBB 123456"; #Optional
$lMain->FindField("Cancelled")->AsString = "F";


$r = $lDetail->RecordCount();
    #Insert Data - Detail - Reduce Stock Qty
$x = 1;
    $lDetail->Append();
while ($x <= $r ){
    $lDetail->FindField("Seq")->value = 2;
$lDetail->First();
    $lDetail->FindField("ItemCode")->AsString = "N-CHARGER";
            $lDetail->Delete();
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER";
$x++;
    $lDetail->FindField("Qty")->AsFloat = -5;
}
    $lDetail->FindField("UOM")->AsString = "UNIT";
        $lDetail->Append();
    $lDetail->Post();
        $lDetail->FindField("Code")->AsString = "907-000";
        $lDetail->FindField("Description")->AsString = "TNB Bill for Feb 2022 - Edited";
    $BizObject->Save();
        $lDetail->FindField("Tax")->AsString = "";
    $BizObject->Close();
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
try{
        $lDetail->FindField("Amount")->AsFloat = 168.80;
        $BizObject->Save();
        $lDetail->FindField("TaxAmt")->AsFloat = 0;
        $BizObject->Close();
        $lDetail->Post();
}catch (Exception $e) {
} else {
     echo 'Caught exception: ',  $e->getMessage(), "\n";
      echo "New PV<br>";
     }
  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = $lDocNo;
  $lMain->FindField("DocDate")->value = "02/18/2022"; #MM/DD/YYYY
      $lMain->FindField("PostDate")->value = "02/18/2022"; #MM/DD/YYYY
      $lMain->FindField("Description")->AsString = "Tenaga Malaysia";
  $lMain->FindField("PaymentMethod")->AsString = "310-001"; #GL Bank/Cash account code
  $lMain->FindField("CHEQUENUMBER")->AsString = "MBB 123456"; #Optional
  $lMain->FindField("Cancelled")->AsString = "F";
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "907-000"; #GL Account
      $lDetail->FindField("Description")->AsString = "TNB Bill for Jan 2022";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("Amount")->AsFloat = 100.80;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
 
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "907-000";
      $lDetail->FindField("Description")->AsString = "TNB Bill for Feb 2022";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("Amount")->AsFloat = 68.00;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
}
     $BizObject->Save();
echo date("d M Y h:i:s A")." - Posting Done<br>";
     $BizObject->Close();
}
}


function DelData(){
if (isset($_POST['BtnData']))
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("GL_PV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find PV Number
    $lDocNo = "--PV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}
if (isset($_POST['BtnPost']))
{
{
     try
     try
     {
     {
         CheckLogin();
         CheckLogin();
         echo date("d M Y h:i:s A")." - Begin Posting<br>";
PostData();
        PostData();
         echo date("d M Y h:i:s A")." - Done";
     }
     }
     finally
     finally
Line 4,817: Line 4,855:
}
}


if (isset($_POST['BtnDel']))
?>  
{
     <form method="post">           
    try
         <input type="submit" name="BtnData"
    {
                 value="Post ST_AJ"/>  
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>  
     <form method="post">           
         <input type="submit" name="BtnPost"
                 value="Post GL PV"/>
        <input type="submit" name="BtnDel"
                value="Delete PV"/>
     </form>  
     </form>  
</body>
</body>
Line 4,846: Line 4,866:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL_JE-Add, Edit & Delete====
====Get Stock Serial Number balance====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Insert, Edit & Delete Invoice Script  
! Get Stock Serial Number Balance List Script  
|-
|-
|  
|  
Line 4,854: Line 4,874:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 4,859: Line 4,882:


<?php
<?php
echo "Updated 15 Mar 2022<br>";
echo "Updated 21 May 2021<br>";
 
$ComServer = null;
$ComServer = null;


Line 4,873: Line 4,897:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "D:\Happy\DB\Default.DCF",  #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0015.FDB"); #Database Name
                       "ACC-0024.FDB"); #Database Name
      
      
}
}


function PostData(){
function GetData(){
global $ComServer;
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("GL_JE");
    $lSQL = "SELECT ItemCode, Location, Batch, SerialNumber, SUM(Qty) Qty  FROM ST_TR_SN 
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
        GROUP BY ItemCode, Location, Batch, SerialNumber
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
HAVING SUM(Qty) > 0
";
    #Find PV Number
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
    $lDocNo = "--JE Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
    $lMain->FindField("DocDate")->value = "02/20/2022"; #MM/DD/YYYY
        $lMain->FindField("PostDate")->value = "02/20/2022"; #MM/DD/YYYY
        $lMain->FindField("Description")->AsString = "Credit Card Charges - Edited";
$lMain->FindField("Cancelled")->AsString = "F";


$r = $lDetail->RecordCount();
    if ($lDataSet->RecordCount > 0) {
$x = 1;
$lDataSet->First();
while ($x <= $r ){
$fc = $lDataSet->Fields->Count-1;
$lDetail->First();
echo "<table>";
            $lDetail->Delete();
echo "<tr>";
$x++;
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
}
}
        $lDetail->Append();
echo "</tr>";
        $lDetail->FindField("Code")->AsString = "902-000";
        $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges - Edited";
        $lDetail->FindField("Tax")->AsString = "";
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
        $lDetail->FindField("LocalDR")->AsFloat = 78.88;
$lDetail->FindField("DR")->AsFloat = 78.88; #If Wanted DR <> LocalDR
        $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
        $lDetail->Post();
        $lDetail->Append();
#Looping Dataset
        $lDetail->FindField("Code")->AsString = "310-001";
while (! $lDataSet->Eof()){
        $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges - Edited";
echo "<tr>";
        $lDetail->FindField("Tax")->AsString = "";
    for ($x = 0; $x <= $fc; $x++) {
        $lDetail->FindField("TaxRate")->AsString = "";
$lFN = $lDataSet->Fields->Items($x)->FieldName();
        $lDetail->FindField("TaxInclusive")->value = 0;
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";  
        $lDetail->FindField("LocalCR")->AsFloat = 78.88;
    }
$lDetail->FindField("CR")->AsFloat = 78.88; #If Wanted CR <> LocalCR
    echo "</tr>";
        $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
$lDataSet->Next();
        $lDetail->Post();
}
} else {
echo "</table>"."<br>";
      echo "New JE<br>";
}else {
  $BizObject->New();
    echo "Record Not Found";
      $lMain->FindField("DocKey")->value = -1;
    }
      $lMain->FindField("DocNo")->AsString = $lDocNo;
}
  $lMain->FindField("DocDate")->value = "02/18/2022"; #MM/DD/YYYY
 
      $lMain->FindField("PostDate")->value = "02/18/2022"; #MM/DD/YYYY
if (isset($_POST['BtnData']))
      $lMain->FindField("Description")->AsString = "Credit Card Charges";
{
  $lMain->FindField("Cancelled")->AsString = "F";
     try
     {
      $lDetail->Append();
         CheckLogin();
      $lDetail->FindField("Code")->AsString = "902-000";
GetData();
      $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges";
         echo date("d M Y h:i:s A")." - Done";
      $lDetail->FindField("Tax")->AsString = "";
     }
      $lDetail->FindField("TaxRate")->AsString = "";
     finally
      $lDetail->FindField("TaxInclusive")->value = 0;
     {
      $lDetail->FindField("LocalDR")->AsFloat = 88.88;
         $ComServer->Logout();
  $lDetail->FindField("DR")->AsFloat = 88.88; #If Wanted DR <> LocalDR
      $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
      $lDetail->Post();
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "310-001";
      $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("LocalCR")->AsFloat = 88.88;
  $lDetail->FindField("CR")->AsFloat = 88.88; #If Wanted CR <> LocalCR
      $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
      $lDetail->Post();
}
    $BizObject->Save();
echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();
}
 
function DelData(){
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("GL_JE");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find JE Number
    $lDocNo = "--JE Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}
if (isset($_POST['BtnPost']))
{
     try
     {
         CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
         echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();
     }
     finally
     {
         $ComServer->Logout();
         #free the object
         #free the object
         $ComServer = null;
         $ComServer = null;
Line 5,020: Line 4,957:
?>  
?>  
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnPost"
         <input type="submit" name="BtnData"
                 value="Post GL JE"/>
                 value="Get SN Balance"/>  
        <input type="submit" name="BtnDel"
                value="Delete JE"/>
     </form>  
     </form>  
</body>
</body>
Line 5,031: Line 4,966:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Outstanding SO List====
====SL_IV-Add, Edit & Delete====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Outstanding SO List Script  
! Insert, Edit & Delete Invoice Script  
|-
|-
|  
|  
Line 5,044: Line 4,979:


<?php
<?php
echo "Updated 09 Jun 2022<br>";
echo "Updated 25 May 2024<br>";
$ComServer = null;
$ComServer = null;


Line 5,058: Line 4,993:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0015.FDB"); #Database Name
                       "ACC-0015.FDB"); #Database Name
      
      
}
}


function GetData(){
function PostDataIV(){
global $ComServer;
global $ComServer;
    $lSQL = "SELECT Dockey, DocNo,Code, CompanyName, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount,
$BizObject = $ComServer->BizObjects->Find("SL_IV");
            COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM (
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
            SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName,
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
            B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount,
$lSN = $BizObject->DataSets->Find("cdsSerialNumber"); #lDetail contains detail data
            C.Qty XFQty FROM SL_SO A
            INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY)
    #Find IV Number
            LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY
    $lDocNo = "--IV Test--";
                                      AND C.FROMDOCTYPE='SO')
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
            WHERE A.Cancelled='F')
            GROUP BY Dockey, DocNo, Code, CompanyName, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount
            HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0
";
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-04-24")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-04-24")); #YYYY-MM-DD
        $lMain->FindField("CompanyName")->AsString = "Cash Sales-Edited";
        $lMain->FindField("Address1")->AsString = ""; #Optional
        $lMain->FindField("Address2")->AsString = ""; #Optional
        $lMain->FindField("Address3")->AsString = ""; #Optional
        $lMain->FindField("Address4")->AsString = ""; #Optional
        $lMain->FindField("Phone1")->AsString = "";  #Optional
        $lMain->FindField("Description")->AsString = "Sales - Edited";


    if ($lDataSet->RecordCount > 0) {
$V = array("ANT", "UNIT"); #ItemCode, UOM
$lDataSet->First();
$fc = $lDataSet->Fields->Count-1;
echo "<table>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";
}
echo "</tr>";
#Looping Dataset
if ($lDetail->Locate("ItemCode;UOM", $V, False, False)){
while (! $lDataSet->Eof()){
            $lDetail->Edit();
echo "<tr>";
            $lDetail->FindField("Qty")->AsFloat = 2;
    for ($x = 0; $x <= $fc; $x++) {
            $lDetail->FindField("Tax")->AsString = "";
$lFN = $lDataSet->Fields->Items($x)->FieldName();
            $lDetail->FindField("TaxRate")->AsString = "";
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";
            $lDetail->FindField("TaxInclusive")->value = 0;
    }
            $lDetail->FindField("UnitPrice")->AsFloat = 6.00;
    echo "</tr>";
            $lDetail->FindField("Amount")->AsFloat = 12.00;
$lDataSet->Next();
            $lDetail->FindField("TaxAmt")->AsFloat = 0;
            $lDetail->Post();
}
}
echo "</table>"."<br>";
} else {
}else {
      echo "New Invoice<br>";
     echo "Record Not Found";
  $BizObject->New();
     }
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = #$lDocNo;
  $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-04-03")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-04-03"));  #YYYY-MM-DD
      $lMain->FindField("CompanyName")->AsString = "Cash Sales";
      $lMain->FindField("Address1")->AsString = ""; #Optional
      $lMain->FindField("Address2")->AsString = ""; #Optional
      $lMain->FindField("Address3")->AsString = ""; #Optional
      $lMain->FindField("Address4")->AsString = ""; #Optional
      $lMain->FindField("Phone1")->AsString = "";  #Optional
      $lMain->FindField("Description")->AsString = "Sales";
  #$lMain->FindField('DocAmt')->value = $Amt;
 
      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "BOM";
      $lDetail->FindField("Description")->AsString = "Sales Item BOM";
  $lDetail->FindField("UOM")->AsString = "UNIT";
      $lDetail->FindField("Qty")->AsFloat = 2;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 150;
      $lDetail->FindField("Amount")->AsFloat = 300;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
 
      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "ANT";
      $lDetail->FindField("Description")->AsString = "Sales Item ANT";
  $lDetail->FindField("UOM")->AsString = "UNIT";
      $lDetail->FindField("Qty")->AsFloat = 1;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 100;
      $lDetail->FindField("Amount")->AsFloat = 100;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
 
  #For Serial Number
      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "SN";
      $lDetail->FindField("Description")->AsString = "Sales Serial Number Item";
  $lDetail->FindField("UOM")->AsString = "UNIT";
 
  $lSN->Append;
      $lSN->FindField("SERIALNUMBER")->AsString = 'SN-136476';
      $lSN->Post;
 
  $lSN->Append;
      $lSN->FindField("SERIALNUMBER")->AsString = 'SN-136477';
      $lSN->Post;
 
  $lDetail->FindField("Qty")->AsFloat = 2;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 100;
      $lDetail->FindField("Amount")->AsFloat = 100;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();  
}
     $BizObject->Save();
echo "Save with DocNo ".$lMain->FindField("DocNo")->AsString."<br>";
echo date("d M Y h:i:s A")." - Posting Done<br>";
     $BizObject->Close();
}
}


if (isset($_POST['BtnData']))
function PostDelIV(){
{
global $ComServer;
     try
     {
$BizObject = $ComServer->BizObjects->Find("SL_IV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find IV Number
    $lDocNo = "--IV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}
if (isset($_POST['BtnPost']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostDataIV();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
if (isset($_POST['BtnDel']))
{
     try
     {
         CheckLogin();
         CheckLogin();
         echo date("d M Y h:i:s A")." - Get Data<br>";
         echo date("d M Y h:i:s A")." - Begin Delete<br>";
         GetData();
         PostDelIV();
echo date("d M Y h:i:s A")." - Done<br>";
     }
     }
     finally
     finally
Line 5,127: Line 5,166:
?>  
?>  
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnPost"
                 value="Get Outstanding SO List"/>  
                 value="Post Sales IV"/>
        <input type="submit" name="BtnDel"
                value="Post Delete IV"/>
     </form>  
     </form>  
</body>
</body>
Line 5,135: Line 5,176:
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
====Get Stock Item Picture====
 
====GL_PV-Add, Edit & Delete====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Stock Item Picture Script  
! Insert, Edit & Delete Invoice Script  
|-
|-
|  
|  
Line 5,148: Line 5,190:


<?php
<?php
echo "Updated 14 Sep 2022<br>";
echo "Updated 18 May 2024<br>";
 
$ComServer = null;
$ComServer = null;


Line 5,155: Line 5,196:
{
{
     global $ComServer;
     global $ComServer;
     $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
     $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
     $status = $ComServer->IsLogin();
     $status = $ComServer->IsLogin();


Line 5,163: Line 5,204:
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0082.FDB"); #Database Name
                       "ACC-0015.FDB"); #Database Name
      
      
}
}


function GetData(){
function PostData(){
    global $ComServer;
global $ComServer;
     $lSQL = "SELECT Picture FROM ST_ITEM
$BizObject = $ComServer->BizObjects->Find("GL_PV");
            WHERE Code='ANT' ";
     $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
     $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
    #Find PV Number
     $lDocNo = "--PV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
        $lMain->FindField("Description")->AsString = "Tenaga Malaysia - Edited";
$lMain->FindField("PaymentMethod")->AsString = "310-001"; #GL Bank/Cash account code
$lMain->FindField("CHEQUENUMBER")->AsString = "MBB 123456"; #Optional
$lMain->FindField("Cancelled")->AsString = "F";


    if ($lDataSet->RecordCount > 0) {
$r = $lDetail->RecordCount();
$lDataSet->First();
$x = 1;
while ($x <= $r ){
$lDetail->First();
            $lDetail->Delete();
$x++;
}
        $lDetail->Append();
        $lDetail->FindField("Code")->AsString = "907-000";
        $lDetail->FindField("Description")->AsString = "TNB Bill for Feb 2022 - Edited";
        $lDetail->FindField("Tax")->AsString = "";
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
        $lDetail->FindField("Amount")->AsFloat = 168.80;
        $lDetail->FindField("TaxAmt")->AsFloat = 0;
        $lDetail->Post();
} else {
      echo "New PV<br>";
  $BizObject->New();
      $lMain->FindField("DocNo")->AsString = $lDocNo;
  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Tenaga Malaysia";
  $lMain->FindField("PaymentMethod")->AsString = "310-001"; #GL Bank/Cash account code
  $lMain->FindField("CHEQUENUMBER")->AsString = "MBB 123456"; #Optional
  $lMain->FindField("Cancelled")->AsString = "F";
$raw = $lDataSet->FindField('Picture')->Value();
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "907-000"; #GL Account
        $b = [];
      $lDetail->FindField("Description")->AsString = "TNB Bill for Jan 2022";
        foreach($raw as $p) {
      $lDetail->FindField("Tax")->AsString = "";
            array_push($b, chr($p));
      $lDetail->FindField("TaxRate")->AsString = "";
        }
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("Amount")->AsFloat = 100.80;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();


echo '<img src=data:image/*;base64,'.base64_encode(implode($b)).' alt="My Picture" style="width:128px;height:128px">';
      $lDetail->Append();
 
      $lDetail->FindField("Code")->AsString = "907-000";
}else {
      $lDetail->FindField("Description")->AsString = "TNB Bill for Feb 2022";
     echo "Record Not Found";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("Amount")->AsFloat = 68.00;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
}
    $BizObject->Save();
echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();
}
 
function DelData(){
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("GL_PV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find PV Number
    $lDocNo = "--PV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}
if (isset($_POST['BtnPost']))
{
     try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
     }
     }
}
}


if (isset($_POST['BtnData']))
if (isset($_POST['BtnDel']))
{
{
     try
     try
     {
     {
         CheckLogin();
         CheckLogin();
        GetData();
         echo date("d M Y h:i:s A")." - Begin Delete<br>";
echo "<br>";
        DelData();
         echo date("d M Y h:i:s A")." - Done";
     }
     }
     finally
     finally
Line 5,212: Line 5,340:
?>  
?>  
     <form method="post">           
     <form method="post">           
         <input type="submit" name="BtnData"
         <input type="submit" name="BtnPost"
                 value="Get Item Picture"/>  
                 value="Post GL PV"/>
        <input type="submit" name="BtnDel"
                value="Delete PV"/>
     </form>  
     </form>  
</body>
</body>
Line 5,221: Line 5,351:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Customer.Aging.RO====
====GL_JE-Add, Edit & Delete====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.Aging.RO Script  
! Insert, Edit & Delete Invoice Script  
|-
|-
|  
|  
Line 5,229: Line 5,359:
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>
<body>


Line 5,237: Line 5,364:


<?php
<?php
echo "Updated 26 Sep 2022<br>";
echo "Updated 18 May 2024<br>";
 
$ComServer = null;
$ComServer = null;


Line 5,244: Line 5,370:
{
{
     global $ComServer;
     global $ComServer;
     $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
     $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
     $status = $ComServer->IsLogin();
     $status = $ComServer->IsLogin();


     if ($status == true)
     if ($status == true)
     {
     {
         #$ComServer->Logout();
         $ComServer->Logout();
     }
     }
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                       "ACC-0082.FDB"); #Database Name
                       "ACC-0015.FDB"); #Database Name
      
      
}
}


function SetGrid($DataSet){
function PostData(){
echo "<table>";
echo "<tr>";
    $DataSet->First();
$fc = $DataSet->Fields->Count-1;
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$DataSet->Fields->Items($x)->FieldName()."</td>";
}
echo "</tr>";
#Looping Dataset
while (! $DataSet->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $DataSet->Fields->Items($x)->FieldName();
    echo "<td>".$DataSet->FindField($lFN)->AsString()."</td>";
    }
    echo "</tr>";
$DataSet->Next();
}
    echo "</table>"."<br>";
}
 
function GetData(){
global $ComServer;
global $ComServer;
    $lSQL = '<?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0"><METADATA><FIELDS>
$BizObject = $ComServer->BizObjects->Find("GL_JE");
        <FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
            <FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
            <FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>
            </FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>
    #Find JE Number
            <ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>
    $lDocNo = "--JE Test--";
            <ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
            <ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>
            <ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>
            <ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>
            <ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>
            </ROWDATA></DATAPACKET>';
$lRptVar = $ComServer->RptObjects->Find('Customer.Aging.RO');
if ($lDocKey != null){
$lRptVar->Params->Find('ActualGroupBy')->AsString = 'Code;CompanyName'; #Fixed
        echo "Dockey = ".$lDocKey."<br>";
# $lRptVar->Params->Find('AgentData')->AsBlob              = ; #Not use if AllAgent is True
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
    $lRptVar->Params->Find('AgingData')->AsString          = $lSQL;
$BizObject->Open();
    $lRptVar->Params->Find('AgingDate')->AsDate            = '23 Sep 2022';
        $BizObject->Edit();
    $lRptVar->Params->Find('AgingOn')->AsString            = 'I'; #Fixed
        $lMain->Edit();
    $lRptVar->Params->Find('AllAgent')->AsBoolean          = True;
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
    $lRptVar->Params->Find('AllArea')->AsBoolean            = True;
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
    $lRptVar->Params->Find('AllCompany')->AsBoolean         = True;
         $lMain->FindField("Description")->AsString = "Credit Card Charges - Edited";
    $lRptVar->Params->Find('AllCompanyCategory')->AsBoolean = True;
$lMain->FindField("Cancelled")->AsString = "F";
    $lRptVar->Params->Find('AllControlAccount')->AsBoolean  = True;
 
    $lRptVar->Params->Find('AllCurrency')->AsBoolean        = True;
$r = $lDetail->RecordCount();
    $lRptVar->Params->Find('AllDocProject')->AsBoolean      = True;
$x = 1;
#    $lRptVar->Params->Find('AreaData')->AsBlob            = ; #Not use if AllArea is True
while ($x <= $r ){
#    $lRptVar->Params->Find('CompanyCategoryData')->AsBlob = ; #Not use if AllCompanyCategory is True
$lDetail->First();
#    $lRptVar->Params->Find('CompanyData')->AsBlob        = ; #Not use if AllCompany is True
            $lDetail->Delete();
#    $lRptVar->Params->Find('ControlAccountData')->AsBlob  = ; #Not use if AllControlAccount is True
$x++;
#    $lRptVar->Params->Find('CurrencyData')->AsBlob        = ; #Not use if AllCurrency is True
}
#    $lRptVar->Params->Find('DocProjectData')->AsBlob      = ; #Not use if AllDocProject is True
        $lDetail->Append();
    $lRptVar->Params->Find('FilterPostDate')->AsBoolean      = True;
        $lDetail->FindField("Code")->AsString = "902-000";
#    $lRptVar->Params->Find('GroupBy
        $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges - Edited";
    $lRptVar->Params->Find('IncludePDC')->AsBoolean        = False;
        $lDetail->FindField("Tax")->AsString = "";
    $lRptVar->Params->Find('IncludeZeroBalance')->AsBoolean = False;
        $lDetail->FindField("TaxRate")->AsString = "";
    $lRptVar->Params->Find('SortBy')->AsString             = 'Code;CompanyName';
        $lDetail->FindField("TaxInclusive")->value = 0;
    $lRptVar->Params->Find('DateTo')->AsDate                = '23 Sep 2022';
        $lDetail->FindField("LocalDR")->AsFloat = 78.88;
    $lRptVar->Params->Find('IncludeKnockedOffDetail')->AsBoolean = False;
$lDetail->FindField("DR")->AsFloat = 78.88; #If Wanted DR <> LocalDR
        $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
$lRptVar->CalculateReport();
        $lDetail->Post();
$lDataSetHdr = $lRptVar->DataSets->Find('cdsAgingHeader');
$lDataSet = $lRptVar->DataSets->Find('cdsMain');
$lDataSet2 = $lRptVar->DataSets->Find('cdsDocument');
$lDataSetCO = $lRptVar->DataSets->Find('cdsCompany');
 
    if ($lDataSet->RecordCount > 0) {
echo "Header"."<br>";
SetGrid($lDataSetHdr);
echo "Main Data"."<br>";
SetGrid($lDataSet);
echo "Detail Invoice"."<br>";
        $lDetail->Append();
SetGrid($lDataSet2);
        $lDetail->FindField("Code")->AsString = "310-001";
 
        $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges - Edited";
echo "Company Information"."<br>";
        $lDetail->FindField("Tax")->AsString = "";
SetGrid($lDataSetCO);
        $lDetail->FindField("TaxRate")->AsString = "";
 
        $lDetail->FindField("TaxInclusive")->value = 0;
}else {
        $lDetail->FindField("LocalCR")->AsFloat = 78.88;
    echo "Record Not Found";
$lDetail->FindField("CR")->AsFloat = 78.88; #If Wanted CR <> LocalCR
    }
        $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
}
        $lDetail->Post();
 
} else {
if (isset($_POST['BtnData']))
      echo "New JE<br>";
  $BizObject->New();
      $lMain->FindField("DocNo")->AsString = $lDocNo;
  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Credit Card Charges";
  $lMain->FindField("Cancelled")->AsString = "F";
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "902-000";
      $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("LocalDR")->AsFloat = 88.88;
  $lDetail->FindField("DR")->AsFloat = 88.88; #If Wanted DR <> LocalDR
      $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
      $lDetail->Post();
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "310-001";
      $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("LocalCR")->AsFloat = 88.88;
  $lDetail->FindField("CR")->AsFloat = 88.88; #If Wanted CR <> LocalCR
      $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
      $lDetail->Post();
}
    $BizObject->Save();
echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();
}
 
function DelData(){
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("GL_JE");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find JE Number
    $lDocNo = "--JE Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}
if (isset($_POST['BtnPost']))
{
{
     try
     try
     {
     {
         CheckLogin();
         CheckLogin();
        GetData();
         echo date("d M Y h:i:s A")." - Begin Posting<br>";
echo "<br>";
        PostData();
         echo date("d M Y h:i:s A")." - Done";
     }
     }
     finally
     finally
     {
     {
         #$ComServer->Logout();
         $ComServer->Logout();
         #free the object
         #free the object
         $ComServer = null;
         $ComServer = null;
Line 5,365: Line 5,506:
}
}


?>  
if (isset($_POST['BtnDel']))
     <form method="post">           
{
         <input type="submit" name="BtnData"
    try
                 value="Get AR Aging"/>  
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>  
     <form method="post">           
         <input type="submit" name="BtnPost"
                value="Post GL JE"/>
        <input type="submit" name="BtnDel"
                 value="Delete JE"/>
     </form>  
     </form>  
</body>
</body>
Line 5,375: Line 5,534:
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
<br>
===Node JS===
: Module Require in Node JS
:- Winax (Mandatory) -> npm install winax
====Common====
* Common.js file for example code


====Get Outstanding SO List====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Common Function
! Get Outstanding SO List Script
|-
|-
|  
|  
<syntaxhighlight lang="nodejsrepl">
<syntaxhighlight lang="PHP">
/* Updated 22 Jul 2023 */
<!DOCTYPE html>
var winax = require('C:\\node_js\\node_modules\\winax'); /* Path where you install winax */
<html>
var cp = require('child_process');  
<body>
 
<h1>SQL Acc SDK in PHP page</h1>
 
<?php
echo "Updated 09 Jun 2022<br>";
$ComServer = null;


exports.KillApp = function KillApp(){
function CheckLogin()
cp.exec('start cmd.exe /C "taskkill /IM "SQLACC.exe" /F"');
{
}
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();


exports.CreateSQLAccServer = function CreateSQLAccServer() {
    if ($status == true)
  var ComServer;
    {
  ComServer = new winax.Object('SQLAcc.BizApp');
        $ComServer->Logout();
  if (!ComServer.IsLogin) {          /* check whether user has logon */
    }
     ComServer.Login('ADMIN', 'ADMIN', /* UserName, Password */
     $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
/* 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', */
                      "C:\eStream\SQLAccounting\Share\Default.DCF", #DCF file
'D:\\Happy\\DB\\DEFAULT.DCF', /* DCF File */
                      "ACC-0015.FDB"); #Database Name
'ACC-0009.FDB'); /* FDB Name */
   
  }
  return ComServer;
}
}


exports.ShowResult = function ShowResult(ADataset){
function GetData(){
  var fc, fn, fv, lresult;
global $ComServer;
  ADataset.First;
  while (!ADataset.Eof){
    $lSQL = "SELECT Dockey, DocNo,Code, CompanyName, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount,
  fc = ADataset.Fields.Count;
            COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM (
  for (let i = 0; i < fc; i++) {
            SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName,
  fn = ADataset.Fields.Items(i).FieldName;
            B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount,
          fv = ADataset.FindField(fn).AsString;
            C.Qty XFQty FROM SL_SO A
  lresult =  "Index : "+ i + " FieldName : " + fn + " Value : " + fv;
            INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY)
  console.log(lresult);
            LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY
      }
                                      AND C.FROMDOCTYPE='SO')
  console.log("====");
            WHERE A.Cancelled='F')
      ADataset.Next();  
            GROUP BY Dockey, DocNo, Code, CompanyName, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount
  }
            HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0
";
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
 
    if ($lDataSet->RecordCount > 0) {
$lDataSet->First();
$fc = $lDataSet->Fields->Count-1;
echo "<table>";
echo "<tr>";
for ($x = 0; $x <= $fc; $x++) {
#Insert Header
echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>";  
}
echo "</tr>";
#Looping Dataset
while (! $lDataSet->Eof()){
echo "<tr>";
    for ($x = 0; $x <= $fc; $x++) {
$lFN = $lDataSet->Fields->Items($x)->FieldName();
    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>";  
    }
    echo "</tr>";
$lDataSet->Next();
}
echo "</table>"."<br>";
}else {
    echo "Record Not Found";
    }
}
}


</syntaxhighlight>
if (isset($_POST['BtnData']))
|}
{
<div style="float: right;">  [[#top|[top]]]</div>
    try
 
    {
====Get Company Profile====
        CheckLogin();
{| class="mw-collapsible mw-collapsed wikitable"
        echo date("d M Y h:i:s A")." - Get Data<br>";
! Get Company Profile
        GetData();
|-
echo date("d M Y h:i:s A")." - Done<br>";
|
    }
<syntaxhighlight lang="nodejsrepl">
    finally
/* Updated 22 Jul 2023 */
    {
var Common = require('./Common');  
        $ComServer->Logout();
var ComServer, lDataSet;
        #free the object
 
        $ComServer = null;
function GetData() {
    }
  var lSQL;
  lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, ";
  lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, ";
  lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
 
  Common.ShowResult(lDataSet);
}
}


try{
?>
ComServer = Common.CreateSQLAccServer();
    <form method="post">         
GetData();
        <input type="submit" name="BtnData"
ComServer.Logout();
                value="Get Outstanding SO List"/>
} catch(e){
    </form>
console.error(e.message)
</body>
} finally {
</html>
Common.KillApp();
}
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
 
====Get Stock Item Picture====
====Complete Post====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Complete Post
! Get Stock Item Picture Script
|-
|-
|  
|  
<syntaxhighlight lang="nodejsrepl">
<syntaxhighlight lang="PHP">
/* Updated 22 Jul 2023
<!DOCTYPE html>
This will doing following posting
<html>
01. Cash Sales
<body>
02. Sales Credit Note
03. Customer Payment With Knock off
04. Edit Credit Note Posted in Step 02 & Knock Off
05. Customer Refund to Knock off Credit Note
*/
var Common = require('./Common');
var ComServer;


function PostDataCS() {
<h1>SQL Acc SDK in PHP page</h1>
  var BizObject, lMain, lDetail;
  BizObject = ComServer.BizObjects.Find('SL_CS') ;


  lMain  = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
<?php
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */
echo "Updated 14 Sep 2022<br>";
 
$ComServer = null;
 
function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();
 
    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
   
}
 
function GetData(){
    global $ComServer;
    $lSQL = "SELECT Picture FROM ST_ITEM
            WHERE Code='ANT' ";
    $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);


  /*Begin Looping yr data*/
    if ($lDataSet->RecordCount > 0) {
  /*Insert Data - Master*/
$lDataSet->First();
  BizObject.New();
  lMain.FindField('DocNo').AsString      = "--CS Test--";
$raw = $lDataSet->FindField('Picture')->Value();
  lMain.FindField('DocDate').value        = "20/12/2022";
  lMain.FindField('PostDate').value      = "20/12/2022";
         $b = [];
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
        foreach($raw as $p) {
  lMain.FindField('CompanyName').AsString = "Cash Sales"
            array_push($b, chr($p));
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
        }
  lMain.FindField('Address2').AsString    = ""; /*Optional*/
 
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
echo '<img src=data:image/*;base64,'.base64_encode(implode($b)).' alt="My Picture" style="width:128px;height:128px">';
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
 
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
}else {
  lMain.FindField('Description').AsString = "Sales";
     echo "Record Not Found";
 
     }
  /*Insert Data - Detail*/
  /*For Tax Inclusive = True with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 1;
  lDetail.FindField('Account').AsString    = "500-000"; /*Sales Account*/
  lDetail.FindField('Description').AsString = "Sales Item A";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString         = "SV";
  lDetail.FindField('TaxRate').AsString    = "6%";
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 435;
  lDetail.FindField('Amount').AsFloat      = 410.37; /*Exclding Tax Amt*/
  lDetail.FindField('TaxAmt').AsFloat      = 24.63;
 
  lDetail.DisableControls();
  lDetail.FindField('TaxInclusive').value  = 1;
  lDetail.EnableControls();
 
  lDetail.Post();
 
  /*For Tax Inclusive = False with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 2;
  lDetail.FindField('Account').AsString    = "500-000";
  lDetail.FindField('Description').AsString = "Sales Item B";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString        = "SV";
  lDetail.FindField('TaxRate').AsString    = "6%";
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 94.43;
  lDetail.FindField('Amount').AsFloat      = 94.43;
  lDetail.FindField('TaxAmt').AsFloat      = 5.66;
  lDetail.Post();
 
  /*For With Item Code*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 3;
  lDetail.FindField('ItemCode').AsString    = "ANT";
  lDetail.FindField('Description').AsString = "Sales Item B";
  /*lDetail.FindField('Account').AsString     = "500-000"; If you wanted override the Sales Account Code*/
  lDetail.FindField('Qty').AsFloat          = 2;
  lDetail.FindField('UOM').AsString        = "UNIT";
  /*lDetail.FindField('DISC').AsString        = "5%+3"; Optional (eg 5% plus 3 Discount)*/
  lDetail.FindField('Tax').AsString        = "SV";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat      = 200;
  lDetail.FindField('TaxAmt').AsFloat      = 12;
  lDetail.Post();
 
  /*Save Document*/
  BizObject.Save();
  BizObject.Close(); 
}
}


function PostDataPM() {
if (isset($_POST['BtnData']))
  var BizObject, lMain, lDetail, v;
{
      
    try
  BizObject = ComServer.BizObjects.Find('AR_PM') ;
    {
        CheckLogin();
        GetData();
echo "<br>";
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
     {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}


  lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
?>
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
    <form method="post">         
 
         <input type="submit" name="BtnData"
  BizObject.New();
                value="Get Item Picture"/>
 
    </form>
  lMain.FindField('DocNo').AsString         = "--PM Test--";
</body>
  lMain.FindField('Code').AsString          = "300-C0001";
</html>
  lMain.FindField('DocDate').value         = "20/12/2022";
</syntaxhighlight>
  lMain.FindField('PostDate').value        = "20/12/2022";
|}
  lMain.FindField('Description').AsString  = "Payment for A/";
<div style="float: right;">  [[#top|[top]]]</div>
  lMain.FindField('PaymentMethod').AsString = "320-000"; /*Bank or Cash Account*/
 
  lMain.FindField('ChequeNumber').AsString  = "";
====Customer.Aging.RO====
  lMain.FindField('BankCharge').AsFloat    = 0;
{| class="mw-collapsible mw-collapsed wikitable"
  lMain.FindField('DocAmt').AsFloat        = 200.00;
! Customer.Aging.RO Script
  lMain.FindField('Cancelled').AsString    = "F";
|-
 
|
  v = ComServer.CreateOleVariantArray(2);
<syntaxhighlight lang="PHP">
  v.SetItem(0, 'IV'); /*Knock Off DocType IV or DN*/
<!DOCTYPE html>
  v.SetItem(1, '--CS Test--'); /*Knock Off DocNo*/
<html>
 
<head>
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
      lDetail.Edit();
</head>
      lDetail.FindField('KOAmt').AsFloat    = "147.09"; /*Partial Knock Off*/  
<body>
      lDetail.FindField('KnockOff').AsString = 'T';
 
      lDetail.Post();
<h1>SQL Acc SDK in PHP page</h1>
  }
    /* Save document */ 
  BizObject.Save();
  BizObject.Close();
}


function PostDataCN() {
<?php
  var BizObject, lMain, lDetail;
echo "Updated 26 Sep 2022<br>";
  BizObject = ComServer.BizObjects.Find('SL_CN') ;


  lMain  = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
$ComServer = null;
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */


  /*Begin Looping yr data*/
function CheckLogin()
  /*Insert Data - Master*/
{
  BizObject.New();
    global $ComServer;
  lMain.FindField('DocNo').AsString      = "--CN Test--";
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
  lMain.FindField('DocDate').value        = "21/12/2022";
     $status = $ComServer->IsLogin();
  lMain.FindField('PostDate').value      = "21/12/2022";
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
  lMain.FindField('CompanyName').AsString = "Cash Sales"
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
  lMain.FindField('Address2').AsString    = ""; /*Optional*/
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
  lMain.FindField('Description').AsString = "Sales Returned";
 
  /*Insert Data - Detail*/ 
  /*For With Item Code*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 1;
  lDetail.FindField('ItemCode').AsString     = "ANT";
  lDetail.FindField('Description').AsString  = "Sales Item B";
  lDetail.FindField('Description2').AsString = "Product Spoil"; /*Reason*/
  lDetail.FindField('Remark1').AsString      = "--IV Test--"; /*Invoice No*/
  lDetail.FindField('Remark2').AsString      = "20 Dec 2022"; /*Invoide Date*/
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('UOM').AsString        = "UNIT";
  lDetail.FindField('Tax').AsString        = "SV";
  lDetail.FindField('TaxRate').AsString    = "6%";
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat      = 100;
  lDetail.FindField('TaxAmt').AsFloat      = 6;
  lDetail.Post();
 
  /*Save Document*/
  BizObject.Save();
  BizObject.Close(); 
}


function PostKnockIVCN() {
    if ($status == true)
  var BizObject, lMain, lDetail, v, lDocNo, lDocKey;
    {
        #$ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF", #DCF file
                      "ACC-0082.FDB"); #Database Name
      
      
  BizObject = ComServer.BizObjects.Find('AR_CN') ;
}


  lMain  = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
function SetGrid($DataSet){
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
echo "<table>";
 
echo "<tr>";
  /* Find CN Number */
    $DataSet->First();
  lDocNo = "--CN Test--"
$fc = $DataSet->Fields->Count-1;
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
for ($x = 0; $x <= $fc; $x++) {
  BizObject.Params.Find('DocKey').Value = lDocKey;
#Insert Header
 
echo "<td>".$DataSet->Fields->Items($x)->FieldName()."</td>";  
  if (lDocKey != null) {
}
  BizObject.Open();
echo "</tr>";
  BizObject.Edit();
  lMain.Edit();
#Looping Dataset
 
while (! $DataSet->Eof()){
  v = ComServer.CreateOleVariantArray(2);
echo "<tr>";
  v.SetItem(0, 'IV'); /*Knock Off DocType IV or DN*/
    for ($x = 0; $x <= $fc; $x++) {
  v.SetItem(1, '--CS Test--'); /*Knock Off DocNo*/
$lFN = $DataSet->Fields->Items($x)->FieldName();
 
    echo "<td>".$DataSet->FindField($lFN)->AsString()."</td>";  
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
    }
  lDetail.Edit();
    echo "</tr>";
      lDetail.FindField('KOAmt').AsFloat    = "100"; /*Partial Knock Off*/  
$DataSet->Next();
      lDetail.FindField('KnockOff').AsString = 'T';
}
      lDetail.Post();
     echo "</table>"."<br>";
  }
     /* Save document */ 
  BizObject.Save();
  BizObject.Close();
  }
}
}


function PostDataCF() {
function GetData(){
  var BizObject, lMain, lDetail, v;
global $ComServer;
      
  BizObject = ComServer.BizObjects.Find('AR_CF') ;
     $lSQL = '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>
 
        <FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>
  lMain  = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
            <FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
            <FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>
 
            </FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>
  BizObject.New();
            <ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>
 
            <ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>
  lMain.FindField('DocNo').AsString         = "--CF Test--";
            <ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>
  lMain.FindField('Code').AsString          = "300-C0001";
            <ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>
  lMain.FindField('DocDate').value          = "24/12/2022";
            <ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>
  lMain.FindField('PostDate').value        = "24/12/2022";
            <ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>
  lMain.FindField('Description').AsString  = "Payment for A/";
            </ROWDATA></DATAPACKET>';
  lMain.FindField('PaymentMethod').AsString = "320-000"; /*Bank or Cash Account*/
  lMain.FindField('ChequeNumber').AsString  = "";
$lRptVar = $ComServer->RptObjects->Find('Customer.Aging.RO');
  lMain.FindField('BankCharge').AsFloat    = 0;
$lRptVar->Params->Find('ActualGroupBy')->AsString = 'Code;CompanyName'; #Fixed
  lMain.FindField('DocAmt').AsFloat         = 6.00;
# $lRptVar->Params->Find('AgentData')->AsBlob              = ; #Not use if AllAgent is True
  lMain.FindField('Cancelled').AsString    = "F";
    $lRptVar->Params->Find('AgingData')->AsString          = $lSQL;
 
    $lRptVar->Params->Find('AgingDate')->AsDate            = '23 Sep 2022';
  v = ComServer.CreateOleVariantArray(2);
    $lRptVar->Params->Find('AgingOn')->AsString             = 'I'; #Fixed
  v.SetItem(0, 'CN'); /*Knock Off DocType*/
    $lRptVar->Params->Find('AllAgent')->AsBoolean          = True;
  v.SetItem(1, '--CN Test--'); /*Knock Off DocNo*/
    $lRptVar->Params->Find('AllArea')->AsBoolean            = True;
 
    $lRptVar->Params->Find('AllCompany')->AsBoolean        = True;
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
    $lRptVar->Params->Find('AllCompanyCategory')->AsBoolean = True;
      lDetail.Edit();
    $lRptVar->Params->Find('AllControlAccount')->AsBoolean  = True;
      lDetail.FindField('KOAmt').AsFloat    = "4"; /*Partial Knock Off*/  
    $lRptVar->Params->Find('AllCurrency')->AsBoolean        = True;
      lDetail.FindField('KnockOff').AsString = 'T';
    $lRptVar->Params->Find('AllDocProject')->AsBoolean      = True;
      lDetail.Post();
#    $lRptVar->Params->Find('AreaData')->AsBlob            = ; #Not use if AllArea is True
  }
#    $lRptVar->Params->Find('CompanyCategoryData')->AsBlob = ; #Not use if AllCompanyCategory is True
    /* Save document */ 
#    $lRptVar->Params->Find('CompanyData')->AsBlob         = ; #Not use if AllCompany is True
  BizObject.Save();
#    $lRptVar->Params->Find('ControlAccountData')->AsBlob  = ; #Not use if AllControlAccount is True
  BizObject.Close();
#    $lRptVar->Params->Find('CurrencyData')->AsBlob        = ; #Not use if AllCurrency is True
#    $lRptVar->Params->Find('DocProjectData')->AsBlob      = ; #Not use if AllDocProject is True
    $lRptVar->Params->Find('FilterPostDate')->AsBoolean      = True;
#    $lRptVar->Params->Find('GroupBy
    $lRptVar->Params->Find('IncludePDC')->AsBoolean        = False;
    $lRptVar->Params->Find('IncludeZeroBalance')->AsBoolean = False;
    $lRptVar->Params->Find('SortBy')->AsString              = 'Code;CompanyName';
    $lRptVar->Params->Find('DateTo')->AsDate                = '23 Sep 2022';
    $lRptVar->Params->Find('IncludeKnockedOffDetail')->AsBoolean = False;
$lRptVar->CalculateReport();
$lDataSetHdr = $lRptVar->DataSets->Find('cdsAgingHeader');
$lDataSet = $lRptVar->DataSets->Find('cdsMain');
$lDataSet2 = $lRptVar->DataSets->Find('cdsDocument');
$lDataSetCO = $lRptVar->DataSets->Find('cdsCompany');
 
    if ($lDataSet->RecordCount > 0) {
echo "Header"."<br>";
SetGrid($lDataSetHdr);
echo "Main Data"."<br>";
SetGrid($lDataSet);
echo "Detail Invoice"."<br>";
SetGrid($lDataSet2);
 
echo "Company Information"."<br>";
SetGrid($lDataSetCO);
 
}else {
    echo "Record Not Found";
    }
}
}


try{
if (isset($_POST['BtnData']))
ComServer = Common.CreateSQLAccServer();
{
console.log("Posting Cash Sales");
     try
     PostDataCS();
     {
     console.log("Posting Payment");
        CheckLogin();
    PostDataPM();
        GetData();
    console.log("Posting Sales CN");
echo "<br>";
    PostDataCN();
        echo date("d M Y h:i:s A")." - Done";
    console.log("Posting Knock Off CN");
     }
     PostKnockIVCN();
     finally
     console.log("Posting Customer Refund");
     {
     PostDataCF();
        #$ComServer->Logout();
    console.log("Done");
        #free the object
ComServer.Logout();
        $ComServer = null;
} catch(e){
    }
console.error(e.message)
} finally {
Common.KillApp();
}
}
?>
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Get AR Aging"/>
    </form>
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Picture & Description3(Rich Text)====
====Get Description3====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Picture & Description3(Rich Text) Script  
! Get Description 3 Script  
|-
|-
|  
|  
<syntaxhighlight lang="nodejsrepl">
<syntaxhighlight lang="PHP">
/* Updated 31 Jul 2023 */
<!DOCTYPE html>
var Common = require('./Common');
<html>
var ComServer, lDataSet;
<body>
const fs = require('fs');


function saveImage(filename, data){
<h1>SQL Acc SDK in PHP page</h1>
  var myBuffer = new Buffer.alloc(data.length);
  for (var i = 0; i < data.length; i++) {
      myBuffer[i] = data[i];
  }
  fs.writeFile(filename, myBuffer, function(err) {
      if(err) {
          console.log(err);
      } else {
          console.log("The Image file was saved!");
      }
  });
}


function ExpFile(AFName, AData){
<?php
const FN = new console.Console(fs.createWriteStream(AFName));
echo "Updated 30 Aug 2024<br>";
    FN.log(AData);
$ComServer = null;
}


function GetData() {
function CheckLogin()
  var lSQL, txt, rtf;
{
  lSQL = "SELECT Description3, Picture FROM ST_ITEM ";
    global $ComServer;
  lSQL = lSQL + "WHERE Code='ANT' ";
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
    $status = $ComServer->IsLogin();
 
 
  lDataSet.First;
    if ($status == true)
  rtf = lDataSet.FindField('Description3').AsString;
    {
  console.log(rtf);
      # $ComServer->Logout();
 
    }
  ExpFile('./output.rtf', rtf);
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
 
                      "C:\eStream\SQLAccounting\Share\Default.DCF"#DCF file
  txt = ComServer.Utility.RichTextToPlainText(rtf);
                      "ACC-0024.FDB"); #Database Name
  Common.ShowMsg(txt);
   
  /* console.log(txt); <= Not support Unicode */
 
  ExpFile('./output.txt', txt);  
  console.log('Done Export');
 
  saveImage("./Pic.jpg", lDataSet.FindField('Picture').Value);
}
}


try{
function GetData(){
ComServer = Common.CreateSQLAccServer();
global $ComServer;
GetData();
ComServer.Logout();
    $lSQL = "SELECT Description3, Picture FROM ST_ITEM
} catch(e){
        WHERE Code='ANT' ";
console.error(e.message)
} finally {
$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);
Common.KillApp();
 
    if ($lDataSet->RecordCount > 0) {
$lDataSet->First();
$rtf = $lDataSet->FindField('Description3')->AsString();
        echo $rtf;
echo "<br>== <br>";
echo "<br>Result after RTF: <br>";
$txt = $ComServer->Utility->RichTextToPlainText($rtf);
echo "<TEXTAREA rows=10 cols=80 id='edResult1' >".$txt. "</TEXTAREA>";
echo "<br>== <br>";
echo "的第一 🐱";
}else {
        echo "Record Not Found";
    }
}
}
</syntaxhighlight>
|}


<div style="float: right;">   [[#top|[top]]]</div>
if (isset($_POST['BtnData']))
<br />
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        #$ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}


===VB Script===
?>
====Get Company Profile====
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Get Data"/>
    </form>
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
 
====AR_PM-Add, Edit & Delete====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Company Profile Script
! AR_PM-Add, Edit & Delete Script  
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="PHP">
'Copy below script & paste to notepad & name it as eg Common.Agent.RO.vbs
<!DOCTYPE html>
Call GetCoInfo
<html>
<body>
Function CreateSQLAccServer
 
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
<h1>SQL Acc SDK in PHP page</h1>
End Function
Function GetCoInfo
Dim ComServer, RptObject, lDataSet
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"
  END IF
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.Agent.RO")
  'Step 3: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsProfile")


  MsgBox "Count " & lDataSet.RecordCount
<?php
echo "Updated 24 Sep 2024<br>";
  'Step 5 Retrieve the output
$ComServer = null;
  lDataSet.First
  While (not lDataSet.eof)
MsgBox "Company Name : " & lDataSet.FindField("CompanyName").AsString
MsgBox "Remark : " & lDataSet.FindField("Remark").AsString


MsgBox "ROC No : " & lDataSet.FindField("RegisterNo").AsString
function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();


MsgBox "GST No : " & lDataSet.FindField("GSTNo").AsString
    if ($status == true)
    {
MsgBox "Address 1 : " & lDataSet.FindField("Address1").AsString
        $ComServer->Logout();
    }
MsgBox "Address 2 : " & lDataSet.FindField("Address2").AsString
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
MsgBox "Address 3 : " & lDataSet.FindField("Address3").AsString
                      "ACC-0024.FDB"); #Database Name
   
MsgBox "Address 4 : " & lDataSet.FindField("Address4").AsString
}
 
function PostData(){
global $ComServer;
MsgBox "Attention : " & lDataSet.FindField("Attention").AsString
    $BizObject = $ComServer->BizObjects->Find("AR_PM");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
MsgBox "Phone : " & lDataSet.FindField("Phone1").AsString
    #Find OR Number
    $lDocNo = "--OR Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
MsgBox "Fax : " & lDataSet.FindField("Fax1").AsString
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
        $lMain->FindField("Description")->AsString = "Payment for A/c - Edited";
$lMain->FindField("DocAmt")->AsFloat = 550.00;
 
        #Knock Off IV 
        $V = array("IV", "--CS Test--");  #DocType, DocNo
if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
$lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 550;
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
}
} else {
      echo "New Payment<br>";
  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = $lDocNo;
  $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23"));  #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Payment for A/c";
      $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
      $lMain->FindField("ChequeNumber")->AsString = "";
      $lMain->FindField("BankCharge")->AsFloat = 0;
      $lMain->FindField("DocAmt")->AsFloat = 200.00;
      $lMain->FindField("Cancelled")->AsString = "F";
MsgBox "E-Mail : " & lDataSet.FindField("EMail").AsString
lDataSet.Next
  Wend


  'Step 6 : Logout after done  
      #Knock Off IV 
  ComServer.Logout   
      $V = array("IV", "--CS Test--"); #DocType, DocNo
End Function
 
</syntaxhighlight>
  if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
|}
  $lDetail->Edit();
  $lDetail->FindField("KOAmt")->AsFloat = 200.0;
  $lDetail->FindField("KnockOff")->AsString = "T";
  $lDetail->Post();
  }
   
}
    $BizObject->Save();
echo "Save with DocNo ".$lMain->FindField("DocNo")->AsString."<br>";
echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();
}


<div style="float: right;">  [[#top|[top]]]</div>
function DelData(){
global $ComServer;
$BizObject = $ComServer->BizObjects->Find("AR_PM");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    #Find PV Number
    $lDocNo = "--OR Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}


====Complete Post====
if (isset($_POST['BtnData']))
{| class="mw-collapsible mw-collapsed wikitable"
{
! SL_CS, AR_PM, SL_CN & AR_CN Script
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}
 
?>
    <form method="post">         
        <input type="submit" name="BtnData"
                value="Add & Edit AR PM"/>
        <input type="submit" name="BtnDel"
                value="Delete AR PM"/>
    </form>
</body>
</html>
 
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer.Statement.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.Statement.RO Script  
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="PHP">
'Updated 13 Sep 2018
<!DOCTYPE html>
'Copy below script & paste to notepad & name it as eg SL_CS.vbs
<html>
'This will doing following posting
<head>
'01. Cash Sales
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
'02. Sales Credit Note
</head>
'03. Customer Payment With Knock off
<body>
'04. Edit Credit Note Posted in Step 02 & Knock Off
 
Call CheckLogin
<h1>SQL Acc SDK in PHP page</h1>
Call InsertData


Dim ComServer
<?php
echo "Updated 28 Oct 2024<br>";


Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function


function CheckLogin
$ComServer = null;
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
  END IF
End Function


Function InsertData
function CheckLogin()
Dim BizObject, lMain, lDetail, lDate
{
  'Step 2: Find and Create the Biz Objects
    global $ComServer;
  Set BizObject = ComServer.BizObjects.Find("SL_CS")  
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();


  'Step 3: Set Dataset
    if ($status == true)
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
    {
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
         $ComServer->Logout();
 
    }
  'Begin Looping yr data
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
  'Step 4 : Insert Data - Master
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
  lDate = CDate("January 1, 2017")
                      "ACC-0082.FDB"); #Database Name
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString      = "--IV Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value      = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
  lMain.FindField("CompanyName").AsString = "Cash Sales"
  lMain.FindField("Address1").AsString    = "" 'Optional
  lMain.FindField("Address2").AsString    = "" 'Optional
  lMain.FindField("Address3").AsString    = "" 'Optional
  lMain.FindField("Address4").AsString    = "" 'Optional
  lMain.FindField("Phone1").AsString      = "" 'Optional
  lMain.FindField("Description").AsString = "Sales"
      
      
  'Step 5: Insert Data - Detail
}
  'For Tax Inclusive = True with override Tax Amount
 
  lDetail.Append
function SetGrid($DataSet){
  lDetail.FindField("DtlKey").value        = -1
echo "<table>";
  lDetail.FindField("DocKey").value        = -1
echo "<tr>";
  lDetail.FindField("Seq").value            = 1
     $DataSet->First();
  lDetail.FindField("Account").AsString     = "500-000" 'Sales Account
$fc = $DataSet->Fields->Count-1;
  lDetail.FindField("Description").AsString = "Sales Item A"
for ($x = 0; $x <= $fc; $x++) {
  lDetail.FindField("Qty").AsFloat          = 1
#Insert Header
  lDetail.FindField("Tax").AsString        = "SR"
echo "<td>".$DataSet->Fields->Items($x)->FieldName()."</td>";
  lDetail.FindField("TaxRate").AsString    = "6%"
}
  lDetail.FindField("TaxInclusive").value  = 0
echo "</tr>";
  lDetail.FindField("UnitPrice").AsFloat    = 435
  lDetail.FindField("Amount").AsFloat      = 410.37 'Exclding GST Amt
#Looping Dataset
  lDetail.FindField("TaxAmt").AsFloat      = 24.63
while (! $DataSet->Eof()){
 
echo "<tr>";
  lDetail.DisableControls
    for ($x = 0; $x <= $fc; $x++) {
  lDetail.FindField("TaxInclusive").value  = 1
$lFN = $DataSet->Fields->Items($x)->FieldName();
  lDetail.EnableControls
    echo "<td>".$DataSet->FindField($lFN)->AsString()."</td>";
 
    }
  lDetail.Post
    echo "</tr>";
 
$DataSet->Next();
  'For Tax Inclusive = False with override Tax Amount
}
  lDetail.Append
    echo "</table>"."<br>";
  lDetail.FindField("DtlKey").value        = -1
}
  lDetail.FindField("DocKey").value        = -1
  lDetail.FindField("Seq").value            = 2
  lDetail.FindField("Account").AsString    = "500-000"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("Qty").AsFloat          = 1
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString    = "6%"
  lDetail.FindField("TaxInclusive").value  = 0
  lDetail.FindField("UnitPrice").AsFloat    = 94.43
  lDetail.FindField("Amount").AsFloat      = 94.43
  lDetail.FindField("TaxAmt").AsFloat      = 5.66
  lDetail.Post


  'For With Item Code
function GetData(){
  lDetail.Append
global $ComServer;
  lDetail.FindField("DtlKey").value        = -1
  lDetail.FindField("DocKey").value        = -1
    $lSQL = '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>
  lDetail.FindField("Seq").value            = 3
        <FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>
  lDetail.FindField("ItemCode").AsString    = "ANT"
            <FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>
  lDetail.FindField("Description").AsString = "Sales Item B"
            <FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>
  'lDetail.FindField("Account").AsString    = "500-000" 'If you wanted override the Sales Account Code
            </FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>
  lDetail.FindField("Qty").AsFloat          = 2
            <ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>
  lDetail.FindField("UOM").AsString         = "UNIT"
            <ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>
  'lDetail.FindField("DISC").AsString       = "5%+3" 'Optional (eg 5% plus 3 Discount)
            <ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>
  lDetail.FindField("Tax").AsString         = "SR"
            <ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>
  lDetail.FindField("TaxRate").AsString    = "6%"
            <ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>
  lDetail.FindField("TaxInclusive").value  = 0
            <ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>
  lDetail.FindField("UnitPrice").AsFloat    = 100 
            </ROWDATA></DATAPACKET>';
  lDetail.FindField("Amount").AsFloat      = 200
  lDetail.FindField("TaxAmt").AsFloat      = 12
$lRptVar = $ComServer->RptObjects->Find('Customer.Statement.RO');
  lDetail.Post
# $lRptVar->Params->Find('AgentData')->AsBlob              = ; #Not use if AllAgent is True
    $lRptVar->Params->Find('AgingData')->AsString          = $lSQL;
    $lRptVar->Params->Find('AgingOn')->AsString             = 'I'; #Fixed
     $lRptVar->Params->Find('AllAgent')->AsBoolean          = True;
    $lRptVar->Params->Find('AllArea')->AsBoolean            = True;
    $lRptVar->Params->Find('AllCompany')->AsBoolean        = True;
    $lRptVar->Params->Find('AllCompanyCategory')->AsBoolean = True;
    $lRptVar->Params->Find('AllControlAccount')->AsBoolean  = True;
    $lRptVar->Params->Find('AllCurrency')->AsBoolean        = True;
    $lRptVar->Params->Find('AllDocProject')->AsBoolean      = True;
#    $lRptVar->Params->Find('AreaData')->AsBlob            = ; #Not use if AllArea is True
#    $lRptVar->Params->Find('CompanyCategoryData')->AsBlob = ; #Not use if AllCompanyCategory is True
#    $lRptVar->Params->Find('CompanyData')->AsBlob         = ; #Not use if AllCompany is True
#    $lRptVar->Params->Find('ControlAccountData')->AsBlob  = ; #Not use if AllControlAccount is True
#    $lRptVar->Params->Find('CurrencyData')->AsBlob       = ; #Not use if AllCurrency is True
#    $lRptVar->Params->Find('DocProjectData')->AsBlob      = ; #Not use if AllDocProject is True
    $lRptVar->Params->Find('DateFrom')->AsDate              = '01 Sep 2024';
$lRptVar->Params->Find('DateTo')->AsDate                = '30 Sep 2024';
$lRptVar->Params->Find('StatementDate')->AsDate        = '30 Sep 2024'; # Norm same as DateTo
$lRptVar->Params->Find('SelectDate')->AsBoolean         = True;
    $lRptVar->Params->Find('IncludeZeroBalance')->AsBoolean = False;
    $lRptVar->Params->Find('SortBy')->AsString             = 'CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount';
     $lRptVar->Params->Find('StatementType')->AsString      = 'O'; #O := Open Item, B := B/F
   
$lRptVar->CalculateReport();
$lDataSet = $lRptVar->DataSets->Find('cdsMain');
$lDataSet2 = $lRptVar->DataSets->Find('cdsDocument');
$lDataSetCO = $lRptVar->DataSets->Find('cdsCompany');
 
    if ($lDataSet->RecordCount > 0) {
echo "Main Data"."<br>";
SetGrid($lDataSet);
echo "Detail Invoice"."<br>";
SetGrid($lDataSet2);


  'Step 6: Save Document
echo "Company Information"."<br>";
  BizObject.Save
SetGrid($lDataSetCO);
  BizObject.Close
 
  'Step 7: Payment
  Call InsertARPM
 
  'Step 8: Credit Note
  Call InsertSLCN
  'End Looping yr data


  'Step 9 : Logout after done 
}else {
  'ComServer.Logout
    echo "Record Not Found";
 
    }
  MsgBox "Done"
}
End Function


Function InsertARPM
if (isset($_POST['BtnData']))
Dim BizObject, lMain, lDetail, lDate, v(1)
{
  'Step 2: Find and Create the Biz Objects
     try
  Set BizObject = ComServer.BizObjects.Find("AR_PM")
     {
        CheckLogin();
  'Step 3: Set Dataset
         GetData();
  Set lMain = BizObject.DataSets.Find("MainDataSet")   'lMain contains master data
echo "<br>";
  Set lDetail = BizObject.DataSets.Find("cdsKnockOff") 'lDetail contains detail data 
         echo date("d M Y h:i:s A")." - Done";
 
     }
  'Step 4 : Posting
     finally
     lDate = CDate("January 23, 2017")
     {
     BizObject.New
        $ComServer->Logout();
    lMain.FindField("DOCKEY").Value          = -1
        #free the object
    lMain.FindField("DocNo").AsString         = "--PM Test--"
        $ComServer = null;
    lMain.FindField("CODE").AsString          = "300-C0001" 'Customer Account
     }
    lMain.FindField("DocDate").Value          = lDate
}
    lMain.FindField("PostDate").Value         = lDate
    lMain.FindField("Description").AsString  = "Payment for A/c"
    lMain.FindField("PaymentMethod").AsString = "320-000" 'Bank or Cash Account
lMain.FindField("ChequeNumber").AsString  = ""
lMain.FindField("BankCharge").AsFloat     = 0
     lMain.FindField("DocAmt").AsFloat        = 200.00
     lMain.FindField("Cancelled").AsString    = "F"
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
    if (lDetail.Locate("DocType;DocNo", v, false, false)) then
      lDetail.Edit
      lDetail.FindField("KOAmt").AsFloat    = 147.09 'Partial Knock off
      lDetail.FindField("KnockOff").AsString = "T"
      lDetail.Post
End IF 
  'Step 6: Save Document
    BizObject.Save
     BizObject.Close
End Function


Function InsertSLCN
?>
Dim BizObject, lMain, lDetail, lDate
    <form method="post">         
  'Step 2: Find and Create the Biz Objects
        <input type="submit" name="BtnData"
  Set BizObject = ComServer.BizObjects.Find("SL_CN")
                value="Get Data"/>
    </form>
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


  'Step 3: Set Dataset
====AP_SP-Add, Edit & Delete====
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
{| class="mw-collapsible mw-collapsed wikitable"
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
! AP_SP-Add, Edit & Delete Script
 
|-
  'Step 4 : Insert Data - Master
|
  lDate = CDate("January 24, 2017")
<syntaxhighlight lang="PHP">
  BizObject.New
<!DOCTYPE html>
  lMain.FindField("DocKey").value        = -1
<html>
  lMain.FindField("DocNo").AsString      = "--CN Test--"
<body>
  lMain.FindField("DocDate").value        = lDate
 
  lMain.FindField("PostDate").value      = lDate
<h1>SQL Acc SDK in PHP page</h1>
  lMain.FindField("Code").AsString        = "300-C0001"
 
  lMain.FindField("CompanyName").AsString = "Cash Sales"
<?php 
  lMain.FindField("Address1").AsString    = ""
echo "Updated 16 Nov 2024<br>";
  lMain.FindField("Address2").AsString    = ""
$ComServer = null;
  lMain.FindField("Address3").AsString    = ""
 
  lMain.FindField("Address4").AsString    = ""
function CheckLogin()
  lMain.FindField("Phone1").AsString      = ""   
{
  lMain.FindField("Description").AsString = "Sales Returned"
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();
 
    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF", #DCF file
                      "ACC-0024.FDB"); #Database Name
      
      
  'For With Item Code
}
  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString  = "Sales Item B"
  lDetail.FindField("Description2").AsString = "Product Spoil" 'Reason
  lDetail.FindField("Remark1").AsString      = "--IV Test--"  'Invoice No
  lDetail.FindField("Remark2").AsString      = "01 Jan 2017"  'Invoice Date
  lDetail.FindField("Qty").AsFloat          = 1
  lDetail.FindField("Tax").AsString          = "SR"
  lDetail.FindField("TaxRate").AsString      = "6%"
  lDetail.FindField("TaxInclusive").value    = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100
  lDetail.FindField("Amount").AsFloat        = 100
  lDetail.FindField("TaxAmt").AsFloat        = 6 
  lDetail.Post


  'Step 6: Save Document
function PostData(){
  BizObject.Save
global $ComServer;
  BizObject.Close
 
    $BizObject = $ComServer->BizObjects->Find("AP_SP");
  'Step 7: Knock Off Invoice
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
  Call KnockIV
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
End Function
 
    #Find PV Number
Function KnockIV
    $lDocNo = "--PV Test--";
Dim BizObject, lMain, lDetail, lDate, v(1)
$lCode = "400-C0001";
  'Step 2: Find and Create the Biz Objects
$V = array($lDocNo, $lCode);  #DocNo, Supplier Code
  Set BizObject = ComServer.BizObjects.Find("AR_CN")  
     $lDocKey = $BizObject->FindKeyByRef("DocNo;Code", $V);
  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsKnockOff") 'lDetail contains Knock off data
 
  'Step 4 : Find CN Number
  lDocNo = "--CN Test--"
  lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  BizObject.Params.Find("DocKey").Value = lDocKey
 
  If not IsNull(lDocKey) Then
     BizObject.Open
    BizObject.Edit
    lMain.Edit
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
    if (lDetail.Locate("DocType;DocNo", v, false, false)) then
if ($lDocKey != null){
      lDetail.Edit
        echo "Dockey = ".$lDocKey."<br>";
      lDetail.FindField("KOAmt").AsFloat    = 106 'Fully Knock off
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
      lDetail.FindField("KnockOff").AsString = "T"
$BizObject->Open();
      lDetail.Post
        $BizObject->Edit();
End IF   
        $lMain->Edit();
  'Step 6: Save Document
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
    BizObject.Save
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
    BizObject.Close
        $lMain->FindField("Description")->AsString = "Payment for A/c - Edited";
  END IF
$lMain->FindField("DocAmt")->AsFloat = 550.00;
End Function
</syntaxhighlight>
|}


<div style="float: right;">   [[#top|[top]]]</div>
        #Knock Off IV 
        $V = array("PI", "--PI Test--");  #DocType, DocNo
if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
$lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 550;
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
}
} else {
      echo "New Payment<br>";
  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = $lDocNo;
  $lMain->FindField("Code")->AsString = $lCode; #Supplier Account
  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23"));  #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Payment for A/c";
      $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
      $lMain->FindField("ChequeNumber")->AsString = "";
      $lMain->FindField("BankCharge")->AsFloat = 0;
      $lMain->FindField("DocAmt")->AsFloat = 200.00;
      $lMain->FindField("Cancelled")->AsString = "F";


====AR_IV====
      #Knock Off IV 
{| class="mw-collapsible mw-collapsed wikitable"
      $V = array("PI", "--PI Test--");  #DocType, DocNo
! AR_IV Script 
 
|-
  if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
|
  $lDetail->Edit();
<syntaxhighlight lang="vb">
  $lDetail->FindField("KOAmt")->AsFloat = 200.0;
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
  $lDetail->FindField("KnockOff")->AsString = "T";
Call InsertARIV
  $lDetail->Post();
  }
   
}
    $BizObject->Save();
echo "Save with DocNo ".$lMain->FindField("DocNo")->AsString."<br>";
echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();
}


Function CreateSQLAccServer
function DelData(){
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
global $ComServer;
End Function
 
$BizObject = $ComServer->BizObjects->Find("AP_SP");
Function InsertARIV
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
Dim ComServer, BizObject, lDataSet, lDataSet2, lDate
    #Find PV Number
    $lDocNo = "--PV Test--";
$lCode = "400-C0001";
$V = array($lDocNo, $lCode);  #DocNo, Supplier Code
    $lDocKey = $BizObject->FindKeyByRef("DocNo;Code", $V);
if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
$BizObject->Open();
        $BizObject->Delete();
echo date("d M Y h:i:s A")." - Record deleted<br>";
} else {
echo date("d M Y h:i:s A")." - Document Not Found<br>";
}
}


  'Step 1: Create Com Server object
if (isset($_POST['BtnData']))
  Set ComServer = CreateSQLAccServer 'Create Com Server
{
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    try
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     {
  END IF
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}


  'Step 2: Find and Create the Biz Objects
if (isset($_POST['BtnDel']))
  Set BizObject = ComServer.BizObjects.Find("AR_IV")  
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}


  'Step 3: Set Dataset
?>
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
    <form method="post">         
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data 
        <input type="submit" name="BtnData"
 
                value="Add & Edit AP SP"/>
  'Step 4 : Insert Data - Master
        <input type="submit" name="BtnDel"
  lDate = CDate("January 1, 2016")
                value="Delete AP SP"/>
  BizObject.New
     </form>
  lMainDataSet.FindField("DocKey").value = -1
</body>
  lMainDataSet.FindField("DocNo").value = "--IV Test--"
</html>
  lMainDataSet.FindField("DocDate").value = lDate
</syntaxhighlight>
  lMainDataSet.FindField("PostDate").value = lDate
|}
  lMainDataSet.FindField("Code").value = "300-A0003"
<div style="float: right;">   [[#top|[top]]]</div>
  lMainDataSet.FindField("Description").value = "Sales"
<br>
      
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item A"
  lDetailDataSet.FindField("Tax").value = "SR"
   lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
 
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value =  1
  lDetailDataSet.EnableControls
 
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post
 
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post


  'Step 6: Save Document
===Node JS===
  BizObject.Save
: Module Require in Node JS
  BizObject.Close
:- Winax (Mandatory) -> npm install winax
  MsgBox "Done"
End Function
</syntaxhighlight>
|}


<div style="float: right;">  [[#top|[top]]]</div>
====Common====
* Common.js file for example code


====AR_IV-Edit====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_IV Edit Script 
! Common Function
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="nodejsrepl">
'Available in Version 5.2018.833.759 & above
/* Updated 31 Jul 2023 */
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
var winax = require('C:\\node_js\\node_modules\\winax'); /* Path where you install winax */
Call CheckLogin
var cp = require('child_process');
Call GetData
Call PostData


Dim ComServer, lDataSet
exports.KillApp = function KillApp(){
cp.exec('start cmd.exe /C "taskkill /IM "SQLACC.exe" /F"');
}


Function CreateSQLAccServer
exports.CreateSQLAccServer = function CreateSQLAccServer() { 
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  var ComServer;
End Function
   ComServer = new winax.Object('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {          /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', /* UserName, Password */
/* 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', */
'D:\\Happy\\DB\\DEFAULT.DCF', /* DCF File */
'ACC-0024.FDB'); /* FDB Name */
  }
  return ComServer;
}


function CheckLogin
exports.ShowResult = function ShowResult(ADataset){
   'Step 1: Create Com Server object
   var fc, fn, fv, lresult;
   Set ComServer = CreateSQLAccServer 'Create Com Server
  ADataset.First;
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   while (!ADataset.Eof){
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
  fc = ADataset.Fields.Count;
                'UserName, Password, DCF full path, Database filename
  for (let i = 0; i < fc; i++) {
   END IF
  fn = ADataset.Fields.Items(i).FieldName;
End Function
          fv = ADataset.FindField(fn).AsString;
  lresult =  "Index : "+ i + " FieldName : " + fn + " Value : " + fv;
  console.log(lresult);
      }
  console.log("====");
      ADataset.Next();  
   }
}


Function GetData
exports.ShowMsg = function ShowMsgShowMsg(AMsg){
Dim lSQL
    try {
  lSQL = "SELECT Dockey FROM AR_IV "
        var WSH = new winax.Object('WScript.Shell');
  lSQL = lSQL & "WHERE DocNo='IV-00002' "
        WSH.popup(AMsg);
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    } catch (e) {
End Function
        console.log(e);
    }
}


Function PostData
</syntaxhighlight>
Dim BizObject, lMain, lDetail
|}
  'Step 2: Find and Create the Biz Objects
<div style="float: right;">  [[#top|[top]]]</div>
  Set BizObject = ComServer.BizObjects.Find("AR_IV")


  'Step 3: Set Dataset
====Get Company Profile====
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
{| class="mw-collapsible mw-collapsed wikitable"
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
! Get Company Profile
 
|-
  'Step 4 : Find Doc Number
|
  If lDataSet.RecordCount > 0 Then    
<syntaxhighlight lang="nodejsrepl">
lDataSet.First
/* Updated 22 Jul 2023 */
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
var Common = require('./Common');
var ComServer, lDataSet;
 
function GetData() {
   var lSQL;
  lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, ";
  lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, ";
  lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    
    
    
   Common.ShowResult(lDataSet);
    BizObject.Open
}
    BizObject.Edit
 
    lMain.Edit
try{
lMain.FindField("Description").AsString = "Sales - Edited"
ComServer = Common.CreateSQLAccServer();
 
GetData();
  'Step 5: Delete all Detail
ComServer.Logout();
    While lDetail.RecordCount <> 0
} catch(e){
      lDetail.First
console.error(e.message)
  lDetail.Delete
} finally {
    Wend
Common.KillApp();
  'Step 6: Append Detail
}
  lDetail.Append 
  lDetail.FindField("DtlKey").value = -1
  lDetail.FindField("Account").value = "500-000"
  lDetail.FindField("Description").value =  "Sales Item A - Edited"
  lDetail.FindField("Tax").value =  "SR"
  lDetail.FindField("TaxRate").value =  "6%"
  lDetail.FindField("TaxInclusive").value =  0
  lDetail.FindField("Amount").value = 100
  lDetail.FindField("TaxAmt").value = 6
 
  lDetail.DisableControls
  lDetail.FindField("TaxInclusive").value =  1
  lDetail.EnableControls
 
  lDetail.FindField("Changed").value = "F"
  lDetail.Post
 
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
 
  'Step 8 : Logout after done 
    'ComServer.Logout 
    MsgBox "Done"
Else
MsgBox "Record Not Found"
  END IF
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_PM====
====Complete Post====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_PM Script 
! Complete Post
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="nodejsrepl">
'Copy below script & paste to notepad & name it as eg AR_PM.vbs
/* Updated 22 Jul 2023
Call PostData
This will doing following posting
01. Cash Sales
Function CreateSQLAccServer
02. Sales Credit Note
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
03. Customer Payment With Knock off
End Function
04. Edit Credit Note Posted in Step 02 & Knock Off
05. Customer Refund to Knock off Credit Note
Function PostData
*/
Dim ComServer, BizObject, lIVNo, v(1), lDate
var Common = require('./Common');
var ComServer;
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
  END IF
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_PM")
  'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsKnockOff") 'lDetailDataSet contains detail data 
 
  'Step 4 : Posting
    lDate = CDate("January 23, 2017")
    BizObject.New
    lMain.FindField("DOCKEY").Value          = -1
    lMain.FindField("DocNo").AsString        = "--PM Test--"
    lMain.FindField("CODE").AsString          = "300-C0001"
    lMain.FindField("DocDate").Value          = lDate
    lMain.FindField("PostDate").Value        = lDate
    lMain.FindField("Description").AsString  = "Payment for A/c"
    lMain.FindField("PaymentMethod").AsString = "310-000"
    lMain.FindField("DocAmt").AsFloat        = 65.57
    lMain.FindField("Cancelled").AsString    = "F"
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
    if (lDetailDataSet.Locate("DocType;DocNo", v, false, false)) then
      lDetailDataSet.Edit
      lDetailDataSet.FindField("KOAmt").value = 65.57
      lDetailDataSet.FindField("KnockOff").AsString = "T"
      lDetailDataSet.Post
End IF 
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  'END IF
End Function
</syntaxhighlight>
|}


<div style="float: right;">  [[#top|[top]]]</div>
function PostDataCS() {
  var BizObject, lMain, lDetail;
  BizObject = ComServer.BizObjects.Find('SL_CS') ;


====AR_PM-Edit====
  lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
{| class="mw-collapsible mw-collapsed wikitable"
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */
! AR_PM Edit Script 
 
|-
  /*Begin Looping yr data*/
|
  /*Insert Data - Master*/
<syntaxhighlight lang="vb">
  BizObject.New();
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
  lMain.FindField('DocNo').AsString      = "--CS Test--";
Call EditARPM
  lMain.FindField('DocDate').value        = "20/12/2022";
  lMain.FindField('PostDate').value      = "20/12/2022";
Function CreateSQLAccServer
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   lMain.FindField('CompanyName').AsString = "Cash Sales"
End Function
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
   lMain.FindField('Address2').AsString    = ""; /*Optional*/
Function EditARPM
   lMain.FindField('Address3').AsString    = ""; /*Optional*/
Dim ComServer, BizObject, lDataSet, lDataSet2, lDocKey, lDocNo, lIVNo, v(1)
   lMain.FindField('Address4').AsString    = ""; /*Optional*/
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
   'Step 1: Create Com Server object
  lMain.FindField('Description').AsString = "Sales";
   Set ComServer = CreateSQLAccServer 'Create Com Server
 
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
  /*Insert Data - Detail*/
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
   /*For Tax Inclusive = True with override Tax Amount*/
   END IF
  lDetail.Append();
   lDetail.FindField('Seq').value            = 1;
   'Step 2: Find and Create the Biz Objects
   lDetail.FindField('Account').AsString    = "500-000"; /*Sales Account*/
   Set BizObject = ComServer.BizObjects.Find("AR_PM")  
  lDetail.FindField('Description').AsString = "Sales Item A";
  lDetail.FindField('Qty').AsFloat          = 1;
   'Step 3: Set Dataset
  lDetail.FindField('Tax').AsString        = "SV";
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
   lDetail.FindField('TaxRate').AsString    = "6%";
   Set lDetailDataSet = BizObject.DataSets.Find("cdsKnockOff") 'lDetailDataSet contains detail data 
   lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat   = 435;
   lDetail.FindField('Amount').AsFloat      = 410.37; /*Exclding Tax Amt*/
  lDetail.FindField('TaxAmt').AsFloat      = 24.63;
    
    
   'Step 4 : Find OR Number
   lDetail.DisableControls();
  lDocNo = "OR-00022"
   lDetail.FindField('TaxInclusive').value  = 1;
   lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
   lDetail.EnableControls();
   BizObject.Params.Find("DocKey").Value = lDocKey
    
    
   If not IsNull(lDocKey) Then
   lDetail.Post();
    BizObject.Open
 
    BizObject.Edit
  /*For Tax Inclusive = False with override Tax Amount*/
     lMainDataSet.Edit
  lDetail.Append();
lMainDataSet.FindField("Description").AsString = "testing"
  lDetail.FindField('Seq').value            = 2;
   'Step 5: Knock Off IV
  lDetail.FindField('Account').AsString     = "500-000";
    lIVNO = "IV-00006"
  lDetail.FindField('Description').AsString = "Sales Item B";
    v(0) = "IV"
   lDetail.FindField('Qty').AsFloat          = 1;
    v(1) = lIVNO
  lDetail.FindField('Tax').AsString        = "SV";
  lDetail.FindField('TaxRate').AsString    = "6%";
    if (lDetailDataSet.Locate("DocType;DocNo", v, false, false)) then
  lDetail.FindField('TaxInclusive').value  = 0;
      lDetailDataSet.Edit
  lDetail.FindField('UnitPrice').AsFloat    = 94.43;
      lDetailDataSet.FindField("KOAmt").value = 50.12
  lDetail.FindField('Amount').AsFloat      = 94.43;
      lDetailDataSet.FindField("KnockOff").AsString = "T"
  lDetail.FindField('TaxAmt').AsFloat      = 5.66;
      lDetailDataSet.Post
  lDetail.Post();
  MsgBox "yes"
 
End IF 
  /*For With Item Code*/
   'Step 6: Save Document
  lDetail.Append();
    BizObject.Save
  lDetail.FindField('Seq').value            = 3;
    BizObject.Close
  lDetail.FindField('ItemCode').AsString    = "ANT";
    MsgBox "Done"
  lDetail.FindField('Description').AsString = "Sales Item B";
  END IF
  /*lDetail.FindField('Account').AsString    = "500-000"; If you wanted override the Sales Account Code*/
End Function
  lDetail.FindField('Qty').AsFloat          = 2;
</syntaxhighlight>
  lDetail.FindField('UOM').AsString        = "UNIT";
|}
  /*lDetail.FindField('DISC').AsString       = "5%+3"; Optional (eg 5% plus 3 Discount)*/
  lDetail.FindField('Tax').AsString        = "SV";
  lDetail.FindField('TaxRate').AsString    = "6%";
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat      = 200;
   lDetail.FindField('TaxAmt').AsFloat      = 12;
  lDetail.Post();
 
  /*Save Document*/
  BizObject.Save();
  BizObject.Close(); 
}


<div style="float: right;">  [[#top|[top]]]</div>
function PostDataPM() {
  var BizObject, lMain, lDetail, v;
   
  BizObject = ComServer.BizObjects.Find('AR_PM') ;


====Customer.RO====
  lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
{| class="mw-collapsible mw-collapsed wikitable"
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
! Customer.RO Report Object Script  
 
|-
  BizObject.New();
|
 
<syntaxhighlight lang="vb">
  lMain.FindField('DocNo').AsString        = "--PM Test--";
'Copy below script & paste to notepad & name it as eg customer_ro.vbs
  lMain.FindField('Code').AsString          = "300-C0001";
Call GetCustomerData
  lMain.FindField('DocDate').value          = "20/12/2022";
  lMain.FindField('PostDate').value        = "20/12/2022";
  lMain.FindField('Description').AsString  = "Payment for A/";
  lMain.FindField('PaymentMethod').AsString = "320-000"; /*Bank or Cash Account*/
  lMain.FindField('ChequeNumber').AsString = "";
  lMain.FindField('BankCharge').AsFloat    = 0;
  lMain.FindField('DocAmt').AsFloat        = 200.00;
  lMain.FindField('Cancelled').AsString    = "F";
 
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType IV or DN*/
  v.SetItem(1, '--CS Test--'); /*Knock Off DocNo*/
 
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
      lDetail.Edit();
      lDetail.FindField('KOAmt').AsFloat    = "147.09"; /*Partial Knock Off*/  
      lDetail.FindField('KnockOff').AsString = 'T';
      lDetail.Post();
  }
    /* Save document */ 
  BizObject.Save();
  BizObject.Close();
}


Function CreateSQLAccServer
function PostDataCN() {
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  var BizObject, lMain, lDetail;
End Function
   BizObject = ComServer.BizObjects.Find('SL_CN') ;


Function GetCustomerData
   lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
   lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"
  END IF


   'Step 2: Find and Create the Report Objects
   /*Begin Looping yr data*/
   Set RptObject = ComServer.RptObjects.Find("Customer.RO")
  /*Insert Data - Master*/
 
   BizObject.New();
   'Step 3: Spool parameters
  lMain.FindField('DocNo').AsString      = "--CN Test--";
   RptObject.Params.Find("AllAgent").Value = true
   lMain.FindField('DocDate').value        = "21/12/2022";
   RptObject.Params.Find("AllArea").Value = true
   lMain.FindField('PostDate').value      = "21/12/2022";
   RptObject.Params.Find("AllCompany").Value = false
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
   RptObject.Params.Find("AllCompanyCategory").Value = true
   lMain.FindField('CompanyName').AsString = "Cash Sales"
   RptObject.Params.Find("AllCurrency").Value = true
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
   RptObject.Params.Find("AllTerms").Value = true
   lMain.FindField('Address2').AsString    = ""; /*Optional*/
   RptObject.Params.Find("SelectDate").Value = true
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
   RptObject.Params.Find("PrintActive").Value = true
   lMain.FindField('Address4').AsString    = ""; /*Optional*/
   RptObject.Params.Find("PrintInactive").Value = false
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
   RptObject.Params.Find("PrintPending").Value = false
   lMain.FindField('Description').AsString = "Sales Returned";
   RptObject.Params.Find("PrintProspect").Value = false
 
   RptObject.Params.Find("PrintSuspend").Value = false
   /*Insert Data - Detail*/ 
   lDateFrom = CDate("January 1, 2000")
  /*For With Item Code*/
   lDateTo = CDate("December 31, 2014")
  lDetail.Append();
 
  lDetail.FindField('Seq').value            = 1;
   RptObject.Params.Find("DateFrom").Value = lDateFrom
   lDetail.FindField('ItemCode').AsString    = "ANT";
   RptObject.Params.Find("DateTo").Value = lDateTo
  lDetail.FindField('Description').AsString  = "Sales Item B";
   RptObject.Params.Find("CompanyData").Value = "300-A0003"
   lDetail.FindField('Description2').AsString = "Product Spoil"; /*Reason*/
  lDetail.FindField('Remark1').AsString      = "--IV Test--"; /*Invoice No*/
   lDetail.FindField('Remark2').AsString      = "20 Dec 2022"; /*Invoide Date*/
   lDetail.FindField('Qty').AsFloat          = 1;
   lDetail.FindField('UOM').AsString        = "UNIT";
   lDetail.FindField('Tax').AsString        = "SV";
   lDetail.FindField('TaxRate').AsString    = "6%";
   lDetail.FindField('TaxInclusive').value  = 0;
   lDetail.FindField('UnitPrice').AsFloat    = 100;
   lDetail.FindField('Amount').AsFloat      = 100;
   lDetail.FindField('TaxAmt').AsFloat      = 6;
  lDetail.Post();
    
    
   'Step 4: Perform Report calculation
   /*Save Document*/
   RptObject.CalculateReport()
   BizObject.Save();
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   BizObject.Close()
  Set lDataSet2 = RptObject.DataSets.Find("cdsBranch")
}
  MsgBox "Count " & lDataSet.RecordCount


  'Step 5 Retrieve the output
function PostKnockIVCN() {
  lDataSet.First
   var BizObject, lMain, lDetail, v, lDocNo, lDocKey;
   While (not lDataSet.eof)
      
     MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString
  BizObject = ComServer.BizObjects.Find('AR_CN') ;
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("Address1").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
  Wend
End Function
</syntaxhighlight>
|}


<div style="float: right;">   [[#top|[top]]]</div>
  lMain  = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
 
   lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
====Customer.Statement.RO====
 
{| class="mw-collapsible mw-collapsed wikitable"
  /* Find CN Number */
! Customer.Statement.RO  Report Object Script 
  lDocNo = "--CN Test--"
|-
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
|
  BizObject.Params.Find('DocKey').Value = lDocKey;
<syntaxhighlight lang="vb">
 
'Copy below script & paste to notepad & name it as eg customer_statement_ro.vbs
  if (lDocKey != null) {
Call GetCustStatementData
  BizObject.Open();
   
  BizObject.Edit();
Function CreateSQLAccServer
  lMain.Edit();
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
 
End Function
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType IV or DN*/
  v.SetItem(1, '--CS Test--'); /*Knock Off DocNo*/
 
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
  lDetail.Edit();
      lDetail.FindField('KOAmt').AsFloat    = "100"; /*Partial Knock Off*/  
      lDetail.FindField('KnockOff').AsString = 'T';
      lDetail.Post();
  }
    /* Save document */  
  BizObject.Save();
  BizObject.Close();
  }
}


Function GetCustStatementData
function PostDataCF() {
Const Quote = """"
  var BizObject, lMain, lDetail, v;
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo, lAgeData
   
  'Step 1: Create Com Server object
   BizObject = ComServer.BizObjects.Find('AR_CF') ;
   Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"
  END IF


   'Step 2: Find and Create the Report Objects
   lMain   = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
   Set RptObject = ComServer.RptObjects.Find("Customer.Statement.RO")  
   lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
   
 
   'Step 3: Spool parameters
  BizObject.New();
  lAgeData = "<?xml version=" & Quote & "1.0" & Quote & " standalone=" & Quote & "yes" & Quote & "?>  <DATAPACKET Version=" & Quote & "2.0" & Quote & "><METADATA><FIELDS>" &_
 
      "<FIELD attrname=" & Quote & "ColumnNo" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "ColumnType" & Quote & " fieldtype=" & Quote & "string" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
  lMain.FindField('DocNo').AsString        = "--CF Test--";
      "<FIELD attrname=" & Quote & "Param1" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "Param2" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/>" &_
  lMain.FindField('Code').AsString          = "300-C0001";
      "<FIELD attrname=" & Quote & "IsLocal" & Quote & " fieldtype=" & Quote & "boolean" & Quote & "/><FIELD attrname=" & Quote & "HeaderScript" & Quote & " fieldtype=" & Quote & "bin.hex" & Quote & " SUBTYPE=" & Quote & "Text" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
  lMain.FindField('DocDate').value          = "24/12/2022";
      "</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo=" & Quote & "0" & Quote & " ColumnType=" & Quote & "" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & "/>" &_
   lMain.FindField('PostDate').value        = "24/12/2022";
      "<ROW ColumnNo=" & Quote & "1" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;" & Quote & "/>" &_
   lMain.FindField('Description').AsString  = "Payment for A/";
      "<ROW ColumnNo=" & Quote & "2" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-1" & Quote & " Param2=" & Quote & "-1" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;" & Quote & "/>" &_
   lMain.FindField('PaymentMethod').AsString = "320-000"; /*Bank or Cash Account*/
      "<ROW ColumnNo=" & Quote & "3" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-2" & Quote & " Param2=" & Quote & "-2" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;" & Quote & "/>" &_
   lMain.FindField('ChequeNumber').AsString  = "";
      "<ROW ColumnNo=" & Quote & "4" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-3" & Quote & " Param2=" & Quote & "-3" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;" & Quote & "/>" &_
   lMain.FindField('BankCharge').AsFloat    = 0;
      "<ROW ColumnNo=" & Quote & "5" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-4" & Quote & " Param2=" & Quote & "-4" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;" & Quote & "/>" &_
  lMain.FindField('DocAmt').AsFloat        = 6.00;
      "<ROW ColumnNo=" & Quote & "6" & Quote & " ColumnType=" & Quote & "B" & Quote & " Param1=" & Quote & "-999999" & Quote & " Param2=" & Quote & "-5" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;" & Quote & "/>" &_
   lMain.FindField('Cancelled').AsString    = "F";
      "</ROWDATA></DATAPACKET>"
 
'  RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is True
   v = ComServer.CreateOleVariantArray(2);
  RptObject.Params.Find("AgingData").Value            = lAgeData 'Fixed
   v.SetItem(0, 'CN'); /*Knock Off DocType*/
   RptObject.Params.Find("AgingOn").Value              = "I" 'Fixed
   v.SetItem(1, '--CN Test--'); /*Knock Off DocNo*/
   RptObject.Params.Find("AllAgent").Value            = true
    
  RptObject.Params.Find("AllArea").Value              = true
   if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
   RptObject.Params.Find("AllCompany").Value          = false
      lDetail.Edit();
  RptObject.Params.Find("AllCompanyCategory").Value  = true
      lDetail.FindField('KOAmt').AsFloat    = "4"; /*Partial Knock Off*/  
   RptObject.Params.Find("AllControlAccount").Value    = true
      lDetail.FindField('KnockOff').AsString = 'T';
  RptObject.Params.Find("AllCurrency").Value          = true
      lDetail.Post();
   RptObject.Params.Find("AllDocProject").Value        = true
  }
'  RptObject.Params.Find("AreaData").Value            =  'Not use if AllArea is True
    /* Save document */   
' RptObject.Params.Find("CompanyCategoryData").Value  = 'Not use if AllCompanyCategory is True
   BizObject.Save();
   RptObject.Params.Find("CompanyData").Value          = "300-A0001"& vbCRLF & "300-C0001" 'Filter by Customer Code 300-A0001 & 300-C0001
   BizObject.Close();
'  RptObject.Params.Find("ControlAccountData").Value   = 'Not use if AllControlAccount is True
}
'  RptObject.Params.Find("CurrencyData").Value        =  'Not use if AllCurrency is True
   lDateFrom = CDate("August 1, 2016")
   lDateTo = CDate("August 31, 2016")
   RptObject.Params.Find("DateFrom").Value            = lDateFrom
   RptObject.Params.Find("DateTo").Value              = lDateTo
' RptObject.Params.Find("DocProjectData").Value      =  'Not use if AllDocProject is True
  RptObject.Params.Find("IncludeZeroBalance").Value  = false
  RptObject.Params.Find("SelectDate").Value          = true
  RptObject.Params.Find("SortBy").Value              = "CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount"
  RptObject.Params.Find("StatementDate").Value        = lDateTo ' Norm same as DateTo
  RptObject.Params.Find("StatementType").Value        = "O" 'O = Open Item, B = B/F
   
   'Step 4: Perform Report calculation
  RptObject.CalculateReport()
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocument")
  MsgBox "Count " & lDataSet.RecordCount


  'Step 5 Retrieve the output
try{
  lDataSet.First
ComServer = Common.CreateSQLAccServer();
  While (not lDataSet.eof)
console.log("Posting Cash Sales");
    MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString & " " & lDataSet.FindField("Balance").AsString
    PostDataCS();
lDataSet2.First
    console.log("Posting Payment");
     While (not lDataSet2.eof)
    PostDataPM();
  MsgBox lDataSet2.FindField("DocNo").AsString
    console.log("Posting Sales CN");
  lDataSet2.Next
    PostDataCN();
    Wend
    console.log("Posting Knock Off CN");
lDataSet.Next
    PostKnockIVCN();
  Wend
    console.log("Posting Customer Refund");
End Function
     PostDataCF();
    console.log("Done");
ComServer.Logout();
} catch(e){
console.error(e.message)
} finally {
Common.KillApp();
}
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL.CB.RO====
====Get Picture & Description3(Rich Text)====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! GL.CB.RO  Report Object Script
! Get Picture & Description3(Rich Text) Script  
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="nodejsrepl">
'Copy below script & paste to notepad & name it as eg GL.CB.RO.vbs
/* Updated 31 Jul 2023 */
Call GetCLCBData
var Common = require('./Common');
var ComServer, lDataSet;
Function CreateSQLAccServer
const fs = require('fs');
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
 
End Function
function saveImage(filename, data){
   var myBuffer = new Buffer.alloc(data.length);
Function GetCLCBData
  for (var i = 0; i < data.length; i++) {
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
      myBuffer[i] = data[i];
  'Step 1: Create Com Server object
  }
  Set ComServer = CreateSQLAccServer 'Create Com Server
  fs.writeFile(filename, myBuffer, function(err) {
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
      if(err) {
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
          console.log(err);
   END IF
      } else {
          console.log("The Image file was saved!");
  'Step 2: Find and Create the Report Objects
      }
  Set RptObject = ComServer.RptObjects.Find("GL.CB.RO")  
   });
}
   'Step 3: Spool parameters
 
   RptObject.Params.Find("AllCurrency").Value    = true
function ExpFile(AFName, AData){
   RptObject.Params.Find("AllDocProject").Value = true
const FN = new console.Console(fs.createWriteStream(AFName));
   RptObject.Params.Find("AllDocument").Value    = true
    FN.log(AData);
   RptObject.Params.Find("AllItemProject").Value = true
}
   RptObject.Params.Find("AllItemArea").Value    = true
 
   RptObject.Params.Find("AllItemAgent").Value   = true
function GetData() {
   RptObject.Params.Find("AllDocAgent").Value    = true
   var lSQL, txt, rtf;
   RptObject.Params.Find("AllDocArea").Value    = true
   lSQL = "SELECT Description3, Picture FROM ST_ITEM ";
   RptObject.Params.Find("AllPaymentMethod").Value = false
  lSQL = lSQL + "WHERE Code='ANT' ";
   'RptObject.Params.Find("CurrencyData").Value    = 'Not use if AllCurrency is true
   lDataSet = ComServer.DBManager.NewDataSet(lSQL);  
    
   lDataSet.First;
   rtf = lDataSet.FindField('Description3').AsString;
   console.log(rtf);
    
   ExpFile('./output.rtf', rtf);
 
   txt = ComServer.Utility.RichTextToPlainText(rtf);
   Common.ShowMsg(txt);
   /* console.log(txt); <= Not support Unicode */
    
    
   lDateFrom = CDate("January 01, 2017")
   ExpFile('./output.txt', txt)
  lDateTo = CDate("December 31, 2017")
   console.log('Done Export');
  'For Post Date From & Date To'
  RptObject.Params.Find("DateFrom").Value = lDateFrom
   RptObject.Params.Find("DateTo").Value  = lDateTo
    
    
   'RptObject.Params.Find("DocProjectData").Value  = 'Not use if AllDocProject is true
   saveImage("./Pic.jpg", lDataSet.FindField('Picture').Value);
  'RptObject.Params.Find("DocAreaData").Value    = 'Not use if AllDocArea is true
}
  'RptObject.Params.Find("DocAgentData").Value    = 'Not use if AllDocAgent is true
 
  'RptObject.Params.Find("ItemAgentData").Value  = 'Not use if AllItemAgent is true
try{
  RptObject.Params.Find("DocType").Value         = "PV" 'PV for Payment Voucher & OR for Official Receipt
ComServer = Common.CreateSQLAccServer();
  'RptObject.Params.Find("DocumentData").Value    = 'Not use if AllDocument is true
GetData();
  'RptObject.Params.Find("GroupBy").Value        = 'If you wanted to grouping the data
ComServer.Logout();
  RptObject.Params.Find("IncludeCancelled").Value = false
} catch(e){
  'RptObject.Params.Find("ItemAreaData").Value    = 'Not use if AllItemArea is true
console.error(e.message)
  'RptObject.Params.Find("ItemProjectData").Value = 'Not use if AllItemProject is true
} finally {
  RptObject.Params.Find("PaymentMethodData").Value  = "310-001"
Common.KillApp();
  RptObject.Params.Find("PrintDocumentStyle").Value = false
}
  RptObject.Params.Find("SelectDate").Value        = true 'For Post Date
  'RptObject.Params.Find("SelectDocDate").Value    = 'For Doc Date
  RptObject.Params.Find("SortBy").Value            = "PostDate;DocNo"
  'Step 4: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDetail")
  Set lDataSet3 = RptObject.DataSets.Find("cdsTax")
  MsgBox "Count " & lDataSet.RecordCount
  'Step 5 Retrieve the output
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Description").AsString
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
  Wend
  'For GST List
  MsgBox "GST Code Count " & lDataSet3.RecordCount
  lDataSet3.First
  While (not lDataSet3.eof)
    MsgBox lDataSet3.FindField("Code").AsString
lDataSet3.Next
  Wend
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}


<div style="float: right;">  [[#top|[top]]]</div>
====Get Stock Qty Balance====
{| class="mw-collapsible mw-collapsed wikitable"
! Get Stock Qty Balance Script
|-
|
<syntaxhighlight lang="nodejsrepl">
/* Updated 18 Jan 2024 */
var Common = require('./Common');
var ComServer;
function GetListData() {
  var lSQL, lDataSet;
  lSQL = "SELECT  ItemCode, Location, Batch, Sum(Qty) Qty  FROM ST_TR  ";
  lSQL = lSQL + "WHERE PostDate<='31 Dec 2019' ";
  lSQL = lSQL + "AND ITEMCODE ='ANT' ";
  lSQL = lSQL + "GROUP BY ItemCode, Location, Batch ";
 
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
 
  Common.ShowResult(lDataSet);
}
try{
ComServer = Common.CreateSQLAccServer();
GetListData();
ComServer.Logout();
} catch(e){
console.error(e.message)
} finally {
Common.KillApp();
}
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_Customer====
====SO to DO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_Customer - Script
! SO to DO Script  
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="nodejsrepl">
'Copy below script & paste to notepad & name it as eg AR_Customer.vbs
/*Updated 26 Apr 2024*/
Call CheckLogin
var Common = require('./Common');
Call InsertData
var ComServer;


Dim ComServer
function PostData() {
  var BizObject, lMain, lDetail, lSQL, lDataSet;
 
  lSQL = "SELECT Dockey, DocNo,Code, CompanyName, DocProject, Seq, DtlKey, ItemCode, Description, Qty, UOM, UnitPrice, Disc, Amount, DtlProject, ";
  lSQL = lSQL + "Tax, TaxRate, TaxInclusive, TaxAmt, COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM ( ";
  lSQL = lSQL + "SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName, A.Project DocProject, ";
  lSQL = lSQL + "B.DtlKey, B.Seq, B.ItemCode, B.Description, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount, ";
  lSQL = lSQL + "B.Tax, B.TaxRate, B.TaxInclusive, B.TaxAmt, B.Project DtlProject, C.Qty XFQty FROM SL_SO A ";
  lSQL = lSQL + "INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY) ";
  lSQL = lSQL + "LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY ";
  lSQL = lSQL + "                          AND C.FROMDOCTYPE='SO') ";
  lSQL = lSQL + "WHERE A.DOCNO='SO-00041') ";
  lSQL = lSQL + "GROUP BY Dockey, DocNo, Code, CompanyName, DocProject, Seq, Dtlkey, ItemCode, Description, Qty, UOM, UnitPrice, Disc, ";
  lSQL = lSQL +" Amount, DtlProject, Tax, TaxRate, TaxInclusive, TaxAmt ";
  lSQL = lSQL + "HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0 ";
 
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
 
  if (lDataSet.RecordCount > 0) {
  BizObject = ComServer.BizObjects.Find('SL_DO') ;  
  lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */  


Function CreateSQLAccServer
  BizObject.New();
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  lMain.FindField('DocNo').AsString      = "<<New>>";
End Function
      lMain.FindField('DocDate').value        = "26/04/2024";
      lMain.FindField('PostDate').value      = "26/04/2024";
      lMain.FindField('Code').AsString        = lDataSet.FindField('Code').AsString; /*Customer Account*/
      lMain.FindField('Description').AsString = "Post from 3rd Party";
 
  lDataSet.First;
  while (!lDataSet.Eof){ 
  lDetail.Append();
          lDetail.FindField('Seq').value            = lDataSet.FindField('Seq').Value;
          lDetail.FindField('ItemCode').AsString    = lDataSet.FindField('ItemCode').AsString;
          lDetail.FindField('Description').AsString = lDataSet.FindField('Description').AsString;
          lDetail.FindField('Qty').AsFloat          = lDataSet.FindField('OSQty').AsFloat;/*Transfer all balance Qty*/
          lDetail.FindField('UOM').AsString        = lDataSet.FindField('UOM').AsString;
          lDetail.FindField('DISC').value          = lDataSet.FindField('DISC').AsString;
          lDetail.FindField('Tax').value            = lDataSet.FindField('Tax').AsString;
          lDetail.FindField('TaxRate').value        = lDataSet.FindField('TaxRate').AsString;
          lDetail.FindField('TaxInclusive').value   = lDataSet.FindField('TaxInclusive').value;
          lDetail.FindField('UnitPrice').AsFloat    = lDataSet.FindField('UnitPrice').AsFloat ;
          lDetail.FindField('Amount').AsFloat      = lDataSet.FindField('Amount').AsFloat;
          lDetail.FindField('TaxAmt').AsFloat      = lDataSet.FindField('TaxAmt').AsFloat;
  lDetail.FindField('FromDocType').AsString = "SO"; /*From Document Type*/
          lDetail.FindField('FromDockey').AsFloat  = lDataSet.FindField('Dockey').AsFloat;
          lDetail.FindField('FromDtlkey').AsFloat  = lDataSet.FindField('DtlKey').AsFloat;
          lDetail.Post();
          lDataSet.Next();
  }
      /*Save Document*/
      BizObject.Save();
  BizObject.Close();
  } else
  console.log("Record Not Found");
}


function CheckLogin
 
 
try{
ComServer = Common.CreateSQLAccServer();
console.log("Posting SO to DO");
    PostData();
    console.log("Done");
ComServer.Logout();
} catch(e){
console.error(e.message)
} finally {
Common.KillApp();
}
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
<br />
 
===VB Script===
====Get Company Profile====
{| class="mw-collapsible mw-collapsed wikitable"
! Company Profile Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Common.Agent.RO.vbs
Call GetCoInfo
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
Function GetCoInfo
Dim ComServer, RptObject, lDataSet
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.Agent.RO")
  'Step 3: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsProfile")
 
  MsgBox "Count " & lDataSet.RecordCount
  'Step 5 Retrieve the output
  lDataSet.First
  While (not lDataSet.eof)
MsgBox "Company Name : " & lDataSet.FindField("CompanyName").AsString
MsgBox "Remark : " & lDataSet.FindField("Remark").AsString


Function InsertData
MsgBox "ROC No : " & lDataSet.FindField("RegisterNo").AsString
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_Customer")  


  'Step 3: Set Dataset
MsgBox "GST No : " & lDataSet.FindField("GSTNo").AsString
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsBranch") 'lDetail contains detail data 
MsgBox "Address 1 : " & lDataSet.FindField("Address1").AsString
 
  'Begin Looping yr data
MsgBox "Address 2 : " & lDataSet.FindField("Address2").AsString
  'Step 4 : Insert Data - Master
  BizObject.New
MsgBox "Address 3 : " & lDataSet.FindField("Address3").AsString
  lMain.FindField("Code").AsString      = "300-Test"
  lMain.FindField("CompanyName").AsString = "Cash Sales"
MsgBox "Address 4 : " & lDataSet.FindField("Address4").AsString
   
  'Step 5: Insert Data - Detail
MsgBox "Attention : " & lDataSet.FindField("Attention").AsString
  'For 1st Branch
  lDetail.Edit
MsgBox "Phone : " & lDataSet.FindField("Phone1").AsString
  lDetail.FindField("BranchName").AsString  = "BILLING"
  lDetail.FindField("Address1").AsString   = "Address1"
MsgBox "Fax : " & lDataSet.FindField("Fax1").AsString
  lDetail.FindField("Address2").AsString   = "Address2"
  lDetail.FindField("Address3").AsString   = "Address3"
MsgBox "E-Mail : " & lDataSet.FindField("EMail").AsString
  lDetail.FindField("Address4").AsString   = "Address4" 
lDataSet.Next
  lDetail.FindField("Attention").AsString  = "Attention" 
   Wend
  lDetail.FindField("Phone1").AsString     = "Phone1"
  lDetail.FindField("Fax1").AsString        = "Fax1"
  lDetail.FindField("Email").AsString      = "EmailAddress"
  lDetail.Post
 
  'For 2nd Branch
  lDetail.Append
  lDetail.FindField("BranchName").AsString = "Branch1"
  lDetail.FindField("Address1").AsString    = "DAddress1"
  lDetail.FindField("Address2").AsString    = "DAddress2"
  lDetail.FindField("Address3").AsString   = "DAddress3"
  lDetail.FindField("Address4").AsString    = "DAddress4" 
  lDetail.FindField("Attention").AsString  = "DAttention" 
  lDetail.FindField("Phone1").AsString      = "DPhone1"
  lDetail.FindField("Fax1").AsString       = "DFax1"
  lDetail.FindField("Email").AsString      = "DEmailAddress"
   lDetail.Post


   'Step 6: Save Document
   'Step 6 : Logout after done   
  BizObject.Save
   ComServer.Logout  
  BizObject.Close
  'End Looping yr data
 
  'Step 7 : Logout after done   
   'ComServer.Logout
 
  MsgBox "Done" 
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 6,754: Line 7,066:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_Customer-Edit====
====Complete Post====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_Customer - Edit Script   
! SL_CS, AR_PM, SL_CN & AR_CN Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg AR_Customer.vbs
'Updated 13 Sep 2018
Call EditARCustomer
'Copy below script & paste to notepad & name it as eg SL_CS.vbs
'This will doing following posting
'01. Cash Sales
'02. Sales Credit Note
'03. Customer Payment With Knock off
'04. Edit Credit Note Posted in Step 02 & Knock Off
Call CheckLogin
Call InsertData
 
Dim ComServer
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function EditARCustomer
function CheckLogin
Dim ComServer, BizObject, lDataSet, lDataSet2
   'Step 1: Create Com Server object
   'Step 1 Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
   'Step 2 Find and Create the Biz Objects
 
   Set BizObject = ComServer.BizObjects.Find("AR_Customer")  
Function InsertData
Dim BizObject, lMain, lDetail, lDate
   'Step 3 Set Dataset
   'Step 2: Find and Create the Biz Objects
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet") 'lMainDataSet contains master data
   Set BizObject = ComServer.BizObjects.Find("SL_CS")  
   Set lDetailDataSet = BizObject.DataSets.Find("cdsBranch") 'lDetailDataSet contains detail data   
 
   'Step 3: Set Dataset
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
    
    
   'Step 4 Find Customer Code
  'Begin Looping yr data
   BizObject.Params.Find("Code").Value = "300-Test"
   'Step 4 : Insert Data - Master
    
  lDate = CDate("January 1, 2017")
  BizObject.Open
   BizObject.New
   BizObject.Edit
  lMain.FindField("DocKey").value        = -1
  lMainDataSet.Edit
  lMain.FindField("DocNo").AsString      = "--IV Test--"
   lMainDataSet.FindField("CompanyName").value = "Testing 123-Changed"
   lMain.FindField("DocDate").value        = lDate
   lMain.FindField("PostDate").value      = lDate
   'Step 5 For 1st Branch
   lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
    v = "BILLING"
   lMain.FindField("CompanyName").AsString = "Cash Sales"
  lMain.FindField("Address1").AsString   = "" 'Optional
    if (lDetailDataSet.Locate("BranchName", v, false, false)) then
  lMain.FindField("Address2").AsString   = "" 'Optional
  lDetailDataSet.Edit
  lMain.FindField("Address3").AsString   = "" 'Optional
      lDetailDataSet.FindField("Address1").AsString   = "Address1-Changed"
  lMain.FindField("Address4").AsString   = "" 'Optional
      lDetailDataSet.FindField("Address2").AsString   = "Address2-Changed"
  lMain.FindField("Phone1").AsString     = "" 'Optional
      lDetailDataSet.FindField("Address3").AsString   = "Address3-Changed"
  lMain.FindField("Description").AsString = "Sales"
      lDetailDataSet.FindField("Address4").AsString   = "Address4-Changed"
      
      lDetailDataSet.FindField("Attention").AsString = "Attention-Changed"
  'Step 5: Insert Data - Detail
      lDetailDataSet.FindField("Phone1").AsString    = "Phone1-Changed"
  'For Tax Inclusive = True with override Tax Amount
      lDetailDataSet.FindField("Fax1").AsString      = "Fax1-Changed"
  lDetail.Append
      lDetailDataSet.FindField("Email").AsString     = "EmailAddress-Changed"
  lDetail.FindField("DtlKey").value        = -1
      lDetailDataSet.Post
  lDetail.FindField("DocKey").value        = -1
end if
  lDetail.FindField("Seq").value            = 1
'Step 5 For 2nd Branch
  lDetail.FindField("Account").AsString     = "500-000" 'Sales Account
    v = "Branch1"
  lDetail.FindField("Description").AsString = "Sales Item A"
  lDetail.FindField("Qty").AsFloat          = 1
    if (lDetailDataSet.Locate("BranchName", v, false, false)) then
  lDetail.FindField("Tax").AsString         = "SR"
      lDetailDataSet.Edit
  lDetail.FindField("TaxRate").AsString     = "6%"
      lDetailDataSet.FindField("Address1").AsString   = "DAddress1-Changed"
  lDetail.FindField("TaxInclusive").value  = 0
      lDetailDataSet.FindField("Address2").AsString   = "DAddress2-Changed"
   lDetail.FindField("UnitPrice").AsFloat    = 435
      lDetailDataSet.FindField("Address3").AsString   = "DAddress3-Changed"
  lDetail.FindField("Amount").AsFloat      = 410.37 'Exclding GST Amt
       lDetailDataSet.FindField("Address4").AsString   = "DAddress4-Changed"
  lDetail.FindField("TaxAmt").AsFloat       = 24.63
      lDetailDataSet.FindField("Attention").AsString = "DAttention-Changed"
 
      lDetailDataSet.FindField("Phone1").AsString     = "DPhone1-Changed"
  lDetail.DisableControls
      lDetailDataSet.FindField("Fax1").AsString       = "DFax1-Changed"
  lDetail.FindField("TaxInclusive").value  = 1
      lDetailDataSet.FindField("Email").AsString     = "DEmailAddress-Changed"
  lDetail.EnableControls
      lDetailDataSet.Post 
 
  end IF
  lDetail.Post
   'Step 6 Save Customer
 
   BizObject.Save
   'For Tax Inclusive = False with override Tax Amount
   BizObject.Close
  lDetail.Append
   MsgBox "Done"
  lDetail.FindField("DtlKey").value        = -1
End Function
  lDetail.FindField("DocKey").value        = -1
</syntaxhighlight>
  lDetail.FindField("Seq").value            = 2
|}
  lDetail.FindField("Account").AsString     = "500-000"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("Qty").AsFloat          = 1
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString     = "6%"
  lDetail.FindField("TaxInclusive").value   = 0
   lDetail.FindField("UnitPrice").AsFloat    = 94.43
   lDetail.FindField("Amount").AsFloat      = 94.43
   lDetail.FindField("TaxAmt").AsFloat      = 5.66
  lDetail.Post


<div style="float: right;">   [[#top|[top]]]</div>
  'For With Item Code
  lDetail.Append
  lDetail.FindField("DtlKey").value        = -1
  lDetail.FindField("DocKey").value        = -1
  lDetail.FindField("Seq").value            = 3
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Sales Item B"
  'lDetail.FindField("Account").AsString    = "500-000" 'If you wanted override the Sales Account Code
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UOM").AsString        = "UNIT"
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString        = "SR"
  lDetail.FindField("TaxRate").AsString    = "6%"
  lDetail.FindField("TaxInclusive").value  = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100 
  lDetail.FindField("Amount").AsFloat      = 200
  lDetail.FindField("TaxAmt").AsFloat      = 12
  lDetail.Post
 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
 
  'Step 7: Payment
  Call InsertARPM
 
  'Step 8: Credit Note
  Call InsertSLCN
   'End Looping yr data


====GL.TrialBalance.RO====
  'Step 9 : Logout after done  
{| class="mw-collapsible mw-collapsed wikitable"
  'ComServer.Logout
! GL Trial Balance  Report Object Script  
 
|-
   MsgBox "Done"
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg GL.TrialBalance.RO.vbs
Call GetGLTBData
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
Function InsertARPM
Dim BizObject, lMain, lDetail, lDate, v(1)
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_PM")
   
   
Function GetGLTBData
   'Step 3: Set Dataset
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
   Set lMain = BizObject.DataSets.Find("MainDataSet")   'lMain contains master data
   'Step 1: Create Com Server object
   Set lDetail = BizObject.DataSets.Find("cdsKnockOff") 'lDetail contains detail data 
   Set ComServer = CreateSQLAccServer 'Create Com Server
 
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   'Step 4 : Posting
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"
    lDate = CDate("January 23, 2017")
  END IF
    BizObject.New
    lMain.FindField("DOCKEY").Value           = -1
   'Step 2: Find and Create the Report Objects
    lMain.FindField("DocNo").AsString        = "--PM Test--"
   Set RptObject = ComServer.RptObjects.Find("GL.TrialBalance.RO")  
    lMain.FindField("CODE").AsString          = "300-C0001" 'Customer Account
    lMain.FindField("DocDate").Value         = lDate
   'Step 3: Spool parameters
    lMain.FindField("PostDate").Value        = lDate
  RptObject.Params.Find("AllProject").Value     = true
    lMain.FindField("Description").AsString  = "Payment for A/c"
  RptObject.Params.Find("AllAgent").Value       = true
    lMain.FindField("PaymentMethod").AsString = "320-000" 'Bank or Cash Account
  RptObject.Params.Find("AllArea").Value        = true
lMain.FindField("ChequeNumber").AsString  = ""
  RptObject.Params.Find("LedgerType").Value      = "G" 'G = Legder, S = Debtor, P = Supplier
lMain.FindField("BankCharge").AsFloat    = 0
  'RptObject.Params.Find("ProjectData").Value    = 'Not use if AllArea is true
    lMain.FindField("DocAmt").AsFloat        = 200.00
  RptObject.Params.Find("ShowZeroBalance").Value = false
    lMain.FindField("Cancelled").AsString    = "F"
  RptObject.Params.Find("SortBy").Value          = "PostDate;DocNo"  
  'Step 5: Knock Off IV
  RptObject.Params.Find("UseDescription2").Value = false
    lIVNO = "--IV Test--"
 
    v(0) = "IV"
  lDateFrom = CDate("October 27, 2016")
    v(1) = lIVNO
  lDateTo = CDate("December 31, 2016")
    if (lDetail.Locate("DocType;DocNo", v, false, false)) then
  'For Post Date From & Date To'
      lDetail.Edit
  RptObject.Params.Find("DateFrom").Value       = lDateFrom
      lDetail.FindField("KOAmt").AsFloat    = 147.09 'Partial Knock off
   RptObject.Params.Find("DateTo").Value        = lDateTo
      lDetail.FindField("KnockOff").AsString = "T"
       lDetail.Post
End IF 
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
End Function
 
Function InsertSLCN
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("SL_CN")  


   'RptObject.Params.Find("AgentData").Value      = 'Not use if AllAgent is true
   'Step 3: Set Dataset
   'RptObject.Params.Find("AreaData").Value      = 'Not use if AllArea is true
  Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   RptObject.Params.Find("SortBy").Value          = "Code;Description"  
   'Step 4 : Insert Data - Master
  lDate = CDate("January 24, 2017")
   'Step 4: Perform Report calculation
  BizObject.New
   RptObject.CalculateReport()
  lMain.FindField("DocKey").value        = -1
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
  lMain.FindField("DocNo").AsString      = "--CN Test--"
   Set lDataSet2 = RptObject.DataSets.Find("cdsGLAccount")
  lMain.FindField("DocDate").value        = lDate
 
   lMain.FindField("PostDate").value      = lDate
   MsgBox "Count " & lDataSet.RecordCount
   lMain.FindField("Code").AsString        = "300-C0001"
   lMain.FindField("CompanyName").AsString = "Cash Sales"
   'Step 5 Retrieve the output
  lMain.FindField("Address1").AsString    = ""
   lDataSet.First
  lMain.FindField("Address2").AsString    = ""
   While (not lDataSet.eof)
   lMain.FindField("Address3").AsString    = ""
    MsgBox "Month To Date"
  lMain.FindField("Address4").AsString    = ""
MsgBox lDataSet.FindField("Code").AsString & " DR=>" & lDataSet.FindField("MTDDR").AsString & " CR=>" & lDataSet.FindField("MTDCR").AsString
  lMain.FindField("Phone1").AsString      = "" 
   lMain.FindField("Description").AsString = "Sales Returned"
MsgBox "Year To Date"
   
MsgBox lDataSet.FindField("Code").AsString & " DR=>" & lDataSet.FindField("YTDDR").AsString & " CR=>" & lDataSet.FindField("YTDCR").AsString
   'For With Item Code
lDataSet.Next
   lDetail.Append
   Wend
   lDetail.FindField("DtlKey").value          = -1
    
  lDetail.FindField("DocKey").value          = -1
   'For Account List
  lDetail.FindField("ItemCode").AsString     = "ANT"
  lDataSet2.First
  lDetail.FindField("Description").AsString = "Sales Item B"
  While (not lDataSet2.eof)
  lDetail.FindField("Description2").AsString = "Product Spoil" 'Reason
MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
  lDetail.FindField("Remark1").AsString     = "--IV Test--"   'Invoice No
lDataSet2.Next
  lDetail.FindField("Remark2").AsString     = "01 Jan 2017"   'Invoice Date
   Wend
  lDetail.FindField("Qty").AsFloat          = 1
  lDetail.FindField("Tax").AsString          = "SR"
   lDetail.FindField("TaxRate").AsString      = "6%"
   lDetail.FindField("TaxInclusive").value    = 0
   lDetail.FindField("UnitPrice").AsFloat    = 100
  lDetail.FindField("Amount").AsFloat        = 100
  lDetail.FindField("TaxAmt").AsFloat        = 6 
  lDetail.Post
 
  'Step 6: Save Document
  BizObject.Save
   BizObject.Close
    
    
  'Step 7: Knock Off Invoice
  Call KnockIV
End Function
End Function
</syntaxhighlight>
|}


<div style="float: right;">   [[#top|[top]]]</div>
Function KnockIV
 
Dim BizObject, lMain, lDetail, lDate, v(1)
====Customer.Aging.RO====
  'Step 2: Find and Create the Biz Objects
{| class="mw-collapsible mw-collapsed wikitable"
   Set BizObject = ComServer.BizObjects.Find("AR_CN")
! Customer Aging  Report Object Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg customer_aging_ro.vbs
Call GetCustStatementData
   
   
Function CreateSQLAccServer
  'Step 3: Set Dataset
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsKnockOff") 'lDetail contains Knock off data 
 
  'Step 4 : Find CN Number
  lDocNo = "--CN Test--"
  lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  BizObject.Params.Find("DocKey").Value = lDocKey
 
  If not IsNull(lDocKey) Then
    BizObject.Open
    BizObject.Edit
    lMain.Edit
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
    if (lDetail.Locate("DocType;DocNo", v, false, false)) then
      lDetail.Edit
      lDetail.FindField("KOAmt").AsFloat    = 106 'Fully Knock off
      lDetail.FindField("KnockOff").AsString = "T"
      lDetail.Post
End IF   
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
  END IF
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====AR_IV====
{| class="mw-collapsible mw-collapsed wikitable"
! AR_IV Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
Call InsertARIV
 
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function


Function GetCustStatementData
Function InsertARIV
Const Quote = """"
Dim ComServer, BizObject, lDataSet, lDataSet2, lDate
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo, lAgeData
 
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
   END IF
   END IF


   'Step 2: Find and Create the Report Objects
   'Step 2: Find and Create the Biz Objects
   Set RptObject = ComServer.RptObjects.Find("Customer.Aging.RO")  
   Set BizObject = ComServer.BizObjects.Find("AR_IV")  
 
   'Step 3: Spool parameters
   'Step 3: Set Dataset
   lAgeData = "<?xml version=" & Quote & "1.0" & Quote & " standalone=" & Quote & "yes" & Quote & "?> <DATAPACKET Version=" & Quote & "2.0" & Quote & "><METADATA><FIELDS>" &_
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
      "<FIELD attrname=" & Quote & "ColumnNo" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "ColumnType" & Quote & " fieldtype=" & Quote & "string" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
      "<FIELD attrname=" & Quote & "Param1" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "Param2" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/>" &_
 
      "<FIELD attrname=" & Quote & "IsLocal" & Quote & " fieldtype=" & Quote & "boolean" & Quote & "/><FIELD attrname=" & Quote & "HeaderScript" & Quote & " fieldtype=" & Quote & "bin.hex" & Quote & " SUBTYPE=" & Quote & "Text" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
  'Step 4 : Insert Data - Master
      "</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo=" & Quote & "0" & Quote & " ColumnType=" & Quote & "" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & "/>" &_
  lDate = CDate("January 1, 2016")
      "<ROW ColumnNo=" & Quote & "1" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;" & Quote & "/>" &_
  BizObject.New
      "<ROW ColumnNo=" & Quote & "2" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-1" & Quote & " Param2=" & Quote & "-1" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;" & Quote & "/>" &_
  lMainDataSet.FindField("DocKey").value = -1
      "<ROW ColumnNo=" & Quote & "3" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-2" & Quote & " Param2=" & Quote & "-2" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;" & Quote & "/>" &_
  lMainDataSet.FindField("DocNo").value = "--IV Test--"
      "<ROW ColumnNo=" & Quote & "4" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-3" & Quote & " Param2=" & Quote & "-3" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;" & Quote & "/>" &_
  lMainDataSet.FindField("DocDate").value = lDate
      "<ROW ColumnNo=" & Quote & "5" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-4" & Quote & " Param2=" & Quote & "-4" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;" & Quote & "/>" &_
  lMainDataSet.FindField("PostDate").value = lDate
      "<ROW ColumnNo=" & Quote & "6" & Quote & " ColumnType=" & Quote & "B" & Quote & " Param1=" & Quote & "-999999" & Quote & " Param2=" & Quote & "-5" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;" & Quote & "/>" &_
  lMainDataSet.FindField("Code").value = "300-A0003"
      "</ROWDATA></DATAPACKET>"
  lMainDataSet.FindField("Description").value = "Sales"
   RptObject.Params.Find("ActualGroupBy").Value        = "Code;CompanyName" 'Fixed
   
'  RptObject.Params.Find("AgentData").Value            =  'Not use if AllAgent is True
  'Step 5: Insert Data - Detail
   RptObject.Params.Find("AgingData").Value            = lAgeData 'Fixed
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value = "Sales Item A"
  lDetailDataSet.FindField("Tax").value = "SR"
  lDetailDataSet.FindField("TaxInclusive").value = 0
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
 
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value = 1
  lDetailDataSet.EnableControls
 
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post
 
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value = "Sales Item B"
  lDetailDataSet.FindField("Tax").value = "SR"
  lDetailDataSet.FindField("TaxInclusive").value = 0
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
   lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post
 
  'Step 6: Save Document
   BizObject.Save
  BizObject.Close
  MsgBox "Done"
End Function
</syntaxhighlight>
|}


  lDateTo = CDate("August 31, 2016")
<div style="float: right;">   [[#top|[top]]]</div>
   RptObject.Params.Find("AgingDate").Value            = lDateTo 


  RptObject.Params.Find("AgingOn").Value              = "I" 'Fixed
====AR_IV-Edit====
  RptObject.Params.Find("AllAgent").Value            = true
{| class="mw-collapsible mw-collapsed wikitable"
  RptObject.Params.Find("AllArea").Value              = true
! AR_IV Edit Script   
  RptObject.Params.Find("AllCompany").Value          = false
  RptObject.Params.Find("AllCompanyCategory").Value  = true
  RptObject.Params.Find("AllControlAccount").Value    = true
  RptObject.Params.Find("AllCurrency").Value          = true
  RptObject.Params.Find("AllDocProject").Value        = true
'  RptObject.Params.Find("AreaData").Value            =  'Not use if AllArea is True
'  RptObject.Params.Find("CompanyCategoryData").Value  =  'Not use if AllCompanyCategory is True
  RptObject.Params.Find("CompanyData").Value          = "300-A0001"& vbCRLF & "300-C0001" 'Filter by Customer Code 300-A0001 & 300-C0001
'  RptObject.Params.Find("ControlAccountData").Value  =  'Not use if AllControlAccount is True
'  RptObject.Params.Find("CurrencyData").Value        =  'Not use if AllCurrency is True
'  RptObject.Params.Find("DocProjectData").Value      =  'Not use if AllDocProject is True
  RptObject.Params.Find("FilterPostDate").Value        = false
'  RptObject.Params.Find("GroupBy").Value              = 'Not use
  RptObject.Params.Find("IncludePDC").Value        = false
  RptObject.Params.Find("IncludeZeroBalance").Value  = false
  RptObject.Params.Find("SortBy").Value              = "Code;CompanyName"
  RptObject.Params.Find("DateTo").Value              = lDateTo
 
  'Step 4: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocument")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString & " " & lDataSet.FindField("C1").AsString
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("DocNo").AsString & " " & lDataSet2.FindField("C1").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
  Wend
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====GL.JE.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! GL Journal Voucher Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg GLJE_ro.vbs
'Available in Version 5.2018.833.759 & above
Call GetCustomerData
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
Call CheckLogin
Call GetData
Call PostData
 
Dim ComServer, lDataSet


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,011: Line 7,425:
End Function
End Function


Function GetCustomerData
function CheckLogin
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function


   'Step 2: Find and Create the Report Objects
Function GetData
   Set RptObject = ComServer.RptObjects.Find("GL.JE.RO")  
Dim lSQL
   lSQL = "SELECT Dockey FROM AR_IV "
  lSQL = lSQL & "WHERE DocNo='IV-00002' "
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function


   'Step 3: Spool parameters
Function PostData
  RptObject.Params.Find("AllCurrency").Value = true
Dim BizObject, lMain, lDetail
  RptObject.Params.Find("AllDocProject").Value = true
   'Step 2: Find and Create the Biz Objects
  RptObject.Params.Find("AllDocument").Value = true
   Set BizObject = ComServer.BizObjects.Find("AR_IV")  
  RptObject.Params.Find("AllItemProject").Value = true
  RptObject.Params.Find("AllItemArea").Value = true
   RptObject.Params.Find("AllItemAgent").Value = true
  RptObject.Params.Find("AllDocAgent").Value = true
  RptObject.Params.Find("AllDocArea").Value = true
  RptObject.Params.Find("AllPaymentMethod").Value = true


   lDateFrom = CDate("December 1, 2017")
   'Step 3: Set Dataset
   lDateTo = CDate("December 31, 2017")
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
 
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
  RptObject.Params.Find("DateFrom").Value = lDateFrom
 
   RptObject.Params.Find("DocDateFrom").Value = lDateFrom
   'Step 4 : Find Doc Number
   RptObject.Params.Find("DateTo").Value = lDateTo
   If lDataSet.RecordCount > 0 Then 
   RptObject.Params.Find("DocDateTo").Value = lDateTo
lDataSet.First
  RptObject.Params.Find("IncludeCancelled").Value = false
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  RptObject.Params.Find("PrintDocumentStyle").Value = false
 
   RptObject.Params.Find("SelectDate").Value = true 'Post Date
    
  RptObject.Params.Find("SelectDocDate").Value = false 'Doc Date
    BizObject.Open
    BizObject.Edit
    lMain.Edit
lMain.FindField("Description").AsString = "Sales - Edited"
    
    
   'Step 4: Perform Report calculation
   'Step 5: Delete all Detail
  RptObject.CalculateReport()
    While lDetail.RecordCount <> 0
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
      lDetail.First
  Set lDataSet2 = RptObject.DataSets.Find("cdsDetail")
  lDetail.Delete
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Description").AsString
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
  lDataSet2.Next
     Wend
     Wend
lDataSet.Next
  'Step 6: Append Detail
   Wend
  lDetail.Append 
End Function
  lDetail.FindField("DtlKey").value = -1
</syntaxhighlight>
  lDetail.FindField("Account").value = "500-000"
|}
  lDetail.FindField("Description").value =  "Sales Item A - Edited"
  lDetail.FindField("Tax").value =  "SR"
  lDetail.FindField("TaxRate").value =  "6%"
  lDetail.FindField("TaxInclusive").value =  0
  lDetail.FindField("Amount").value = 100
  lDetail.FindField("TaxAmt").value = 6
 
  lDetail.DisableControls
  lDetail.FindField("TaxInclusive").value =  1
  lDetail.EnableControls
 
  lDetail.FindField("Changed").value = "F"
  lDetail.Post
 
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
 
  'Step 8 : Logout after done 
    'ComServer.Logout 
    MsgBox "Done"
Else
MsgBox "Record Not Found"
   END IF
End Function
</syntaxhighlight>
|}


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====SL_CS====
====AR_PM====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! SL_CS Script   
! AR_PM Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg SL_CS.vbs
'Copy below script & paste to notepad & name it as eg AR_PM.vbs
Call InsertData
Call PostData
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function InsertData
Function PostData
Dim ComServer, BizObject, lDate
Dim ComServer, BizObject, lIVNo, v(1), lDate
 
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
Line 7,089: Line 7,521:
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
   END IF
   END IF
 
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("SL_CS")  
   Set BizObject = ComServer.BizObjects.Find("AR_PM")  
 
   'Step 3: Set Dataset
   'Step 3: Set Dataset
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
   Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
   Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data   
   Set lDetailDataSet = BizObject.DataSets.Find("cdsKnockOff") 'lDetailDataSet contains detail data   
    
    
   'Step 4 : Insert Data - Master
   'Step 4 : Posting
  lDate = CDate("January 1, 2016")
    lDate = CDate("January 23, 2017")
  BizObject.New
    BizObject.New
  lMainDataSet.FindField("DocKey").value = -1
    lMain.FindField("DOCKEY").Value          = -1
  lMainDataSet.FindField("DocNo").value = "--IV Test--"
    lMain.FindField("DocNo").AsString        = "--PM Test--"  
  lMainDataSet.FindField("DocDate").value = lDate
    lMain.FindField("CODE").AsString          = "300-C0001"
  lMainDataSet.FindField("PostDate").value = lDate
    lMain.FindField("DocDate").Value          = lDate
  lMainDataSet.FindField("Code").value = "300-C0001" 'Customer Code
    lMain.FindField("PostDate").Value        = lDate
  lMainDataSet.FindField("Description").value = "Sales"
    lMain.FindField("Description").AsString  = "Payment for A/c"
      
     lMain.FindField("PaymentMethod").AsString = "310-000"
  'Step 5: Insert Data - Detail
    lMain.FindField("DocAmt").AsFloat        = 65.57
  'For Tax Inclusive = True with override Tax Amount
    lMain.FindField("Cancelled").AsString    = "F"
  lDetailDataSet.Append
  'Step 5: Knock Off IV
  lDetailDataSet.FindField("DtlKey").value = -1
    lIVNO = "--IV Test--"
  lDetailDataSet.FindField("DocKey").value = -1
    v(0) = "IV"
  lDetailDataSet.FindField("Account").value = "500-000" 'Sales Account Code  & can ignore if had itemcode
    v(1) = lIVNO
  lDetailDataSet.FindField("Description").value = "Sales Item A"
  lDetailDataSet.FindField("Qty").value = 1
    if (lDetailDataSet.Locate("DocType;DocNo", v, false, false)) then
  lDetailDataSet.FindField("Tax").value =  "SR"
      lDetailDataSet.Edit
  lDetailDataSet.FindField("TaxInclusive").value =  0
      lDetailDataSet.FindField("KOAmt").value = 65.57
  lDetailDataSet.FindField("UnitPrice").value = 410.37
      lDetailDataSet.FindField("KnockOff").AsString = "T"
  lDetailDataSet.FindField("Amount").value = 410.37
      lDetailDataSet.Post
  lDetailDataSet.FindField("TaxAmt").value = 24.63
End IF 
 
   'Step 6: Save Document
  lDetailDataSet.DisableControls
    BizObject.Save
  lDetailDataSet.FindField("TaxInclusive").value =  1
    BizObject.Close
  lDetailDataSet.EnableControls
    MsgBox "Done"
 
   'END IF
  lDetailDataSet.Post
End Function
 
</syntaxhighlight>
   'For Tax Inclusive = False with override Tax Amount
|}
  lDetailDataSet.Append
 
  lDetailDataSet.FindField("DtlKey").value = -1
<div style="float: right;">   [[#top|[top]]]</div>
  lDetailDataSet.FindField("DocKey").value = -1
   lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Qty").value =  1
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 94.43
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
   lDetailDataSet.Post


  'For With Item Code
====AR_PM-Edit====
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("ItemCode").value = "ANT"
  lDetailDataSet.FindField("Description").value = "Sales Item B"
  lDetailDataSet.FindField("Qty").value = 2
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 100
  lDetailDataSet.FindField("Amount").value = 200
  lDetailDataSet.FindField("TaxAmt").value = 12
  lDetailDataSet.Post
 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  ComServer.Logout
  MsgBox "Done"
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer.PM.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.PM.RO Script   
! AR_PM Edit Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Customer.PM.RO.vbs
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
Call GetARPMData
Call EditARPM
   
   
Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,179: Line 7,576:
End Function
End Function
   
   
Function GetARPMData
Function EditARPM
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
Dim ComServer, BizObject, lDataSet, lDataSet2, lDocKey, lDocNo, lIVNo, v(1)
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
   END IF
   END IF
   
   
   'Step 2: Find and Create the Report Objects
   'Step 2: Find and Create the Biz Objects
   Set RptObject = ComServer.RptObjects.Find("Customer.PM.RO")  
   Set BizObject = ComServer.BizObjects.Find("AR_PM")  
   
   
   'Step 3: Spool parameters
   'Step 3: Set Dataset
   'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")   'lMainDataSet contains master data
  'RptObject.Params.Find("CompanyCategoryData").Value    = 'Not use if AllCompanyCategory is true
   Set lDetailDataSet = BizObject.DataSets.Find("cdsKnockOff") 'lDetailDataSet contains detail data 
   RptObject.Params.Find("AllAgent").Value                = true
    
  RptObject.Params.Find("AllCompanyCategory").Value      = true
   'Step 4 : Find OR Number
   RptObject.Params.Find("AllArea").Value                = true
   lDocNo = "OR-00022"
   RptObject.Params.Find("AllCompany").Value              = true
   lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  RptObject.Params.Find("AllCurrency").Value            = true
   BizObject.Params.Find("DocKey").Value = lDocKey
   RptObject.Params.Find("AllDocument").Value            = false
  RptObject.Params.Find("AllPaymentMethod").Value        = true
   'RptObject.Params.Find("AreaData").Value                = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value            = 'Not use if AllCompany is true
   'RptObject.Params.Find("CurrencyData").Value           = 'Not use if AllCurrency is true
 
  lDateFrom = CDate("January 01, 2017")
  lDateTo = CDate("December 31, 2017")
    
    
   RptObject.Params.Find("DateFrom").Value                = lDateFrom
   If not IsNull(lDocKey) Then
  RptObject.Params.Find("DateTo").Value                  = lDateTo
    BizObject.Open
  RptObject.Params.Find("DocumentData").Value            = "VCOR-00049"
    BizObject.Edit
   'RptObject.Params.Find("GroupBy").Value                = 'If you wanted to grouping the data
    lMainDataSet.Edit
  RptObject.Params.Find("IncludeCancelled").Value        = false
lMainDataSet.FindField("Description").AsString = "testing"
  'RptObject.Params.Find("PaymentMethodData").Value      = 'Not use if AllPaymentMethod is true
   'Step 5: Knock Off IV
  RptObject.Params.Find("PrintDocumentStyle").Value      = false
    lIVNO = "IV-00006"
  RptObject.Params.Find("SelectDate").Value              = true
    v(0) = "IV"
  RptObject.Params.Find("ShowUnappliedAmountOnly").Value = false
    v(1) = lIVNO
  RptObject.Params.Find("SortBy").Value                  = "PostDate;DocNo;Code"
  RptObject.Params.Find("AllDocProject").Value          = true
    if (lDetailDataSet.Locate("DocType;DocNo", v, false, false)) then
  RptObject.Params.Find("AllItemProject").Value          = true
      lDetailDataSet.Edit
  'RptObject.Params.Find("DocProjectData").Value          = 'Not use if AllDocProject is true
      lDetailDataSet.FindField("KOAmt").value = 50.12
  'RptObject.Params.Find("ItemProjectData").Value        = 'Not use if AllItemProject is true 
      lDetailDataSet.FindField("KnockOff").AsString = "T"
 
      lDetailDataSet.Post
  'Step 4: Perform Report calculation
  MsgBox "yes"
  RptObject.CalculateReport()
End IF  
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
   'Step 6: Save Document
  Set lDataSet2 = RptObject.DataSets.Find("cdsKnockOff")
     BizObject.Save
  Set lDataSet3 = RptObject.DataSets.Find("cdsKnockOffDetail")
     BizObject.Close
  MsgBox "Count " & lDataSet.RecordCount
     MsgBox "Done"
   
   END IF
   'Step 5 Retrieve the output
  lDataSet.First
  While (not lDataSet.eof)
     MsgBox lDataSet.FindField("DocKey").AsString & " " &  lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Code").AsString
MsgBox "cdsKnockOff Count " & lDataSet2.RecordCount
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("FromDocKey").AsString & " " & lDataSet2.FindField("DocNo").AsString & " " & lDataSet2.FindField("KOAmt").AsString
  lDataSet2.Next
    Wend
     MsgBox "cdsKnockOffDetail Count " & lDataSet3.RecordCount
lDataSet3.First
     While (not lDataSet3.eof)
      MsgBox lDataSet3.FindField("FromDocKey").AsString & " " & lDataSet3.FindField("DocNo").AsString & " " & lDataSet3.FindField("KOAmt").AsString
    lDataSet3.Next
    Wend
lDataSet.Next
   Wend
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 7,253: Line 7,625:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Sales.IV.RO====
====Customer.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Sales.IV.RO Script   
! Customer.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Sales.IV.RO.vbs
'Copy below script & paste to notepad & name it as eg customer_ro.vbs
Call GetSalesIVData
Call GetCustomerData
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function GetSalesIVData
Function GetCustomerData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
Line 7,273: Line 7,645:
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
   END IF
   END IF
 
   'Step 2: Find and Create the Report Objects
   'Step 2: Find and Create the Report Objects
   Set RptObject = ComServer.RptObjects.Find("Sales.IV.RO")  
   Set RptObject = ComServer.RptObjects.Find("Customer.RO")  
 
   'Step 3: Spool parameters
   'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
   RptObject.Params.Find("AllAgent").Value = true
   RptObject.Params.Find("AllAgent").Value               = true
   RptObject.Params.Find("AllArea").Value = true
   RptObject.Params.Find("AllArea").Value               = true
   RptObject.Params.Find("AllCompany").Value = false
   RptObject.Params.Find("AllCompany").Value             = false
   RptObject.Params.Find("AllCompanyCategory").Value = true
   RptObject.Params.Find("AllCurrency").Value           = true
   RptObject.Params.Find("AllCurrency").Value = true
   RptObject.Params.Find("AllDocProject").Value         = true
   RptObject.Params.Find("AllTerms").Value = true
   RptObject.Params.Find("AllDocument").Value           = true
   RptObject.Params.Find("SelectDate").Value = true
   RptObject.Params.Find("AllItem").Value               = true
   RptObject.Params.Find("PrintActive").Value = true
   RptObject.Params.Find("AllItemProject").Value         = true
   RptObject.Params.Find("PrintInactive").Value = false
   RptObject.Params.Find("AllLocation").Value           = true
   RptObject.Params.Find("PrintPending").Value = false
   RptObject.Params.Find("AllStockGroup").Value         = true
   RptObject.Params.Find("PrintProspect").Value = false
   RptObject.Params.Find("AllCompanyCategory").Value     = true
   RptObject.Params.Find("PrintSuspend").Value = false
   RptObject.Params.Find("AllBatch").Value               = true
   lDateFrom = CDate("January 1, 2000")
  RptObject.Params.Find("AllTariff").Value              = true 'For Version 776 & above
   lDateTo = CDate("December 31, 2014")
  'RptObject.Params.Find("TariffData").Value            = 'Not use if TariffData is true - For Version 776 & above
   'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyCategoryData").Value    = 'Not use if AllCompanyCategory is true
   RptObject.Params.Find("CompanyData").Value            = "300-C0001"
  'RptObject.Params.Find("CurrencyData").Value          = 'Not use if AllCurrency is true


  lDateFrom = CDate("January 01, 2017")
   RptObject.Params.Find("DateFrom").Value = lDateFrom
  lDateTo = CDate("December 31, 2017")
   RptObject.Params.Find("DateTo").Value = lDateTo
 
   RptObject.Params.Find("CompanyData").Value = "300-A0003"
   RptObject.Params.Find("DateFrom").Value               = lDateFrom
   RptObject.Params.Find("DateTo").Value                 = lDateTo
   'RptObject.Params.Find("DocProjectData").Value          = 'Not use if AllDocProject is true
  'RptObject.Params.Find("DocumentData").Value            = 'Not use if AllDocument is true
  'RptObject.Params.Find("GroupBy").Value                = 'If you wanted to grouping the data
  'RptObject.Params.Find("CategoryData").Value            = 'Not use if HasCategory is false
  'RptObject.Params.Find("CategoryTpl").Value            = 'For Internal use only
  RptObject.Params.Find("IncludeCancelled").Value        = false
  RptObject.Params.Find("HasCategory").Value            = false
  'RptObject.Params.Find("ItemData").Value                = 'Not use if AllItem is true
  'RptObject.Params.Find("ItemProjectData").Value        = 'Not use if AllItemProject is true
  'RptObject.Params.Find("LocationData").Value           = 'Not use if AllLocation is true
  'RptObject.Params.Find("ItemCategoryData").Value        = 'For Internal use only
  'RptObject.Params.Find("BatchData").Value              = 'Not use if AllBatch is true
  RptObject.Params.Find("PrintDocumentStyle").Value      = false
  RptObject.Params.Find("SelectDate").Value              = true
  RptObject.Params.Find("SortBy").Value                  = "PostDate;DocNo;Code"
  'RptObject.Params.Find("StockGroupData").Value          = 'Not use if AllStockGroup is true
 
    
    
   'Step 4: Perform Report calculation  
   'Step 4: Perform Report calculation  
   RptObject.CalculateReport()
   RptObject.CalculateReport()
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   Set lDataSet2 = RptObject.DataSets.Find("cdsDocDetail")
   Set lDataSet2 = RptObject.DataSets.Find("cdsBranch")
   MsgBox "Count " & lDataSet.RecordCount
   MsgBox "Count " & lDataSet.RecordCount
 
   'Step 5 Retrieve the output  
   'Step 5 Retrieve the output  
   lDataSet.First
   lDataSet.First
   While (not lDataSet.eof)
   While (not lDataSet.eof)
     MsgBox lDataSet.FindField("DocKey").AsString & " " & lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Code").AsString
     MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString
MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
lDataSet2.First
lDataSet2.First
     While (not lDataSet2.eof)
     While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("DocKey").AsString & " " & lDataSet2.FindField("ItemCode").AsString & " " & lDataSet2.FindField("Amount").AsString
  MsgBox lDataSet2.FindField("Address1").AsString
  lDataSet2.Next
  lDataSet2.Next
     Wend
     Wend
lDataSet.Next
lDataSet.Next
   Wend
   Wend
Line 7,345: Line 7,692:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Customer.DueDocument.RO====
====Customer.Statement.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.DueDocument.RO Script   
! Customer.Statement.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Customer.DueDocument.RO.vbs
'Copy below script & paste to notepad & name it as eg customer_statement_ro.vbs
Call GetData
Call GetCustStatementData
   
   
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function GetData
Function GetCustStatementData
Dim ComServer, RptObject, lDataSet, lDateTo
Const Quote = """"
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo, lAgeData
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
Line 7,365: Line 7,713:
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
   END IF
   END IF
 
   'Step 2: Find and Create the Report Objects
   'Step 2: Find and Create the Report Objects
   Set RptObject = ComServer.RptObjects.Find("Customer.DueDocument.RO")  
   Set RptObject = ComServer.RptObjects.Find("Customer.Statement.RO")  
   
   
   'Step 3: Spool parameters
   'Step 3: Spool parameters
   'RptObject.Params.Find("AgentData").Value             = 'Not use if AllAgent is true
   lAgeData = "<?xml version=" & Quote & "1.0" & Quote & " standalone=" & Quote & "yes" & Quote & "?>  <DATAPACKET Version=" & Quote & "2.0" & Quote & "><METADATA><FIELDS>" &_
   RptObject.Params.Find("AllAgent").Value               = true
      "<FIELD attrname=" & Quote & "ColumnNo" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "ColumnType" & Quote & " fieldtype=" & Quote & "string" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
   RptObject.Params.Find("AllArea").Value               = true
      "<FIELD attrname=" & Quote & "Param1" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "Param2" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/>" &_
  RptObject.Params.Find("AllCompany").Value            = false
      "<FIELD attrname=" & Quote & "IsLocal" & Quote & " fieldtype=" & Quote & "boolean" & Quote & "/><FIELD attrname=" & Quote & "HeaderScript" & Quote & " fieldtype=" & Quote & "bin.hex" & Quote & " SUBTYPE=" & Quote & "Text" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
   RptObject.Params.Find("AllCompanyCategory").Value     = true
      "</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo=" & Quote & "0" & Quote & " ColumnType=" & Quote & "" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & "/>" &_
   RptObject.Params.Find("AllCurrency").Value           = true
      "<ROW ColumnNo=" & Quote & "1" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;" & Quote & "/>" &_
   RptObject.Params.Find("AllDocProject").Value         = true
      "<ROW ColumnNo=" & Quote & "2" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-1" & Quote & " Param2=" & Quote & "-1" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;" & Quote & "/>" &_
   RptObject.Params.Find("AllItemProject").Value         = true
      "<ROW ColumnNo=" & Quote & "3" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-2" & Quote & " Param2=" & Quote & "-2" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;" & Quote & "/>" &_
   'RptObject.Params.Find("AreaData").Value             = 'Not use if AllArea is true
      "<ROW ColumnNo=" & Quote & "4" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-3" & Quote & " Param2=" & Quote & "-3" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;" & Quote & "/>" &_
   'RptObject.Params.Find("CompanyCategoryData").Value   = 'Not use if AllCompanyCategory is true
      "<ROW ColumnNo=" & Quote & "5" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-4" & Quote & " Param2=" & Quote & "-4" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;" & Quote & "/>" &_
   RptObject.Params.Find("CompanyData").Value           = "300-A0003"
      "<ROW ColumnNo=" & Quote & "6" & Quote & " ColumnType=" & Quote & "B" & Quote & " Param1=" & Quote & "-999999" & Quote & " Param2=" & Quote & "-5" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;" & Quote & "/>" &_
  'RptObject.Params.Find("CurrencyData").Value         = 'Not use if AllCurrency is true
      "</ROWDATA></DATAPACKET>"
  'RptObject.Params.Find("DocProjectData").Value       = 'Not use if AllDocProject is true
' RptObject.Params.Find("AgentData").Value           = 'Not use if AllAgent is True
   'RptObject.Params.Find("GroupBy").Value               = 'If you wanted to grouping the data
   RptObject.Params.Find("AgingData").Value           = lAgeData 'Fixed
  'RptObject.Params.Find("ItemProjectData").Value       = 'Not use if AllItemProject is true
   RptObject.Params.Find("AgingOn").Value             = "I" 'Fixed
  RptObject.Params.Find("PrintContra").Value           = true
   RptObject.Params.Find("AllAgent").Value             = true
   RptObject.Params.Find("PrintCreditNote").Value        = true
   RptObject.Params.Find("AllArea").Value             = true
   RptObject.Params.Find("PrintDebitNote").Value        = true
   RptObject.Params.Find("AllCompany").Value           = false
   RptObject.Params.Find("PrintInvoice").Value           = true
   RptObject.Params.Find("AllCompanyCategory").Value   = true
   RptObject.Params.Find("PrintOverDue").Value           = true
   RptObject.Params.Find("AllControlAccount").Value   = true
  RptObject.Params.Find("PrintUnDue").Value             = true
   RptObject.Params.Find("AllCurrency").Value         = true
   RptObject.Params.Find("ShowForeignCurrency").Value   = true
   RptObject.Params.Find("AllDocProject").Value       = true
   RptObject.Params.Find("ShowLocalCurrency").Value     = true
' RptObject.Params.Find("AreaData").Value             = 'Not use if AllArea is True
   RptObject.Params.Find("SortBy").Value                 = "PostDate;DocNo;Code"
' RptObject.Params.Find("CompanyCategoryData").Value = 'Not use if AllCompanyCategory is True
 
   RptObject.Params.Find("CompanyData").Value         = "300-A0001"& vbCRLF & "300-C0001" 'Filter by Customer Code 300-A0001 & 300-C0001
  lDateTo = CDate("April 12, 2018")
' RptObject.Params.Find("ControlAccountData").Value   = 'Not use if AllControlAccount is True
 
RptObject.Params.Find("CurrencyData").Value         = 'Not use if AllCurrency is True
   RptObject.Params.Find("DateTo").Value                 = lDateTo
   lDateFrom = CDate("August 1, 2016")
   RptObject.Params.Find("IncludePDCheque").Value        = true  
   lDateTo = CDate("August 31, 2016")
   
   RptObject.Params.Find("DateFrom").Value             = lDateFrom
   RptObject.Params.Find("DateTo").Value               = lDateTo
RptObject.Params.Find("DocProjectData").Value       = 'Not use if AllDocProject is True
   RptObject.Params.Find("IncludeZeroBalance").Value   = false
   RptObject.Params.Find("SelectDate").Value           = true
   RptObject.Params.Find("SortBy").Value               = "CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount"
   RptObject.Params.Find("StatementDate").Value       = lDateTo ' Norm same as DateTo
   RptObject.Params.Find("StatementType").Value        = "O" 'O = Open Item, B = B/F
   
   'Step 4: Perform Report calculation  
   'Step 4: Perform Report calculation  
   RptObject.CalculateReport()
   RptObject.CalculateReport()
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocument")
   MsgBox "Count " & lDataSet.RecordCount
   MsgBox "Count " & lDataSet.RecordCount
 
   'Step 5 Retrieve the output  
   'Step 5 Retrieve the output  
   lDataSet.First
   lDataSet.First
   While (not lDataSet.eof)
   While (not lDataSet.eof)
     MsgBox "Dockey " & lDataSet.FindField("DocKey").AsString  
     MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString & " " & lDataSet.FindField("Balance").AsString
MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString  
lDataSet2.First
MsgBox "DocAmt " & lDataSet.FindField("DocAmt").AsString
    While (not lDataSet2.eof)
MsgBox "Outstanding " & lDataSet.FindField("Outstanding").AsString
  MsgBox lDataSet2.FindField("DocNo").AsString
MsgBox "Code " & lDataSet.FindField("Code").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
lDataSet.Next
   Wend
   Wend
Line 7,421: Line 7,779:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Customer.IV.RO====
====GL.CB.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.IV.RO Script   
! GL.CB.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Customer.IV.RO.vbs
'Copy below script & paste to notepad & name it as eg GL.CB.RO.vbs
Call GetData
Call GetCLCBData
   
   
Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,434: Line 7,792:
End Function
End Function
   
   
Function GetData
Function GetCLCBData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
Line 7,443: Line 7,801:
   
   
   'Step 2: Find and Create the Report Objects
   'Step 2: Find and Create the Report Objects
   Set RptObject = ComServer.RptObjects.Find("Customer.IV.RO")  
   Set RptObject = ComServer.RptObjects.Find("GL.CB.RO")  
   
   
   'Step 3: Spool parameters
   'Step 3: Spool parameters
   'RptObject.Params.Find("AgentData").Value             = 'Not use if AllAgent is true
   RptObject.Params.Find("AllCurrency").Value   = true
   'RptObject.Params.Find("CompanyCategoryData").Value   = 'Not use if AllCompanyCategory is true
   RptObject.Params.Find("AllDocProject").Value = true
   RptObject.Params.Find("AllAgent").Value               = true
   RptObject.Params.Find("AllDocument").Value   = true
   RptObject.Params.Find("AllCompanyCategory").Value     = true
   RptObject.Params.Find("AllItemProject").Value = true
   RptObject.Params.Find("AllArea").Value               = true
   RptObject.Params.Find("AllItemArea").Value   = true
   RptObject.Params.Find("AllCompany").Value             = true
   RptObject.Params.Find("AllItemAgent").Value  = true
   RptObject.Params.Find("AllCurrency").Value            = true
   RptObject.Params.Find("AllDocAgent").Value   = true
   RptObject.Params.Find("AllDocument").Value            = false
   RptObject.Params.Find("AllDocArea").Value     = true
  RptObject.Params.Find("AllPaymentMethod").Value       = true
   RptObject.Params.Find("AllPaymentMethod").Value = false
   'RptObject.Params.Find("AreaData").Value             = 'Not use if AllArea is true
   'RptObject.Params.Find("CurrencyData").Value   = 'Not use if AllCurrency is true
   'RptObject.Params.Find("CompanyData").Value           = 'Not use if AllCompany is true
   'RptObject.Params.Find("CurrencyData").Value         = 'Not use if AllCurrency is true
    
    
   lDateFrom = CDate("January 01, 2017")
   lDateFrom = CDate("January 01, 2017")
   lDateTo = CDate("December 31, 2017")
   lDateTo = CDate("December 31, 2017")
  'For Post Date From & Date To'
  RptObject.Params.Find("DateFrom").Value = lDateFrom
  RptObject.Params.Find("DateTo").Value  = lDateTo
    
    
   RptObject.Params.Find("DateFrom").Value               = lDateFrom
   'RptObject.Params.Find("DocProjectData").Value = 'Not use if AllDocProject is true
   RptObject.Params.Find("DateTo").Value                 = lDateTo
   'RptObject.Params.Find("DocAreaData").Value     = 'Not use if AllDocArea is true
   RptObject.Params.Find("DocumentData").Value           = "IV-00012"
   'RptObject.Params.Find("DocAgentData").Value   = 'Not use if AllDocAgent is true
   'RptObject.Params.Find("GroupBy").Value               = 'If you wanted to grouping the data
   'RptObject.Params.Find("ItemAgentData").Value   = 'Not use if AllItemAgent is true
   RptObject.Params.Find("IncludeCancelled").Value       = true
   RptObject.Params.Find("DocType").Value         = "PV" 'PV for Payment Voucher & OR for Official Receipt
   'RptObject.Params.Find("PaymentMethodData").Value     = 'Not use if AllPaymentMethod is true
   'RptObject.Params.Find("DocumentData").Value   = 'Not use if AllDocument is true
   RptObject.Params.Find("PrintDocumentStyle").Value     = false
  'RptObject.Params.Find("GroupBy").Value        = 'If you wanted to grouping the data
   RptObject.Params.Find("SelectDate").Value             = true
   RptObject.Params.Find("IncludeCancelled").Value = false
   RptObject.Params.Find("ShowUnappliedAmountOnly").Value = true
   'RptObject.Params.Find("ItemAreaData").Value   = 'Not use if AllItemArea is true
   RptObject.Params.Find("SortBy").Value                 = "DocDate;DocNo;Code"
   'RptObject.Params.Find("ItemProjectData").Value = 'Not use if AllItemProject is true
   RptObject.Params.Find("AllDocProject").Value           = true
   RptObject.Params.Find("PaymentMethodData").Value = "310-001"
   RptObject.Params.Find("AllItemProject").Value         = true
   RptObject.Params.Find("PrintDocumentStyle").Value = false
   'RptObject.Params.Find("DocProjectData").Value         = 'Not use if AllDocProject is true
   RptObject.Params.Find("SelectDate").Value         = true 'For Post Date
   'RptObject.Params.Find("ItemProjectData  ").Value     = 'Not use if AllItemProject is true
   'RptObject.Params.Find("SelectDocDate").Value     = 'For Doc Date
   
   RptObject.Params.Find("SortBy").Value             = "PostDate;DocNo"
   'Step 4: Perform Report calculation  
   'Step 4: Perform Report calculation  
   RptObject.CalculateReport()
   RptObject.CalculateReport()
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   Set lDataSet2 = RptObject.DataSets.Find("cdsDocDetail")
   Set lDataSet2 = RptObject.DataSets.Find("cdsDetail")
  Set lDataSet3 = RptObject.DataSets.Find("cdsTax")
   MsgBox "Count " & lDataSet.RecordCount
   MsgBox "Count " & lDataSet.RecordCount
   
   
Line 7,486: Line 7,848:
   lDataSet.First
   lDataSet.First
   While (not lDataSet.eof)
   While (not lDataSet.eof)
     MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
     MsgBox lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Description").AsString
MsgBox "DocAmt " & lDataSet.FindField("DocAmt").AsString
MsgBox "PaymentAmt " & lDataSet.FindField("PaymentAmt").AsString
MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
lDataSet2.First
lDataSet2.First
     While (not lDataSet2.eof)
     While (not lDataSet2.eof)
  MsgBox "Account " & lDataSet2.FindField("Account").AsString
  MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
  MsgBox "Description " & lDataSet2.FindField("Description").AsString
  MsgBox "Amount " & lDataSet2.FindField("Amount").AsString
  lDataSet2.Next
  lDataSet2.Next
     Wend
     Wend
lDataSet.Next
lDataSet.Next
  Wend
  'For GST List
  MsgBox "GST Code Count " & lDataSet3.RecordCount
  lDataSet3.First
  While (not lDataSet3.eof)
    MsgBox lDataSet3.FindField("Code").AsString
lDataSet3.Next
   Wend
   Wend
End Function
End Function
Line 7,506: Line 7,869:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Sales.OutstandingSO.RO====
====AR_Customer====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Sales.OutstandingSO.RO Script   
! AR_Customer - Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Sales.OutstandingSO.RO.vbs
'Copy below script & paste to notepad & name it as eg AR_Customer.vbs
Call GetData
Call CheckLogin
Call InsertData
 
Dim ComServer
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function GetData
function CheckLogin
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
   'Step 2: Find and Create the Report Objects
 
   Set RptObject = ComServer.RptObjects.Find("Sales.OutstandingSO.RO")
Function InsertData
Dim BizObject, lMain, lDetail
  'Step 3: Spool parameters
   'Step 2: Find and Create the Biz Objects
  'RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is true
   Set BizObject = ComServer.BizObjects.Find("AR_Customer")  
  'RptObject.Params.Find("CompanyCategoryData").Value  = 'Not use if AllCompanyCategory is true
  'RptObject.Params.Find("LocationData").Value        = 'Not use if AllLocation is true
  'RptObject.Params.Find("StockGroupData").Value      = 'Not use if AllStockGroup is true
  RptObject.Params.Find("AllAgent").Value              = true
  RptObject.Params.Find("AllArea").Value              = true
  RptObject.Params.Find("AllCompany").Value            = true
  RptObject.Params.Find("AllDocument").Value          = false
  RptObject.Params.Find("AllItem").Value              = true
  RptObject.Params.Find("AllItemProject").Value        = true
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value          = 'Not use if AllCompany is true
  RptObject.Params.Find("AllTariff").Value              = true 'For Version 776 & above
  'RptObject.Params.Find("TariffData").Value            = 'Not use if TariffData is true - For Version 776 & above


  'Step 3: Set Dataset
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsBranch") 'lDetail contains detail data 
    
    
   lDateFrom = CDate("January 01, 2017")
   'Begin Looping yr data
   lDateTo = CDate("December 31, 2017")  
  'Step 4 : Insert Data - Master
  BizObject.New
  lMain.FindField("Code").AsString      = "300-Test"
  lMain.FindField("CompanyName").AsString = "Cash Sales"
   
   'Step 5: Insert Data - Detail
  'For 1st Branch
  lDetail.Edit
  lDetail.FindField("BranchName").AsString  = "BILLING"
  lDetail.FindField("Address1").AsString    = "Address1"
  lDetail.FindField("Address2").AsString    = "Address2"
  lDetail.FindField("Address3").AsString    = "Address3"
  lDetail.FindField("Address4").AsString    = "Address4" 
  lDetail.FindField("Attention").AsString  = "Attention" 
  lDetail.FindField("Phone1").AsString      = "Phone1"
  lDetail.FindField("Fax1").AsString        = "Fax1"
  lDetail.FindField("Email").AsString      = "EmailAddress"
  lDetail.Post
    
    
   'RptObject.Params.Find("DateFrom").Value              = lDateFrom
   'For 2nd Branch
   'RptObject.Params.Find("DateTo").Value                = lDateTo
   lDetail.Append
   'RptObject.Params.Find("DeliveryDateFrom").Value      = lDateFrom
   lDetail.FindField("BranchName").AsString  = "Branch1"
  'RptObject.Params.Find("DeliveryDateTo").Value        = lDateTo
   lDetail.FindField("Address1").AsString    = "DAddress1"
   RptObject.Params.Find("DocumentData").Value          = "SO-00007"& vbCRLF & "SO-00009"
   lDetail.FindField("Address2").AsString    = "DAddress2"
   'RptObject.Params.Find("GroupBy").Value              = 'If you wanted to grouping the data
   lDetail.FindField("Address3").AsString    = "DAddress3"
  RptObject.Params.Find("IncludeCancelled").Value      = false
   lDetail.FindField("Address4").AsString    = "DAddress4"
   'RptObject.Params.Find("ItemData").Value              = 'Not use if AllItem is true
   lDetail.FindField("Attention").AsString   = "DAttention"
  RptObject.Params.Find("PrintFulfilledItem").Value    = true 'Print transfered info
   lDetail.FindField("Phone1").AsString      = "DPhone1"
   RptObject.Params.Find("PrintOutstandingItem").Value  = true 'Print untransfer info
   lDetail.FindField("Fax1").AsString        = "DFax1"
  'RptObject.Params.Find("ItemProjectData").Value      = 'Not use if AllItemProject is true
   lDetail.FindField("Email").AsString      = "DEmailAddress"
   RptObject.Params.Find("SelectDate").Value            = false
   lDetail.Post
   RptObject.Params.Find("SelectDeliveryDate").Value    = false
 
  RptObject.Params.Find("SortBy").Value                = "DocDate;DocNo;Code"
   'Step 6: Save Document
   RptObject.Params.Find("AllDocProject").Value          = true
   BizObject.Save
  RptObject.Params.Find("AllLocation").Value            = true
   BizObject.Close
   RptObject.Params.Find("AllCompanyCategory").Value    = true
  RptObject.Params.Find("AllBatch").Value              = true
  RptObject.Params.Find("HasCategory").Value            = false
   RptObject.Params.Find("AllStockGroup").Value          = true
  'RptObject.Params.Find("CategoryData").Value          = 'For Internal use only
   'RptObject.Params.Find("CategoryTpl").Value          = 'For Internal use only
  'RptObject.Params.Find("ItemCategoryData").Value      = 'For Internal use only
  'RptObject.Params.Find("DocProjectData").Value        = 'Not use if AllDocProject is true
  'RptObject.Params.Find("BatchData").Value            = 'Not use if AllBatch is true
  RptObject.Params.Find("TranferDocFilterDate").Value  = false
 
   
   'Step 4: Perform Report calculation
   RptObject.CalculateReport()
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsTransfer")
  MsgBox "Count " & lDataSet.RecordCount
   
   
   'Step 5 Retrieve the output
  'End Looping yr data
   lDataSet.First
 
   While (not lDataSet.eof)
   'Step 7 : Logout after done 
    MsgBox "DocKey " & lDataSet.FindField("DocKey").AsString
   'ComServer.Logout
MsgBox "DtlKey " & lDataSet.FindField("Dtlkey").AsString
    
MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
  MsgBox "Done"
MsgBox "Item Code " & lDataSet.FindField("ItemCode").AsString
End Function
MsgBox "Org Qty " & lDataSet.FindField("SQty").AsString
</syntaxhighlight>
MsgBox "Outstanding Qty " & lDataSet.FindField("OutstandingQty").AsString
|}
 
MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
lDataSet2.First
    While (not lDataSet2.eof)
      MsgBox "FromDocKey " & lDataSet2.FindField("FromDocKey").AsString
  MsgBox "FromDtlKey " & lDataSet2.FindField("FromDtlkey").AsString
  MsgBox "DocType " & lDataSet2.FindField("DocType").AsString
  MsgBox "DocNo " & lDataSet2.FindField("DocNo").AsString
  MsgBox "DocDate " & lDataSet2.FindField("DocDate").AsString
  MsgBox "Transfer Qty " & lDataSet2.FindField("TransferQty").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
  Wend
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Common.PaymentMethod.RO====
====AR_Customer-Edit====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Common.PaymentMethod.RO Script   
! AR_Customer - Edit Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Common.PaymentMethod.RO.vbs
'Copy below script & paste to notepad & name it as eg AR_Customer.vbs
Call GetInfo
Call EditARCustomer
   
   
Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,626: Line 7,965:
End Function
End Function
   
   
Function GetInfo
Function EditARCustomer
Dim ComServer, RptObject, lDataSet1, lDataSet2
Dim ComServer, BizObject, lDataSet, lDataSet2
   'Step 1: Create Com Server object
   'Step 1 Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
   END IF
   END IF
   
   
   'Step 2: Find and Create the Report Objects
   'Step 2 Find and Create the Biz Objects
   Set RptObject = ComServer.RptObjects.Find("Common.PaymentMethod.RO")  
   Set BizObject = ComServer.BizObjects.Find("AR_Customer")  
   
   
  'Step 3 Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet") 'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsBranch") 'lDetailDataSet contains detail data 
 
  'Step 4 Find Customer Code
  BizObject.Params.Find("Code").Value = "300-Test"
 
  BizObject.Open
  BizObject.Edit
  lMainDataSet.Edit
  lMainDataSet.FindField("CompanyName").value = "Testing 123-Changed"
   
   
   'Step 3: Perform Report calculation
   'Step 5 For 1st Branch
  RptObject.CalculateReport()
    v = "BILLING"
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsPaymentAccount") 'You can link with lDataSet1 using Code to get the description
 
  MsgBox "Count " & lDataSet1.RecordCount
   
   
   'Step 5 Retrieve the output
    if (lDetailDataSet.Locate("BranchName", v, false, false)) then
   lDataSet1.First
  lDetailDataSet.Edit
   While (not lDataSet1.eof)
      lDetailDataSet.FindField("Address1").AsString   = "Address1-Changed"
MsgBox "Code : " & lDataSet1.FindField("Code").AsString  
      lDetailDataSet.FindField("Address2").AsString   = "Address2-Changed"
lDataSet1.Next
      lDetailDataSet.FindField("Address3").AsString  = "Address3-Changed"
   Wend   
      lDetailDataSet.FindField("Address4").AsString   = "Address4-Changed"
    
      lDetailDataSet.FindField("Attention").AsString  = "Attention-Changed"
   MsgBox "Count " & lDataSet2.RecordCount
      lDetailDataSet.FindField("Phone1").AsString    = "Phone1-Changed"
    
      lDetailDataSet.FindField("Fax1").AsString      = "Fax1-Changed"
  lDataSet2.First
      lDetailDataSet.FindField("Email").AsString     = "EmailAddress-Changed"
  While (not lDataSet2.eof)
      lDetailDataSet.Post
MsgBox "Code : " & lDataSet2.FindField("Code").AsString  
end if
MsgBox "Description : " & lDataSet2.FindField("Description").AsString
'Step 5 For 2nd Branch
lDataSet2.Next
    v = "Branch1"
   Wend   
    if (lDetailDataSet.Locate("BranchName", v, false, false)) then
      lDetailDataSet.Edit
      lDetailDataSet.FindField("Address1").AsString   = "DAddress1-Changed"
      lDetailDataSet.FindField("Address2").AsString   = "DAddress2-Changed"
      lDetailDataSet.FindField("Address3").AsString   = "DAddress3-Changed"
      lDetailDataSet.FindField("Address4").AsString   = "DAddress4-Changed"
      lDetailDataSet.FindField("Attention").AsString  = "DAttention-Changed"
      lDetailDataSet.FindField("Phone1").AsString    = "DPhone1-Changed"
      lDetailDataSet.FindField("Fax1").AsString       = "DFax1-Changed"
      lDetailDataSet.FindField("Email").AsString     = "DEmailAddress-Changed"
      lDetailDataSet.Post 
  end IF
  'Step 6 Save Customer
  BizObject.Save
  BizObject.Close
   MsgBox "Done"
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 7,666: Line 8,029:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Common.Agent.RO====
====GL.TrialBalance.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Common.Agent.RO Script   
! GL Trial Balance  Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Common.Agent.RO.vbs
'Copy below script & paste to notepad & name it as eg GL.TrialBalance.RO.vbs
Call GetInfo
Call GetGLTBData
   
   
Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,679: Line 8,042:
End Function
End Function
   
   
Function GetInfo
Function GetGLTBData
Dim ComServer, RptObject, lDataSet1
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
Line 7,688: Line 8,051:
   
   
   'Step 2: Find and Create the Report Objects
   'Step 2: Find and Create the Report Objects
   Set RptObject = ComServer.RptObjects.Find("Common.Agent.RO")  
   Set RptObject = ComServer.RptObjects.Find("GL.TrialBalance.RO")  
   
   
  'Step 3: Spool parameters
  RptObject.Params.Find("AllProject").Value      = true
  RptObject.Params.Find("AllAgent").Value        = true
  RptObject.Params.Find("AllArea").Value        = true
  RptObject.Params.Find("LedgerType").Value      = "G" 'G = Legder, S = Debtor, P = Supplier
  'RptObject.Params.Find("ProjectData").Value    = 'Not use if AllArea is true
  RptObject.Params.Find("ShowZeroBalance").Value = false
  RptObject.Params.Find("SortBy").Value          = "PostDate;DocNo"
  RptObject.Params.Find("UseDescription2").Value = false
 
  lDateFrom = CDate("October 27, 2016")
  lDateTo = CDate("December 31, 2016")
   
   
   'Step 3: Perform Report calculation
   'For Post Date From & Date To'
   RptObject.CalculateReport()
   RptObject.Params.Find("DateFrom").Value      = lDateFrom
   Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  RptObject.Params.Find("DateTo").Value        = lDateTo
 
   'RptObject.Params.Find("AgentData").Value      = 'Not use if AllAgent is true
  'RptObject.Params.Find("AreaData").Value      = 'Not use if AllArea is true
    
    
   MsgBox "Count " & lDataSet1.RecordCount
  RptObject.Params.Find("SortBy").Value          = "Code;Description"
  'Step 4: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsGLAccount")
 
   MsgBox "Count " & lDataSet.RecordCount
   
   
   'Step 5 Retrieve the output  
   'Step 5 Retrieve the output  
   lDataSet1.First
   lDataSet.First
   While (not lDataSet1.eof)
   While (not lDataSet.eof)
MsgBox "Code : " & lDataSet1.FindField("Code").AsString  
    MsgBox "Month To Date"
MsgBox "Description : " & lDataSet1.FindField("Description").AsString  
MsgBox lDataSet.FindField("Code").AsString & " DR=>" & lDataSet.FindField("MTDDR").AsString & " CR=>" & lDataSet.FindField("MTDCR").AsString
lDataSet1.Next
   Wend    
MsgBox "Year To Date"
MsgBox lDataSet.FindField("Code").AsString & " DR=>" & lDataSet.FindField("YTDDR").AsString & " CR=>" & lDataSet.FindField("YTDCR").AsString
lDataSet.Next
  Wend
 
  'For Account List
  lDataSet2.First
  While (not lDataSet2.eof)
MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
lDataSet2.Next
   Wend
 
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 7,710: Line 8,106:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Stock.Item.RO====
====Customer.Aging.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Stock.Item.RO Script   
! Customer Aging  Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Stock.Item.RO.vbs
'Copy below script & paste to notepad & name it as eg customer_aging_ro.vbs
Call GetInfo
Call GetCustStatementData
   
   
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function GetInfo
Function GetCustStatementData
Dim ComServer, RptObject, lDataSet1, lDataSet2, lDateFrom, lDateTo
Const Quote = """"
   'Step 1 Create Com Server object
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo, lAgeData
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C\DB\SQLAcc.DCF", "ACC-0002.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
   END IF
   END IF
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.Aging.RO")
   
   
   'Step 2 Find and Create the Report Objects
   'Step 3: Spool parameters
   Set RptObject = ComServer.RptObjects.Find("Stock.Item.RO")
   lAgeData = "<?xml version=" & Quote & "1.0" & Quote & " standalone=" & Quote & "yes" & Quote & "?>  <DATAPACKET Version=" & Quote & "2.0" & Quote & "><METADATA><FIELDS>" &_
      "<FIELD attrname=" & Quote & "ColumnNo" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "ColumnType" & Quote & " fieldtype=" & Quote & "string" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
  'Step 3 Spool parameters
      "<FIELD attrname=" & Quote & "Param1" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "Param2" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/>" &_
    RptObject.Params.Find("AllItem").AsBoolean              = true
      "<FIELD attrname=" & Quote & "IsLocal" & Quote & " fieldtype=" & Quote & "boolean" & Quote & "/><FIELD attrname=" & Quote & "HeaderScript" & Quote & " fieldtype=" & Quote & "bin.hex" & Quote & " SUBTYPE=" & Quote & "Text" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
    RptObject.Params.Find("AllStockGroup").AsBoolean        = true
      "</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo=" & Quote & "0" & Quote & " ColumnType=" & Quote & "" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & "/>" &_
    RptObject.Params.Find("AllCustomerPriceTag").AsBoolean  = true
      "<ROW ColumnNo=" & Quote & "1" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;" & Quote & "/>" &_
    RptObject.Params.Find("AllSupplierPriceTag").AsBoolean  = true
      "<ROW ColumnNo=" & Quote & "2" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-1" & Quote & " Param2=" & Quote & "-1" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;" & Quote & "/>" &_
    'RptObject.Params.Find("CategoryData").AsBlob            = 'Not use
      "<ROW ColumnNo=" & Quote & "3" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-2" & Quote & " Param2=" & Quote & "-2" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;" & Quote & "/>" &_
    'RptObject.Params.Find("CategoryTpl").AsBlob            = 'Not use
      "<ROW ColumnNo=" & Quote & "4" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-3" & Quote & " Param2=" & Quote & "-3" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;" & Quote & "/>" &_
    'RptObject.Params.Find("CustomerPriceTagData").AsBlob    = 'Not use if AllCustomerPriceTag is True
      "<ROW ColumnNo=" & Quote & "5" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-4" & Quote & " Param2=" & Quote & "-4" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;" & Quote & "/>" &_
    'RptObject.Params.Find("SupplierPriceTagData").AsBlob    = 'Not use if AllSupplierPriceTag is True
      "<ROW ColumnNo=" & Quote & "6" & Quote & " ColumnType=" & Quote & "B" & Quote & " Param1=" & Quote & "-999999" & Quote & " Param2=" & Quote & "-5" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;" & Quote & "/>" &_
      "</ROWDATA></DATAPACKET>"
    lDateFrom = CDate("January 01, 2017")
  RptObject.Params.Find("ActualGroupBy").Value        = "Code;CompanyName" 'Fixed
    lDateTo = CDate("December 31, 2017")
' RptObject.Params.Find("AgentData").Value            =  'Not use if AllAgent is True
 
   RptObject.Params.Find("AgingData").Value            = lAgeData 'Fixed
    'RptObject.Params.Find("DateFrom").AsDate                = lDateFrom 'Not use if SelectDate is False
 
    'RptObject.Params.Find("DateTo").AsDate                  = lDateTo
   lDateTo = CDate("August 31, 2016")
    RptObject.Params.Find("HasAltStockItem").AsBoolean      = false
  RptObject.Params.Find("AgingDate").Value            = lDateTo 
    RptObject.Params.Find("HasBarcode").AsBoolean          = false
    RptObject.Params.Find("HasBOM").AsBoolean              = false
    RptObject.Params.Find("HasCategory").AsBoolean          = false
    RptObject.Params.Find("HasCustomerItem").AsBoolean      = false
    RptObject.Params.Find("HasOpeningBalance").AsBoolean    = false
    RptObject.Params.Find("HasPurchasePrice").AsBoolean    = false
    RptObject.Params.Find("HasSellingPrice").AsBoolean      = false
    RptObject.Params.Find("HasSupplierItem").AsBoolean      = false
    'RptObject.Params.Find("ItemData").AsBlob                = 'Not use if AllItem is True
    'RptObject.Params.Find("ItemCategoryData").AsBlob        = 'Not use if SelectCategory is False
    RptObject.Params.Find("PrintActive").AsBoolean          = true
    RptObject.Params.Find("PrintInActive").AsBoolean        = true
    RptObject.Params.Find("PrintNonStockControl").AsBoolean = true
    RptObject.Params.Find("PrintStockControl").AsBoolean    = true
    RptObject.Params.Find("SelectCategory").AsBoolean      = false
    RptObject.Params.Find("SelectDate").AsBoolean          = false
    RptObject.Params.Find("SortBy").AsString                  = "Code"
    'RptObject.Params.Find("StockGroupData").AsBlob        =  'Not use if AllStockGroup is True
   
  'Step 4 Perform Report calculation
   RptObject.CalculateReport()
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsUOM") ' To link Master Data use Code
  MsgBox "Count " & lDataSet1.RecordCount
   'Step 5 Retrieve the output
  lDataSet1.First
  While (not lDataSet1.eof)
    MsgBox "Code " & lDataSet1.FindField("Code").AsString
    MsgBox "Description " & lDataSet1.FindField("Description").AsString
    MsgBox "Balance Qty " & lDataSet1.FindField("BalSQty").AsString
    lDataSet1.Next
  Wend


   MsgBox "Count " & lDataSet2.RecordCount
  RptObject.Params.Find("AgingOn").Value              = "I" 'Fixed
   lDataSet2.First
  RptObject.Params.Find("AllAgent").Value            = true
   While (not lDataSet2.eof)
  RptObject.Params.Find("AllArea").Value              = true
     MsgBox "Code " & lDataSet2.FindField("Code").AsString  
  RptObject.Params.Find("AllCompany").Value          = false
MsgBox "UOM " & lDataSet2.FindField("UOM").AsString  
  RptObject.Params.Find("AllCompanyCategory").Value  = true
MsgBox "Rate " & lDataSet2.FindField("Rate").AsString  
  RptObject.Params.Find("AllControlAccount").Value    = true
MsgBox "RefPrice " & lDataSet2.FindField("RefPrice").AsString
  RptObject.Params.Find("AllCurrency").Value          = true
     lDataSet2.Next
  RptObject.Params.Find("AllDocProject").Value        = true
   Wend
'  RptObject.Params.Find("AreaData").Value            =  'Not use if AllArea is True
'  RptObject.Params.Find("CompanyCategoryData").Value  =  'Not use if AllCompanyCategory is True
  RptObject.Params.Find("CompanyData").Value          = "300-A0001"& vbCRLF & "300-C0001" 'Filter by Customer Code 300-A0001 & 300-C0001
'  RptObject.Params.Find("ControlAccountData").Value  =  'Not use if AllControlAccount is True
'  RptObject.Params.Find("CurrencyData").Value        =  'Not use if AllCurrency is True
'  RptObject.Params.Find("DocProjectData").Value      =  'Not use if AllDocProject is True
  RptObject.Params.Find("FilterPostDate").Value        = false
'  RptObject.Params.Find("GroupBy").Value              = 'Not use
  RptObject.Params.Find("IncludePDC").Value        = false
  RptObject.Params.Find("IncludeZeroBalance").Value  = false
  RptObject.Params.Find("SortBy").Value              = "Code;CompanyName"
  RptObject.Params.Find("DateTo").Value              = lDateTo
 
  'Step 4: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocument")
   MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output
   lDataSet.First
   While (not lDataSet.eof)
     MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString & " " & lDataSet.FindField("C1").AsString
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("DocNo").AsString & " " & lDataSet2.FindField("C1").AsString
  lDataSet2.Next
     Wend
lDataSet.Next
   Wend
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 7,799: Line 8,196:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Stock Item Balance====
====GL.JE.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Stock Item Balance Script   
! GL Journal Voucher Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg GLJE_ro.vbs
'Copy below script & paste to notepad & name it as eg ItemBalance.vbs
Call GetCustomerData
Call CheckLogin
Call GetData
 
Dim ComServer


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,816: Line 8,209:
End Function
End Function


function CheckLogin
Function GetCustomerData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function


Function GetData
  'Step 2: Find and Create the Report Objects
Dim lDataSet, lSQL
   Set RptObject = ComServer.RptObjects.Find("GL.JE.RO")
   lSQL = "SELECT A.Location, A.Batch, A.ItemCode, B.Description, Sum(A.Qty) Qty FROM ST_TR A "
 
   lSQL = lSQL & "INNER JOIN ST_ITEM B ON (A.ITEMCODE=B.CODE) "  
  'Step 3: Spool parameters
   lSQL = lSQL & "WHERE B.IsActive='T' "
  RptObject.Params.Find("AllCurrency").Value = true
   lSQL = lSQL & "AND A.PostDate <= '31 Dec 2017' "
  RptObject.Params.Find("AllDocProject").Value = true
   lSQL = lSQL & "AND A.ItemCode= 'ANT' "
  RptObject.Params.Find("AllDocument").Value = true
   lSQL = lSQL & "GROUP by A.Location, A.Batch, A.ItemCode, B.Description"
   RptObject.Params.Find("AllItemProject").Value = true
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
  RptObject.Params.Find("AllItemArea").Value = true
  RptObject.Params.Find("AllItemAgent").Value = true
  RptObject.Params.Find("AllDocAgent").Value = true
  RptObject.Params.Find("AllDocArea").Value = true
   RptObject.Params.Find("AllPaymentMethod").Value = true
 
  lDateFrom = CDate("December 1, 2017")
   lDateTo = CDate("December 31, 2017")
 
   RptObject.Params.Find("DateFrom").Value = lDateFrom
  RptObject.Params.Find("DocDateFrom").Value = lDateFrom
  RptObject.Params.Find("DateTo").Value = lDateTo
   RptObject.Params.Find("DocDateTo").Value = lDateTo
  RptObject.Params.Find("IncludeCancelled").Value = false
  RptObject.Params.Find("PrintDocumentStyle").Value = false
  RptObject.Params.Find("SelectDate").Value = true 'Post Date
   RptObject.Params.Find("SelectDocDate").Value = false 'Doc Date
    
    
  'Step 4: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDetail")
  MsgBox "Count " & lDataSet.RecordCount
  'Step 5 Retrieve the output
   lDataSet.First
   lDataSet.First
   While (not lDataSet.eof)
   While (not lDataSet.eof)
     MsgBox "Location : " & lDataSet.FindField("Location").AsString
     MsgBox lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Description").AsString
    MsgBox "Batch : " & lDataSet.FindField("Batch").AsString
lDataSet2.First
     MsgBox "Item Code : " & lDataSet.FindField("ItemCode").AsString
     While (not lDataSet2.eof)
MsgBox "Item Description : " & lDataSet.FindField("Description").AsString
  MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
MsgBox "Balance Qty : " & lDataSet.FindField("Qty").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
lDataSet.Next
   Wend
   Wend
Line 7,850: Line 8,266:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====ST_IS====
====SL_CS====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_IS Script   
! SL_CS Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg StockIssue.vbs
'Copy below script & paste to notepad & name it as eg SL_CS.vbs
Call CheckLogin
Call InsertData
Call InsertData
Dim ComServer


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 7,866: Line 8,279:
End Function
End Function


function CheckLogin
Function InsertData
Dim ComServer, BizObject, lDate
 
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function


Function InsertData
Dim BizObject, lMain, lDetail, lDate
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("ST_IS")  
   Set BizObject = ComServer.BizObjects.Find("SL_CS")  


   'Step 3: Set Dataset
   'Step 3: Set Dataset
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")   'lMainDataSet contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
   Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data   
    
    
   'Step 4 : Insert Data - Master
   'Step 4 : Insert Data - Master
   lDate = CDate("January 1, 2017")
   lDate = CDate("January 1, 2016")
   BizObject.New
   BizObject.New
   lMain.FindField("DocKey").value         = -1
   lMainDataSet.FindField("DocKey").value = -1
   lMain.FindField("DocNo").AsString      = "--IS Test--"
   lMainDataSet.FindField("DocNo").value = "--IV Test--"
   lMain.FindField("DocDate").value       = lDate
   lMainDataSet.FindField("DocDate").value = lDate
   lMain.FindField("PostDate").value       = lDate
   lMainDataSet.FindField("PostDate").value = lDate
   lMain.FindField("Description").AsString = "Stock Issue"
   lMainDataSet.FindField("Code").value = "300-C0001" 'Customer Code
  lMainDataSet.FindField("Description").value = "Sales"
      
      
   'Step 5: Insert Data - Detail
   'Step 5: Insert Data - Detail
   lDetail.Append
   'For Tax Inclusive = True with override Tax Amount
   lDetail.FindField("DtlKey").value         = -1
  lDetailDataSet.Append
   lDetail.FindField("DocKey").value         = -1
   lDetailDataSet.FindField("DtlKey").value = -1
   lDetail.FindField("ItemCode").AsString    = "ANT"
   lDetailDataSet.FindField("DocKey").value = -1
   lDetail.FindField("Description").AsString = "Issue out Item A"
   lDetailDataSet.FindField("Account").value = "500-000" 'Sales Account Code  & can ignore if had itemcode
   lDetail.FindField("Qty").AsFloat          = 2
   lDetailDataSet.FindField("Description").value = "Sales Item A"
   lDetail.Post
   lDetailDataSet.FindField("Qty").value =  1
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 410.37
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
 
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value =  1
  lDetailDataSet.EnableControls
 
  lDetailDataSet.Post
 
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Qty").value =  1
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 94.43
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
   lDetailDataSet.Post


   lDetail.Append
   'For With Item Code
   lDetail.FindField("DtlKey").value         = -1
  lDetailDataSet.Append
   lDetail.FindField("DocKey").value         = -1
   lDetailDataSet.FindField("DtlKey").value = -1
   lDetail.FindField("ItemCode").AsString    = "E-BAT"
   lDetailDataSet.FindField("DocKey").value = -1
   lDetail.FindField("Description").AsString = "Issue out Item A"
   lDetailDataSet.FindField("ItemCode").value = "ANT"
   lDetail.FindField("Qty").AsFloat          = 4
   lDetailDataSet.FindField("Description").value = "Sales Item B"
   lDetail.Post
   lDetailDataSet.FindField("Qty").value =  2
   'Step 6: Save Document
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 100
   lDetailDataSet.FindField("Amount").value = 200
  lDetailDataSet.FindField("TaxAmt").value = 12
  lDetailDataSet.Post
 
   'Step 6: Save Document
   BizObject.Save
   BizObject.Save
   BizObject.Close
   BizObject.Close
   
   ComServer.Logout
   ComServer.Logout 'Logout after done
   MsgBox "Done"
   MsgBox "Done"
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 7,921: Line 8,364:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====ST_RC====
====Customer.PM.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_RC Script   
! Customer.PM.RO Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg StockReceived.vbs
'Copy below script & paste to notepad & name it as eg Customer.PM.RO.vbs
Call CheckLogin
Call GetARPMData
Call InsertData
 
Dim ComServer
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
function CheckLogin
Function GetARPMData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.PM.RO")
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
  'RptObject.Params.Find("CompanyCategoryData").Value    = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("AllAgent").Value                = true
  RptObject.Params.Find("AllCompanyCategory").Value      = true
  RptObject.Params.Find("AllArea").Value                = true
  RptObject.Params.Find("AllCompany").Value              = true
  RptObject.Params.Find("AllCurrency").Value            = true
  RptObject.Params.Find("AllDocument").Value            = false
  RptObject.Params.Find("AllPaymentMethod").Value        = true
  'RptObject.Params.Find("AreaData").Value                = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value            = 'Not use if AllCompany is true
  'RptObject.Params.Find("CurrencyData").Value            = 'Not use if AllCurrency is true


Function InsertData
   lDateFrom = CDate("January 01, 2017")
Dim BizObject, lMain, lDetail, lDate
   lDateTo = CDate("December 31, 2017")
  'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("ST_RC")
 
  'Step 3: Set Dataset
  Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   'Step 4 : Insert Data - Master
   RptObject.Params.Find("DateFrom").Value                = lDateFrom
  lDate = CDate("January 1, 2017")
   RptObject.Params.Find("DateTo").Value                  = lDateTo
   BizObject.New
   RptObject.Params.Find("DocumentData").Value            = "VCOR-00049"
  lMain.FindField("DocKey").value        = -1
   'RptObject.Params.Find("GroupBy").Value                = 'If you wanted to grouping the data
   lMain.FindField("DocNo").AsString      = "--RC Test--"
   RptObject.Params.Find("IncludeCancelled").Value        = false
   lMain.FindField("DocDate").value        = lDate
   'RptObject.Params.Find("PaymentMethodData").Value      = 'Not use if AllPaymentMethod is true
   lMain.FindField("PostDate").value      = lDate
   RptObject.Params.Find("PrintDocumentStyle").Value      = false
   lMain.FindField("Description").AsString = "Stock Received"
   RptObject.Params.Find("SelectDate").Value              = true
   
   RptObject.Params.Find("ShowUnappliedAmountOnly").Value = false
  'Step 5: Insert Data - Detail
   RptObject.Params.Find("SortBy").Value                  = "PostDate;DocNo;Code"
   lDetail.Append
   RptObject.Params.Find("AllDocProject").Value          = true
   lDetail.FindField("DtlKey").value        = -1
  RptObject.Params.Find("AllItemProject").Value          = true
   lDetail.FindField("DocKey").value        = -1
   'RptObject.Params.Find("DocProjectData").Value         = 'Not use if AllDocProject is true
   lDetail.FindField("ItemCode").AsString    = "ANT"
   'RptObject.Params.Find("ItemProjectData").Value        = 'Not use if AllItemProject is true 
   lDetail.FindField("Description").AsString = "Received Item A"
 
   lDetail.FindField("Qty").AsFloat         = 2
  'Step 4: Perform Report calculation
   lDetail.FindField("UnitCost").AsFloat    = 25.15
  RptObject.CalculateReport()
   lDetail.Post
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
 
   Set lDataSet2 = RptObject.DataSets.Find("cdsKnockOff")
   lDetail.Append
   Set lDataSet3 = RptObject.DataSets.Find("cdsKnockOffDetail")
   lDetail.FindField("DtlKey").value        = -1
  MsgBox "Count " & lDataSet.RecordCount
   lDetail.FindField("DocKey").value        = -1
  lDetail.FindField("ItemCode").AsString   = "E-BAT"
  'Step 5 Retrieve the output
  lDetail.FindField("Description").AsString = "Received Item A"
  lDataSet.First
  lDetail.FindField("Qty").AsFloat          = 4
   While (not lDataSet.eof)
  lDetail.FindField("UnitCost").AsFloat     = 54
    MsgBox lDataSet.FindField("DocKey").AsString & " " &  lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Code").AsString
  lDetail.Post 
MsgBox "cdsKnockOff Count " & lDataSet2.RecordCount
  'Step 6: Save Document
lDataSet2.First
  BizObject.Save
    While (not lDataSet2.eof)
  BizObject.Close
  MsgBox lDataSet2.FindField("FromDocKey").AsString & " " & lDataSet2.FindField("DocNo").AsString & " " & lDataSet2.FindField("KOAmt").AsString
      
  lDataSet2.Next
  ComServer.Logout 'Logout after done
    Wend
   MsgBox "Done" 
     MsgBox "cdsKnockOffDetail Count " & lDataSet3.RecordCount
lDataSet3.First
    While (not lDataSet3.eof)
      MsgBox lDataSet3.FindField("FromDocKey").AsString & " " & lDataSet3.FindField("DocNo").AsString & " " & lDataSet3.FindField("KOAmt").AsString
    lDataSet3.Next
     Wend
lDataSet.Next
   Wend
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 7,994: Line 8,451:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====ST_AJ====
====Sales.IV.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_AJ Script   
! Sales.IV.RO Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg StockAdjustment.vbs
'Copy below script & paste to notepad & name it as eg Sales.IV.RO.vbs
Call CheckLogin
Call GetSalesIVData
Call InsertData
 
Dim ComServer
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
function CheckLogin
Function GetSalesIVData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Sales.IV.RO")
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
  RptObject.Params.Find("AllAgent").Value              = true
  RptObject.Params.Find("AllArea").Value                = true
  RptObject.Params.Find("AllCompany").Value            = false
  RptObject.Params.Find("AllCurrency").Value            = true
  RptObject.Params.Find("AllDocProject").Value          = true
  RptObject.Params.Find("AllDocument").Value            = true
  RptObject.Params.Find("AllItem").Value                = true
  RptObject.Params.Find("AllItemProject").Value        = true
  RptObject.Params.Find("AllLocation").Value            = true
  RptObject.Params.Find("AllStockGroup").Value          = true
  RptObject.Params.Find("AllCompanyCategory").Value    = true
  RptObject.Params.Find("AllBatch").Value              = true
  RptObject.Params.Find("AllTariff").Value              = true 'For Version 776 & above
  'RptObject.Params.Find("TariffData").Value            = 'Not use if TariffData is true - For Version 776 & above
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyCategoryData").Value    = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("CompanyData").Value            = "300-C0001"
  'RptObject.Params.Find("CurrencyData").Value          = 'Not use if AllCurrency is true


Function InsertData
   lDateFrom = CDate("January 01, 2017")
Dim BizObject, lMain, lDetail, lDate
   lDateTo = CDate("December 31, 2017")
  'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("ST_AJ")
 
  'Step 3: Set Dataset
  Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   'Step 4 : Insert Data - Master
   RptObject.Params.Find("DateFrom").Value                = lDateFrom
   lDate = CDate("January 1, 2017")
   RptObject.Params.Find("DateTo").Value                  = lDateTo
   BizObject.New
  'RptObject.Params.Find("DocProjectData").Value          = 'Not use if AllDocProject is true
   lMain.FindField("DocKey").value        = -1
   'RptObject.Params.Find("DocumentData").Value            = 'Not use if AllDocument is true
   lMain.FindField("DocNo").AsString      = "--AJ Test--"
   'RptObject.Params.Find("GroupBy").Value                = 'If you wanted to grouping the data
   lMain.FindField("DocDate").value       = lDate
   'RptObject.Params.Find("CategoryData").Value            = 'Not use if HasCategory is false
   lMain.FindField("PostDate").value      = lDate
  'RptObject.Params.Find("CategoryTpl").Value            = 'For Internal use only
   lMain.FindField("Description").AsString = "Stock Adjustment"
   RptObject.Params.Find("IncludeCancelled").Value       = false
   
   RptObject.Params.Find("HasCategory").Value            = false
   'Step 5: Insert Data - Detail
   'RptObject.Params.Find("ItemData").Value                = 'Not use if AllItem is true
   lDetail.Append
  'RptObject.Params.Find("ItemProjectData").Value        = 'Not use if AllItemProject is true
   lDetail.FindField("DtlKey").value        = -1
   'RptObject.Params.Find("LocationData").Value            = 'Not use if AllLocation is true
   lDetail.FindField("DocKey").value        = -1
   'RptObject.Params.Find("ItemCategoryData").Value        = 'For Internal use only
   lDetail.FindField("ItemCode").AsString    = "ANT"
   'RptObject.Params.Find("BatchData").Value              = 'Not use if AllBatch is true
   lDetail.FindField("Description").AsString = "Adjust IN Item A"
   RptObject.Params.Find("PrintDocumentStyle").Value      = false
   lDetail.FindField("Qty").AsFloat         = 2
   RptObject.Params.Find("SelectDate").Value              = true
   lDetail.FindField("UnitCost").AsFloat    = 25.15 'Only IN need UnitCost
   RptObject.Params.Find("SortBy").Value                  = "PostDate;DocNo;Code"
   lDetail.Post
   'RptObject.Params.Find("StockGroupData").Value         = 'Not use if AllStockGroup is true
 
 
   lDetail.Append
 
   lDetail.FindField("DtlKey").value        = -1
  'Step 4: Perform Report calculation
  lDetail.FindField("DocKey").value        = -1
   RptObject.CalculateReport()
  lDetail.FindField("ItemCode").AsString   = "E-BAT"
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  lDetail.FindField("Description").AsString = "Adjust OUT Item A"
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocDetail")
  lDetail.FindField("Qty").AsFloat          = -4
   MsgBox "Count " & lDataSet.RecordCount
  lDetail.Post 
  'Step 6: Save Document
   'Step 5 Retrieve the output
  BizObject.Save
  lDataSet.First
  BizObject.Close
   While (not lDataSet.eof)
      
    MsgBox lDataSet.FindField("DocKey").AsString & " " &  lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Code").AsString
  ComServer.Logout 'Logout after done
MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
   MsgBox "Done" 
lDataSet2.First
    While (not lDataSet2.eof)
  MsgBox lDataSet2.FindField("DocKey").AsString & " " & lDataSet2.FindField("ItemCode").AsString & " " & lDataSet2.FindField("Amount").AsString
  lDataSet2.Next
     Wend
lDataSet.Next
   Wend
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 8,066: Line 8,543:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====ST_XF====
====Customer.DueDocument.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_XF Script   
! Customer.DueDocument.RO Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg ST_XF.vbs
'Copy below script & paste to notepad & name it as eg Customer.DueDocument.RO.vbs
Call CheckLogin
Call GetData
Call InsertData
 
Function CreateSQLAccServer
Dim ComServer
 
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
function CheckLogin
Function GetData
Dim ComServer, RptObject, lDataSet, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.DueDocument.RO")
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
  RptObject.Params.Find("AllAgent").Value              = true
  RptObject.Params.Find("AllArea").Value                = true
  RptObject.Params.Find("AllCompany").Value            = false
  RptObject.Params.Find("AllCompanyCategory").Value    = true
  RptObject.Params.Find("AllCurrency").Value            = true
  RptObject.Params.Find("AllDocProject").Value          = true
  RptObject.Params.Find("AllItemProject").Value        = true
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyCategoryData").Value  = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("CompanyData").Value            = "300-A0003"
  'RptObject.Params.Find("CurrencyData").Value          = 'Not use if AllCurrency is true
  'RptObject.Params.Find("DocProjectData").Value        = 'Not use if AllDocProject is true
  'RptObject.Params.Find("GroupBy").Value              = 'If you wanted to grouping the data
  'RptObject.Params.Find("ItemProjectData").Value      = 'Not use if AllItemProject is true
  RptObject.Params.Find("PrintContra").Value            = true
  RptObject.Params.Find("PrintCreditNote").Value        = true
  RptObject.Params.Find("PrintDebitNote").Value        = true
  RptObject.Params.Find("PrintInvoice").Value          = true
  RptObject.Params.Find("PrintOverDue").Value          = true
  RptObject.Params.Find("PrintUnDue").Value            = true
  RptObject.Params.Find("ShowForeignCurrency").Value    = true
  RptObject.Params.Find("ShowLocalCurrency").Value      = true
  RptObject.Params.Find("SortBy").Value                = "PostDate;DocNo;Code"
 
  lDateTo = CDate("April 12, 2018")
 
  RptObject.Params.Find("DateTo").Value                = lDateTo
  RptObject.Params.Find("IncludePDCheque").Value        = true 
   
  'Step 4: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  MsgBox "Count " & lDataSet.RecordCount
  'Step 5 Retrieve the output
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "Dockey " & lDataSet.FindField("DocKey").AsString
MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
MsgBox "DocAmt " & lDataSet.FindField("DocAmt").AsString
MsgBox "Outstanding " & lDataSet.FindField("Outstanding").AsString
MsgBox "Code " & lDataSet.FindField("Code").AsString
lDataSet.Next
  Wend
End Function
End Function
</syntaxhighlight>
|}


Function InsertData
<div style="float: right;">  [[#top|[top]]]</div>
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_XF")


  'Step 3: Set Dataset
====Customer.IV.RO====
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value        = -1
  lMain.FindField("DocNo").AsString      = "--XF Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value      = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account - Optional
  lMain.FindField("CompanyName").AsString = "Cash Sales" 'Optional
  lMain.FindField("Description").AsString = "Stock Transfer"
   
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString  = "Transfer Item A"
  lDetail.FindField("Qty").AsFloat          = 10
  lDetail.FindField("UOM").AsString          = "UNIT"
  lDetail.FindField("FromLocation").AsString = "----"
  lDetail.FindField("ToLocation").AsString  = "BALAKONG"
  lDetail.Post
 
  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString    = "HFK"
  lDetail.FindField("Description").AsString  = "Transfer Item B"
  lDetail.FindField("Qty").AsFloat          = 5
  lDetail.FindField("UOM").AsString          = "UNIT"
  lDetail.FindField("FromLocation").AsString = "----"
  lDetail.FindField("ToLocation").AsString  = "BALAKONG"
  lDetail.Post
 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
 
  'Step 7 : Logout after done 
  'ComServer.Logout
 
  MsgBox "Done" 
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====AP_PI-Edit====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AP_PI Edit Script   
! Customer.IV.RO Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg Customer.IV.RO.vbs
'Copy below script & paste to notepad & name it as eg AP_PI.vbs
Call CheckLogin
Call GetData
Call GetData
Call PostData
 
Dim ComServer, lDataSet
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
function CheckLogin
Function GetData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
 
  'Step 2: Find and Create the Report Objects
Function GetData
   Set RptObject = ComServer.RptObjects.Find("Customer.IV.RO")
Dim lSQL
   lSQL = "SELECT Dockey FROM AP_PI "
   'Step 3: Spool parameters
   lSQL = lSQL & "WHERE DocNo='PI-00001' "
  'RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is true
   lSQL = lSQL & "AND Code='400-D0001' "
  'RptObject.Params.Find("CompanyCategoryData").Value  = 'Not use if AllCompanyCategory is true
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
   RptObject.Params.Find("AllAgent").Value              = true
End Function
  RptObject.Params.Find("AllCompanyCategory").Value    = true
 
  RptObject.Params.Find("AllArea").Value                = true
Function PostData
   RptObject.Params.Find("AllCompany").Value            = true
Dim BizObject, lMain, lDetail
  RptObject.Params.Find("AllCurrency").Value            = true
   'Step 2: Find and Create the Biz Objects
   RptObject.Params.Find("AllDocument").Value            = false
   Set BizObject = ComServer.BizObjects.Find("AP_PI")  
   RptObject.Params.Find("AllPaymentMethod").Value      = true
 
   'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
   'Step 3: Set Dataset
   'RptObject.Params.Find("CompanyData").Value          = 'Not use if AllCompany is true
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   'RptObject.Params.Find("CurrencyData").Value          = 'Not use if AllCurrency is true
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   'Step 4 : Find Doc Number
   lDateFrom = CDate("January 01, 2017")
  If lDataSet.RecordCount > 0 Then 
  lDateTo = CDate("December 31, 2017")
lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
    
    
    
   RptObject.Params.Find("DateFrom").Value                = lDateFrom
    BizObject.Open
  RptObject.Params.Find("DateTo").Value                  = lDateTo
    BizObject.Edit
  RptObject.Params.Find("DocumentData").Value            = "IV-00012"
    lMain.Edit
   'RptObject.Params.Find("GroupBy").Value                = 'If you wanted to grouping the data
lMain.FindField("Description").AsString = "testing"  
   RptObject.Params.Find("IncludeCancelled").Value        = true
    
   'RptObject.Params.Find("PaymentMethodData").Value      = 'Not use if AllPaymentMethod is true
   'Step 5: Delete all Detail
  RptObject.Params.Find("PrintDocumentStyle").Value      = false
    While lDetail.RecordCount <> 0
  RptObject.Params.Find("SelectDate").Value              = true
      lDetail.First
  RptObject.Params.Find("ShowUnappliedAmountOnly").Value = true
  lDetail.Delete
  RptObject.Params.Find("SortBy").Value                  = "DocDate;DocNo;Code"
    Wend
  RptObject.Params.Find("AllDocProject").Value          = true
   'Step 6: Append Detail
  RptObject.Params.Find("AllItemProject").Value          = true
    lDetail.Append
  'RptObject.Params.Find("DocProjectData").Value        = 'Not use if AllDocProject is true
    lDetail.FindField("DtlKey").value = -1
  'RptObject.Params.Find("ItemProjectData  ").Value      = 'Not use if AllItemProject is true
    lDetail.FindField("Account").value = "610-2000"
      
    lDetail.FindField("Description").value = "Purchase Item A"
   'Step 4: Perform Report calculation
    lDetail.FindField("Tax").value = ""
  RptObject.CalculateReport()
    lDetail.FindField("TaxInclusive").value = 0
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
    lDetail.FindField("Amount").value = 410.37
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocDetail")
    lDetail.FindField("TaxAmt").value = 0
   MsgBox "Count " & lDataSet.RecordCount
     lDetail.Post
 
   'Step 5 Retrieve the output
   'Step 7: Save Document
  lDataSet.First
    BizObject.Save
  While (not lDataSet.eof)
    BizObject.Close
     MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
    
MsgBox "DocAmt " & lDataSet.FindField("DocAmt").AsString
   'Step 8 : Logout after done 
MsgBox "PaymentAmt " & lDataSet.FindField("PaymentAmt").AsString
     'ComServer.Logout 
    MsgBox "Done"  
MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
Else
lDataSet2.First
MsgBox "Record Not Found"  
    While (not lDataSet2.eof)
   END IF
  MsgBox "Account " & lDataSet2.FindField("Account").AsString
 
  MsgBox "Description " & lDataSet2.FindField("Description").AsString
  MsgBox "Amount " & lDataSet2.FindField("Amount").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
   Wend
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 8,237: Line 8,704:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====SL_DO to SL_IV====
====Sales.OutstandingSO.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! SL_DO to SL_IV Script   
! Sales.OutstandingSO.RO Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Updated 26 Oct 2018
'Copy below script & paste to notepad & name it as eg Sales.OutstandingSO.RO.vbs
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call GetData
Call CheckLogin
Call InsertData1
Call InsertData2
 
Dim ComServer
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
function CheckLogin
Function GetData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Sales.OutstandingSO.RO")
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is true
  'RptObject.Params.Find("CompanyCategoryData").Value  = 'Not use if AllCompanyCategory is true
  'RptObject.Params.Find("LocationData").Value        = 'Not use if AllLocation is true
  'RptObject.Params.Find("StockGroupData").Value      = 'Not use if AllStockGroup is true
  RptObject.Params.Find("AllAgent").Value              = true
  RptObject.Params.Find("AllArea").Value              = true
  RptObject.Params.Find("AllCompany").Value            = true
  RptObject.Params.Find("AllDocument").Value          = false
  RptObject.Params.Find("AllItem").Value              = true
  RptObject.Params.Find("AllItemProject").Value        = true
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value          = 'Not use if AllCompany is true
  RptObject.Params.Find("AllTariff").Value              = true 'For Version 776 & above
  'RptObject.Params.Find("TariffData").Value            = 'Not use if TariffData is true - For Version 776 & above


Function InsertData1
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_DO")
  'Step 3: Set Dataset
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   'Begin Looping yr data
   lDateFrom = CDate("January 01, 2017")
  'Step 4 : Insert Data - Master
   lDateTo = CDate("December 31, 2017")  
   lDate = CDate("January 1, 2017")
    
   BizObject.New
  'RptObject.Params.Find("DateFrom").Value              = lDateFrom
   lMain.FindField("DocKey").value        = -1
  'RptObject.Params.Find("DateTo").Value                = lDateTo
   lMain.FindField("DocNo").AsString      = "--DO Test--"
  'RptObject.Params.Find("DeliveryDateFrom").Value      = lDateFrom
   lMain.FindField("DocDate").value        = lDate
   'RptObject.Params.Find("DeliveryDateTo").Value        = lDateTo
   lMain.FindField("PostDate").value       = lDate
   RptObject.Params.Find("DocumentData").Value          = "SO-00007"& vbCRLF & "SO-00009"
   lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
   'RptObject.Params.Find("GroupBy").Value              = 'If you wanted to grouping the data
   lMain.FindField("CompanyName").AsString = "Cash Sales"
   RptObject.Params.Find("IncludeCancelled").Value       = false
   'lMain.FindField("Address1").AsString    = "" 'Optional
  'RptObject.Params.Find("ItemData").Value              = 'Not use if AllItem is true
   'lMain.FindField("Address2").AsString    = "" 'Optional
  RptObject.Params.Find("PrintFulfilledItem").Value    = true 'Print transfered info
   'lMain.FindField("Address3").AsString    = "" 'Optional
   RptObject.Params.Find("PrintOutstandingItem").Value  = true 'Print untransfer info
   'lMain.FindField("Address4").AsString    = "" 'Optional
  'RptObject.Params.Find("ItemProjectData").Value      = 'Not use if AllItemProject is true
   'lMain.FindField("Phone1").AsString     = "" 'Optional
  RptObject.Params.Find("SelectDate").Value            = false
   lMain.FindField("Description").AsString = "Delivery Order"
  RptObject.Params.Find("SelectDeliveryDate").Value    = false
      
   RptObject.Params.Find("SortBy").Value                = "DocDate;DocNo;Code"
   'Step 5: Insert Data - Detail
   RptObject.Params.Find("AllDocProject").Value          = true
   lDetail.Append
  RptObject.Params.Find("AllLocation").Value            = true
   lDetail.FindField("DtlKey").value        = -1
   RptObject.Params.Find("AllCompanyCategory").Value    = true
   lDetail.FindField("DocKey").value        = -1
  RptObject.Params.Find("AllBatch").Value              = true
   lDetail.FindField("Seq").value            = 1
   RptObject.Params.Find("HasCategory").Value            = false
  lDetail.FindField("ItemCode").AsString   = "ANT"
  RptObject.Params.Find("AllStockGroup").Value          = true
  lDetail.FindField("Description").AsString = "Sales Item A"
   'RptObject.Params.Find("CategoryData").Value          = 'For Internal use only
  lDetail.FindField("UOM").AsString         = "BOX"
  'RptObject.Params.Find("CategoryTpl").Value          = 'For Internal use only
  lDetail.FindField("Qty").AsFloat          = 2
   'RptObject.Params.Find("ItemCategoryData").Value     = 'For Internal use only
  'lDetail.FindField("DISC").AsString       = "5%+3" 'Optional (eg 5% plus 3 Discount)
  'RptObject.Params.Find("DocProjectData").Value        = 'Not use if AllDocProject is true
  lDetail.FindField("Tax").AsString         = "SR"
   'RptObject.Params.Find("BatchData").Value            = 'Not use if AllBatch is true
  lDetail.FindField("TaxRate").AsString     = "6%"
  RptObject.Params.Find("TranferDocFilterDate").Value  = false
  lDetail.FindField("TaxInclusive").value  = 0
 
  lDetail.FindField("UnitPrice").AsFloat    = 100 
      
  lDetail.FindField("Amount").AsFloat      = 200
   'Step 4: Perform Report calculation
  lDetail.FindField("TaxAmt").AsFloat      = 12
   RptObject.CalculateReport()
   lDetail.Post
   Set lDataSet = RptObject.DataSets.Find("cdsMain")
   Set lDataSet2 = RptObject.DataSets.Find("cdsTransfer")
  MsgBox "Count " & lDataSet.RecordCount
  'Step 5 Retrieve the output
  lDataSet.First
   While (not lDataSet.eof)
    MsgBox "DocKey " & lDataSet.FindField("DocKey").AsString
MsgBox "DtlKey " & lDataSet.FindField("Dtlkey").AsString
MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
MsgBox "Item Code " & lDataSet.FindField("ItemCode").AsString
MsgBox "Org Qty " & lDataSet.FindField("SQty").AsString
MsgBox "Outstanding Qty " & lDataSet.FindField("OutstandingQty").AsString
MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
lDataSet2.First
    While (not lDataSet2.eof)
      MsgBox "FromDocKey " & lDataSet2.FindField("FromDocKey").AsString
  MsgBox "FromDtlKey " & lDataSet2.FindField("FromDtlkey").AsString
  MsgBox "DocType " & lDataSet2.FindField("DocType").AsString
  MsgBox "DocNo " & lDataSet2.FindField("DocNo").AsString
  MsgBox "DocDate " & lDataSet2.FindField("DocDate").AsString
  MsgBox "Transfer Qty " & lDataSet2.FindField("TransferQty").AsString
  lDataSet2.Next
    Wend
lDataSet.Next
  Wend
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">   [[#top|[top]]]</div>


  lDetail.Append
====Common.PaymentMethod.RO====
  lDetail.FindField("DtlKey").value        = -1
{| class="mw-collapsible mw-collapsed wikitable"
  lDetail.FindField("DocKey").value        = -1
! Common.PaymentMethod.RO Script 
  lDetail.FindField("Seq").value            = 2
|-
  lDetail.FindField("ItemCode").AsString    = "COVER"
|
  lDetail.FindField("Description").AsString = "Sales Item B"
<syntaxhighlight lang="vb">
  lDetail.FindField("UOM").AsString        = "UNIT"
'Copy below script & paste to notepad & name it as eg Common.PaymentMethod.RO.vbs
  lDetail.FindField("Qty").AsFloat          = 3
Call GetInfo
  lDetail.FindField("Tax").AsString        = "SR"
   
  lDetail.FindField("TaxRate").AsString    = "6%"
Function CreateSQLAccServer
  lDetail.FindField("TaxInclusive").value  = 0
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  lDetail.FindField("UnitPrice").AsFloat    = 10 
  lDetail.FindField("Amount").AsFloat      = 30
  lDetail.FindField("TaxAmt").AsFloat      = 1.80
  lDetail.Post  
  'Step 6: Save Document
   BizObject.Save
  BizObject.Close
  MsgBox "DO Posting Done" 
End Function
End Function
Function GetInfo
Dim ComServer, RptObject, lDataSet1, lDataSet2
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"
  END IF
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.PaymentMethod.RO")
  'Step 3: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsPaymentAccount") 'You can link with lDataSet1 using Code to get the description


Function InsertData2
  MsgBox "Count " & lDataSet1.RecordCount
Dim BizObject, lMain, lDetail, lDate, lDODtl, lxFer, lSQL, v(2)
   'Step 1: Check Is transtered or not
   'Step 5 Retrieve the output
  lSQL = "SELECT DocKey FROM SL_IVDTL "
  lDataSet1.First
  lSQL = lSQL & "WHERE FromDockey=(SELECT DocKey FROM SL_DO "  
  While (not lDataSet1.eof)
   lSQL = lSQL & "WHERE DocNo='--DO Test--') "
MsgBox "Code : " & lDataSet1.FindField("Code").AsString
   Set lxFer = ComServer.DBManager.NewDataSet(lSQL)
lDataSet1.Next
 
  Wend   
   if lxFer.RecordCount = 0 then
    
    'Step 2: Get DO Information
  MsgBox "Count " & lDataSet2.RecordCount
    lSQL = "SELECT * FROM SL_DODTL "
 
    lSQL = lSQL & "WHERE Dockey=(SELECT DocKey FROM SL_DO "  
   lDataSet2.First
    lSQL = lSQL & "WHERE DocNo='--DO Test--') "
   While (not lDataSet2.eof)
    Set lDODtl = ComServer.DBManager.NewDataSet(lSQL)    
MsgBox "Code : " & lDataSet2.FindField("Code").AsString
MsgBox "Description : " & lDataSet2.FindField("Description").AsString
'Step 3: Find and Create the Biz Objects
lDataSet2.Next
    Set BizObject = ComServer.BizObjects.Find("SL_IV")
  Wend    
End Function
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>


    'Step 4: Set Dataset
====Common.Agent.RO====
     Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
{| class="mw-collapsible mw-collapsed wikitable"
    Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
! Common.Agent.RO Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Common.Agent.RO.vbs
Call GetInfo
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
Function GetInfo
Dim ComServer, RptObject, lDataSet1
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB"
  END IF
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.Agent.RO")  
   
  'Step 3: Perform Report calculation
  RptObject.CalculateReport()
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
    
    
    'Step 5 : Insert Data - Master
  MsgBox "Count " & lDataSet1.RecordCount
    lDate = CDate("January 1, 2017")
    BizObject.New
  'Step 5 Retrieve the output
    lMain.FindField("DocKey").value        = -1
  lDataSet1.First
    lMain.FindField("DocNo").AsString       = "--IV Test--"
  While (not lDataSet1.eof)
    lMain.FindField("DocDate").value        = lDate
MsgBox "Code : " & lDataSet1.FindField("Code").AsString
     lMain.FindField("PostDate").value      = lDate
MsgBox "Description : " & lDataSet1.FindField("Description").AsString  
    lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
lDataSet1.Next
     lMain.FindField("CompanyName").AsString = "Cash Sales"
  Wend     
     'lMain.FindField("Address1").AsString    = "" 'Optional
End Function
     'lMain.FindField("Address2").AsString    = "" 'Optional
</syntaxhighlight>
     'lMain.FindField("Address3").AsString    = "" 'Optional
|}
     'lMain.FindField("Address4").AsString    = "" 'Optional
 
     'lMain.FindField("Phone1").AsString      = "" 'Optional
<div style="float: right;">  [[#top|[top]]]</div>
     lMain.FindField("Description").AsString = "Sales"
 
   
====Stock.Item.RO====
     'Step 6: Insert Data - Detail
{| class="mw-collapsible mw-collapsed wikitable"
    v(0) = "COVER"
! Stock.Item.RO Script 
    v(1) = "UNIT"
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Stock.Item.RO.vbs
Call GetInfo
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
Function GetInfo
Dim ComServer, RptObject, lDataSet1, lDataSet2, lDateFrom, lDateTo
  'Step 1 Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C\DB\SQLAcc.DCF", "ACC-0002.FDB"
  END IF
  'Step 2 Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Stock.Item.RO")  
  'Step 3 Spool parameters
     RptObject.Params.Find("AllItem").AsBoolean              = true
     RptObject.Params.Find("AllStockGroup").AsBoolean        = true
     RptObject.Params.Find("AllCustomerPriceTag").AsBoolean  = true
     RptObject.Params.Find("AllSupplierPriceTag").AsBoolean  = true
     'RptObject.Params.Find("CategoryData").AsBlob            = 'Not use
     'RptObject.Params.Find("CategoryTpl").AsBlob            = 'Not use
     'RptObject.Params.Find("CustomerPriceTagData").AsBlob    = 'Not use if AllCustomerPriceTag is True
     'RptObject.Params.Find("SupplierPriceTagData").AsBlob    = 'Not use if AllSupplierPriceTag is True
     if (lDODtl.Locate("ItemCode;UOM", v, false, false)) then
     lDateFrom = CDate("January 01, 2017")
      lDetail.Append
    lDateTo = CDate("December 31, 2017")
      lDetail.FindField("DtlKey").value        = -1
 
      lDetail.FindField("DocKey").value        = -1
    'RptObject.Params.Find("DateFrom").AsDate                = lDateFrom 'Not use if SelectDate is False
      lDetail.FindField("Seq").value            = 1
    'RptObject.Params.Find("DateTo").AsDate                  = lDateTo
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
    RptObject.Params.Find("HasAltStockItem").AsBoolean      = false
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
    RptObject.Params.Find("HasBarcode").AsBoolean          = false
      'lDetail.FindField("Account").AsString    = "500-000" 'If you wanted override the Sales Account Code
    RptObject.Params.Find("HasBOM").AsBoolean              = false
      lDetail.FindField("UOM").AsString        = lDODtl.FindField("UOM").AsString
    RptObject.Params.Find("HasCategory").AsBoolean         = false
  lDetail.FindField("Qty").AsFloat         = lDODtl.FindField("Qty").AsFloat
    RptObject.Params.Find("HasCustomerItem").AsBoolean      = false
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
    RptObject.Params.Find("HasOpeningBalance").AsBoolean    = false
      lDetail.FindField("Tax").AsString        = lDODtl.FindField("Tax").AsString
    RptObject.Params.Find("HasPurchasePrice").AsBoolean     = false
      lDetail.FindField("TaxRate").AsString     = lDODtl.FindField("TaxRate").AsString
    RptObject.Params.Find("HasSellingPrice").AsBoolean      = false
      lDetail.FindField("TaxInclusive").value  = lDODtl.FindField("TaxInclusive").Value
    RptObject.Params.Find("HasSupplierItem").AsBoolean      = false
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitPrice").AsFloat
    'RptObject.Params.Find("ItemData").AsBlob                = 'Not use if AllItem is True
      lDetail.FindField("Amount").AsFloat      = lDODtl.FindField("Amount").AsFloat
    'RptObject.Params.Find("ItemCategoryData").AsBlob        = 'Not use if SelectCategory is False
      lDetail.FindField("TaxAmt").AsFloat      = lDODtl.FindField("TaxAmt").AsFloat
    RptObject.Params.Find("PrintActive").AsBoolean          = true
  lDetail.FindField("FromDocType").AsString = "DO"
    RptObject.Params.Find("PrintInActive").AsBoolean        = true
  lDetail.FindField("FromDockey").AsFloat  = lDODtl.FindField("DocKey").AsFloat
    RptObject.Params.Find("PrintNonStockControl").AsBoolean = true
  lDetail.FindField("FromDtlkey").AsFloat  = lDODtl.FindField("DtlKey").AsFloat
     RptObject.Params.Find("PrintStockControl").AsBoolean    = true
      lDetail.Post
    RptObject.Params.Find("SelectCategory").AsBoolean      = false
End IF 
    RptObject.Params.Find("SelectDate").AsBoolean          = false
    v(0) = "ANT"
    RptObject.Params.Find("SortBy").AsString                 = "Code"
    v(1) = "BOX"
    'RptObject.Params.Find("StockGroupData").AsBlob        = 'Not use if AllStockGroup is True 
   
     if (lDODtl.Locate("ItemCode;UOM", v, false, false)) then
  'Step 4 Perform Report calculation
      lDetail.Append
  RptObject.CalculateReport()
      lDetail.FindField("DtlKey").value        = -1
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
      lDetail.FindField("DocKey").value        = -1
  Set lDataSet2 = RptObject.DataSets.Find("cdsUOM") ' To link Master Data use Code
      lDetail.FindField("Seq").value            = 2
  MsgBox "Count " & lDataSet1.RecordCount
      lDetail.FindField("ItemCode").AsString   = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
  'Step 5 Retrieve the output
      'lDetail.FindField("Account").AsString    = "500-000" 'If you wanted override the Sales Account Code
  lDataSet1.First
      lDetail.FindField("UOM").AsString        = lDODtl.FindField("UOM").AsString
  While (not lDataSet1.eof)
  lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
    MsgBox "Code " & lDataSet1.FindField("Code").AsString  
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
    MsgBox "Description " & lDataSet1.FindField("Description").AsString  
      lDetail.FindField("Tax").AsString        = lDODtl.FindField("Tax").AsString
    MsgBox "Balance Qty " & lDataSet1.FindField("BalSQty").AsString  
      lDetail.FindField("TaxRate").AsString    = lDODtl.FindField("TaxRate").AsString
    lDataSet1.Next
      lDetail.FindField("TaxInclusive").value   = lDODtl.FindField("TaxInclusive").Value
  Wend
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitPrice").AsFloat
 
      lDetail.FindField("Amount").AsFloat      = lDODtl.FindField("Amount").AsFloat
  MsgBox "Count " & lDataSet2.RecordCount
      lDetail.FindField("TaxAmt").AsFloat      = lDODtl.FindField("TaxAmt").AsFloat
   lDataSet2.First
  lDetail.FindField("FromDocType").AsString = "DO"
  While (not lDataSet2.eof)
  lDetail.FindField("FromDockey").AsFloat  = lDODtl.FindField("DocKey").AsFloat
    MsgBox "Code " & lDataSet2.FindField("Code").AsString
  lDetail.FindField("FromDtlkey").AsFloat  = lDODtl.FindField("DtlKey").AsFloat
MsgBox "UOM " & lDataSet2.FindField("UOM").AsString  
      lDetail.Post
MsgBox "Rate " & lDataSet2.FindField("Rate").AsString
End IF 
MsgBox "RefPrice " & lDataSet2.FindField("RefPrice").AsString
  'Step 7: Save Document
     lDataSet2.Next
    BizObject.Save
   Wend
     BizObject.Close
 
  'Step 8 : Logout after done 
  'ComServer.Logout
 
  MsgBox "Posting IV Done"
  else MsgBox "--DO Test-- had been transfered. Posting IV aborted" 
   End IF
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====SL_IV-Edit====
====Stock Item Balance====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! SL_IV-Edit Script   
! Get Stock Item Balance Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
'Copy below script & paste to notepad & name it as eg ItemBalance.vbs
Call CheckLogin
Call CheckLogin
Call GetData
Call GetData
Call PostData


Dim ComServer, lDataSet
Dim ComServer


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 8,461: Line 9,024:


Function GetData
Function GetData
Dim lSQL
Dim lDataSet, lSQL
   lSQL = "SELECT Dockey FROM SL_IV "
   lSQL = "SELECT A.Location, A.Batch, A.ItemCode, B.Description, Sum(A.Qty) Qty FROM ST_TR A "
   lSQL = lSQL & "WHERE DocNo='IV-00010' "
  lSQL = lSQL & "INNER JOIN ST_ITEM B ON (A.ITEMCODE=B.CODE) "  
   lSQL = lSQL & "WHERE B.IsActive='T' "
  lSQL = lSQL & "AND A.PostDate <= '31 Dec 2017' "
  lSQL = lSQL & "AND A.ItemCode= 'ANT' "
  lSQL = lSQL & "GROUP by A.Location, A.Batch, A.ItemCode, B.Description"
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "Location : " & lDataSet.FindField("Location").AsString
    MsgBox "Batch : " & lDataSet.FindField("Batch").AsString
    MsgBox "Item Code : " & lDataSet.FindField("ItemCode").AsString
MsgBox "Item Description : " & lDataSet.FindField("Description").AsString
MsgBox "Balance Qty : " & lDataSet.FindField("Qty").AsString
lDataSet.Next
  Wend
End Function
End Function
</syntaxhighlight>
|}


Function PostData
<div style="float: right;">  [[#top|[top]]]</div>
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_IV")


  'Step 3: Set Dataset
====ST_IS====
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
{| class="mw-collapsible mw-collapsed wikitable"
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
! ST_IS Script  
 
|-
  'Step 4 : Find Doc Number
|
  If lDataSet.RecordCount > 0 Then 
<syntaxhighlight lang="vb">
lDataSet.First
'Copy below script & paste to notepad & name it as eg StockIssue.vbs
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
Call CheckLogin
 
Call InsertData
 
 
    BizObject.Open
Dim ComServer
    BizObject.Edit
    lMain.Edit
lMain.FindField("Description").AsString = "Sales - Edited"
 
  'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
      lDetail.First
  lDetail.Delete
    Wend
  'Step 6: Append Detail
    lDetail.Append
    lDetail.FindField("DtlKey").value = -1
    lDetail.FindField("Account").value = "500-000"
    lDetail.FindField("Description").value = "Edited Item A"
    lDetail.FindField("Tax").value =  ""
    lDetail.FindField("TaxInclusive").value =  0
    lDetail.FindField("Amount").value = 410.37
    lDetail.FindField("TaxAmt").value = 0
    lDetail.Post
 
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
 
  'Step 8 : Logout after done 
    'ComServer.Logout 
    MsgBox "Done"
Else
MsgBox "Record Not Found"
  END IF
End Function
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


====GL_JE====
{| class="mw-collapsible mw-collapsed wikitable"
! GL_JE Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call InsertGLJE
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
Function InsertGLJE
function CheckLogin
Dim ComServer, BizObject, lDataSet, lDataSet2, lDate
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
 
Function InsertData
Dim BizObject, lMain, lDetail, lDate
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("GL_JE")  
   Set BizObject = ComServer.BizObjects.Find("ST_IS")  
 
   'Step 3: Set Dataset
   'Step 3: Set Dataset
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")   'lMainDataSet contains master data
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data   
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
    
    
   'Step 4 : Insert Data - Master
   'Step 4 : Insert Data - Master
   lDate = CDate("January 23, 2017")
   lDate = CDate("January 1, 2017")
   BizObject.New
   BizObject.New
   lMainDataSet.FindField("DocKey").value = -1
   lMain.FindField("DocKey").value         = -1
   lMainDataSet.FindField("DocNo").value = "--JV Test--"
   lMain.FindField("DocNo").AsString      = "--IS Test--"
   lMainDataSet.FindField("DocDate").value = lDate
   lMain.FindField("DocDate").value       = lDate
   lMainDataSet.FindField("PostDate").value = lDate
   lMain.FindField("PostDate").value       = lDate
   lMainDataSet.FindField("Description").value = "testing desc header"
   lMain.FindField("Description").AsString = "Stock Issue"
  lMainDataSet.Post
   
 
   'Step 5: Insert Data - Detail
   'Step 5: Insert Data - Detail
   'For Tax Inclusive
   lDetail.Append
  lDetailDataSet.Append
   lDetail.FindField("DtlKey").value         = -1
   lDetailDataSet.FindField("DtlKey").value = -1
   lDetail.FindField("DocKey").value         = -1
   lDetailDataSet.FindField("DocKey").value = -1
   lDetail.FindField("ItemCode").AsString    = "ANT"
   lDetailDataSet.FindField("SEQ").value = 1
   lDetail.FindField("Description").AsString = "Issue out Item A"
  lDetailDataSet.FindField("Code").value = "610-1000"
   lDetail.FindField("Qty").AsFloat          = 2
  lDetailDataSet.FindField("Project").value = "----"
   lDetail.Post
   lDetailDataSet.FindField("Description").value =  "testing desc1"
  lDetailDataSet.FindField("Tax").value =  "TX"
  'lDetailDataSet.FindField("LOCALTAXAMT").value = 17.32 //For JE you can't override (i.e. system auto calc)
  lDetailDataSet.FindField("TaxInclusive").Value = 1
  lDetailDataSet.FindField("LocalDR").value = 306 '//Including GST if TAXINCLUSIVE = 1
  lDetailDataSet.FindField("DR").value = 306 '//If wanted DR <> LocalDR
    
  'For Tax Exclusive
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("SEQ").value = 2
   lDetailDataSet.FindField("Code").value = "605-200"
  lDetailDataSet.FindField("Project").value = "----"
  lDetailDataSet.FindField("Description").value = "testing desc2"
  lDetailDataSet.FindField("Tax").value =  "TX"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("LocalCR").value = 100
  lDetailDataSet.Post  


   'For No GST
   lDetail.Append
  lDetailDataSet.Append
   lDetail.FindField("DtlKey").value         = -1
   lDetailDataSet.FindField("DtlKey").value = -1
   lDetail.FindField("DocKey").value         = -1
   lDetailDataSet.FindField("DocKey").value = -1
   lDetail.FindField("ItemCode").AsString    = "E-BAT"
   lDetailDataSet.FindField("SEQ").value = 3
   lDetail.FindField("Description").AsString = "Issue out Item A"
  lDetailDataSet.FindField("Code").value = "610-002"
   lDetail.FindField("Qty").AsFloat          = 4
   lDetailDataSet.FindField("Project").value = "----"
   lDetail.Post  
  lDetailDataSet.FindField("Description").value = "testing desc3"
   'Step 6: Save Document
   lDetailDataSet.FindField("Tax").value = ""
   BizObject.Save
   lDetailDataSet.FindField("TaxInclusive").value = 0
  lDetailDataSet.FindField("LocalCR").value = 200
  lDetailDataSet.Post
   'Step 6: Save Document
   BizObject.Save
   BizObject.Close
   BizObject.Close
   MsgBox "Done"
   
  ComServer.Logout 'Logout after done
   MsgBox "Done"
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
Line 8,607: Line 9,119:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL_JE-Edit====
====ST_RC====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! GL_JE-Edit Script   
! ST_RC Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg StockReceived.vbs
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call CheckLogin
Call CheckLogin
Call GetData
Call InsertData
Call PostData


Dim ComServer, lDataSet
Dim ComServer


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 8,634: Line 9,144:
End Function
End Function


Function GetData
Function InsertData
Dim lSQL
Dim BizObject, lMain, lDetail, lDate
  lSQL = "SELECT Dockey FROM GL_JE "
  lSQL = lSQL & "WHERE DocNo='JV-00002' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function
 
Function PostData
Dim BizObject, lMain, lDetail
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("GL_JE")  
   Set BizObject = ComServer.BizObjects.Find("ST_RC")  


   'Step 3: Set Dataset
   'Step 3: Set Dataset
Line 8,650: Line 9,153:
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
    
    
   'Step 4 : Find Doc Number
   'Step 4 : Insert Data - Master
   If lDataSet.RecordCount > 0 Then    
   lDate = CDate("January 1, 2017")
lDataSet.First
   BizObject.New
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  lMain.FindField("DocKey").value        = -1
    
  lMain.FindField("DocNo").AsString       = "--RC Test--"
 
   lMain.FindField("DocDate").value        = lDate
    BizObject.Open
  lMain.FindField("PostDate").value      = lDate
    BizObject.Edit
  lMain.FindField("Description").AsString = "Stock Received"
    lMain.Edit
   
lMain.FindField("Description").AsString = "Journal - Edited"  
   'Step 5: Insert Data - Detail
 
   'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
      lDetail.First
  lDetail.Delete
    Wend
  'Step 6: Append Detail
   lDetail.Append
   lDetail.Append
   lDetail.FindField("DtlKey").value = -1
   lDetail.FindField("DtlKey").value         = -1
   lDetail.FindField("Code").value = "610-000"
   lDetail.FindField("DocKey").value         = -1
   lDetail.FindField("Description").value = "testing desc1"
   lDetail.FindField("ItemCode").AsString    = "ANT"
   lDetail.FindField("Project").value = "P12W1"
   lDetail.FindField("Description").AsString = "Received Item A"
  lDetail.FindField("Tax").value = ""
   lDetail.FindField("Qty").AsFloat          = 2
   lDetail.FindField("TaxInclusive").value = 0
   lDetail.FindField("UnitCost").AsFloat    = 25.15
   lDetail.FindField("LocalDR").value = 200
   lDetail.Post
  lDetail.FindField("DR").value = 200
   lDetail.Post  


   lDetail.Append
   lDetail.Append
   lDetail.FindField("DtlKey").value = -1
   lDetail.FindField("DtlKey").value         = -1
   lDetail.FindField("Code").value = "531-000"
   lDetail.FindField("DocKey").value         = -1
   lDetail.FindField("Description").value = "testing desc2"
   lDetail.FindField("ItemCode").AsString    = "E-BAT"
   lDetail.FindField("Project").value = "P13W1"
   lDetail.FindField("Description").AsString = "Received Item A"
   lDetail.FindField("Tax").value = ""
   lDetail.FindField("Qty").AsFloat          = 4
   lDetail.FindField("TaxInclusive").value =  0
   lDetail.FindField("UnitCost").AsFloat    = 54
  lDetail.FindField("LocalCR").value = 200
   lDetail.Post
  lDetail.FindField("CR").value = 200
   'Step 6: Save Document
   lDetail.Post  
  BizObject.Save
 
  BizObject.Close
   'Step 7: Save Document
   
    BizObject.Save
   ComServer.Logout 'Logout after done
    BizObject.Close
  MsgBox "Done"
 
   'Step 8 : Logout after done
    'ComServer.Logout 
    MsgBox "Done"  
Else
MsgBox "Record Not Found"
  END IF
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL_JE-Delete====
====ST_AJ====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! GL_JE-Delete Script   
! ST_AJ Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg StockAdjustment.vbs
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call CheckLogin
Call CheckLogin
Call GetData
Call InsertData
Call DelData


Dim ComServer, lDataSet
Dim ComServer


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 8,731: Line 9,217:
End Function
End Function


Function GetData
Function InsertData
Dim lSQL
Dim BizObject, lMain, lDetail, lDate
   lSQL = "SELECT Dockey FROM GL_JE "
   'Step 2: Find and Create the Biz Objects
  lSQL = lSQL & "WHERE DocNo='JV-00002' "
   Set BizObject = ComServer.BizObjects.Find("ST_AJ")  
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function


Function DelData
   'Step 3: Set Dataset
Dim BizObject
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   'Step 2: Find and Create the Biz Objects
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
   Set BizObject = ComServer.BizObjects.Find("GL_JE")  
  'Step 3 : Find Doc Number
   If lDataSet.RecordCount > 0 Then
lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
    BizObject.Open
    BizObject.Delete
    BizObject.Close
    
    
   'Step 4 : Logout after done 
   'Step 4 : Insert Data - Master
     'ComServer.Logout 
  lDate = CDate("January 1, 2017")
     MsgBox "Done"  
  BizObject.New
Else
  lMain.FindField("DocKey").value        = -1
MsgBox "Record Not Found"  
  lMain.FindField("DocNo").AsString      = "--AJ Test--"
   END IF
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value      = lDate
  lMain.FindField("Description").AsString = "Stock Adjustment"
      
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value        = -1
  lDetail.FindField("DocKey").value        = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Adjust IN Item A"
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UnitCost").AsFloat     = 25.15 'Only IN need UnitCost
  lDetail.Post
 
  lDetail.Append
  lDetail.FindField("DtlKey").value        = -1
  lDetail.FindField("DocKey").value        = -1
  lDetail.FindField("ItemCode").AsString    = "E-BAT"
  lDetail.FindField("Description").AsString = "Adjust OUT Item A"
  lDetail.FindField("Qty").AsFloat          = -4
  lDetail.Post 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
   
  ComServer.Logout 'Logout after done
   MsgBox "Done" 
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Invoice Next Number====
====ST_XF====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Invoice Next Number Script   
! ST_XF Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg ST_XF.vbs
'Copy below script & paste to notepad & name it as eg GetNextNo.vbs
Call CheckLogin
Call CheckLogin
Call GetData
Call InsertData
Call ShowNextNo


Dim ComServer, lDataSet
Dim ComServer


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 8,788: Line 9,289:
End Function
End Function


Function GetData
Function InsertData
Dim lSQL
Dim BizObject, lMain, lDetail, lDate
   lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A "
  'Step 2: Find and Create the Biz Objects
   lSQL = lSQL & "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) "
  Set BizObject = ComServer.BizObjects.Find("ST_XF")
   lSQL = lSQL & "WHERE A.DOCTYPE='IV' "
 
   lSQL = lSQL & "AND A.DESCRIPTION='Customer Invoice' "
  'Step 3: Set Dataset
   lSQL = lSQL & "AND A.STATESET=1 "
   Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value        = -1
   lMain.FindField("DocNo").AsString      = "--XF Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value      = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account - Optional
   lMain.FindField("CompanyName").AsString = "Cash Sales" 'Optional
  lMain.FindField("Description").AsString = "Stock Transfer"
   
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
   lDetail.FindField("Description").AsString  = "Transfer Item A"
  lDetail.FindField("Qty").AsFloat          = 10
  lDetail.FindField("UOM").AsString          = "UNIT"
  lDetail.FindField("FromLocation").AsString = "----"
  lDetail.FindField("ToLocation").AsString  = "BALAKONG"
  lDetail.Post
 
  lDetail.Append
   lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString    = "HFK"
  lDetail.FindField("Description").AsString  = "Transfer Item B"
  lDetail.FindField("Qty").AsFloat          = 5
   lDetail.FindField("UOM").AsString          = "UNIT"
  lDetail.FindField("FromLocation").AsString = "----"
  lDetail.FindField("ToLocation").AsString  = "BALAKONG"
  lDetail.Post
 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
 
  'Step 7 : Logout after done 
  'ComServer.Logout
 
  MsgBox "Done" 
End Function
End Function
</syntaxhighlight>
|}


Function ShowNextNo
<div style="float: right;">  [[#top|[top]]]</div>
Dim Desc, Fmt, NextNo, lResult, sb
 
  set sb = CreateObject("System.Text.StringBuilder")
====AP_PI-Edit====
  'Step 2 : Find Doc Number
{| class="mw-collapsible mw-collapsed wikitable"
  If lDataSet.RecordCount > 0 Then 
! AP_PI Edit Script   
lDataSet.First
    Desc = lDataSet.FindField("Description").AsString
Fmt  = lDataSet.FindField("Format").AsString
NextNo = lDataSet.FindField("NEXTNUMBER").Value
'Convert from IV-%.5d to IV-{0:d5}
sb.Append_3 Fmt
sb.Replace "d", ""
sb.Replace "%.","{0:d"
Fmt = sb.ToString & "}"
sb.Length = 0 'clear sb list
sb.AppendFormat Fmt, NextNo
lResult = sb.ToString
    MsgBox Desc
MsgBox Fmt
MsgBox NextNo
MsgBox lResult
Else
MsgBox "Record Not Found"
  END IF   
End Function
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
 
====Auto Run Doc. Number====
{| class="mw-collapsible mw-collapsed wikitable"
! Sales Order Auto Run Doc Number Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg SL_SO.vbs
'Available in Version 5.2018.833.759 & above
'If had prompt Set Default - Just click Yes to avoid keep prompt
'Copy below script & paste to notepad & name it as eg AP_PI.vbs
Call CheckLogin
Call CheckLogin
Call GetData
Call GetData
Call InsertData
Call PostData


Dim ComServer, lDataSet
Dim ComServer, lDataSet
Line 8,859: Line 9,376:
Function GetData
Function GetData
Dim lSQL
Dim lSQL
   lSQL = "SELECT * FROM SY_DOCNO "
   lSQL = "SELECT Dockey FROM AP_PI "
   lSQL = lSQL & "WHERE DESCRIPTION='Customer Sales Order 2' "
   lSQL = lSQL & "WHERE DocNo='PI-00001' "
  lSQL = lSQL & "AND Code='400-D0001' "
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function
End Function


 
Function PostData
Function InsertData
Dim BizObject, lMain, lDetail
Dim BizObject, lMain, lDetail, lDate
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("SL_SO")  
   Set BizObject = ComServer.BizObjects.Find("AP_PI")  


   'Step 3: Set Dataset
   'Step 3: Set Dataset
Line 8,874: Line 9,391:
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
    
    
  'Begin Looping yr data
   'Step 4 : Find Doc Number
   'Step 4 : Insert Data - Master
   If lDataSet.RecordCount > 0 Then 
   lDate = CDate("January 1, 2019")
lDataSet.First
  BizObject.New
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  lMain.FindField("DocKey").value        = -1
    
  lMain.FindField("DocNo").AsString       = "<<New>>"
    
   lMain.FindField("DocDate").value        = lDate
    BizObject.Open
   lMain.FindField("PostDate").value      = lDate
    BizObject.Edit
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
    lMain.Edit
  lMain.FindField("CompanyName").AsString = "Cash Sales"
lMain.FindField("Description").AsString = "testing"  
  lMain.FindField("Address1").AsString    = "" 'Optional
    
  lMain.FindField("Address2").AsString   = "" 'Optional
   'Step 5: Delete all Detail
   lMain.FindField("Address3").AsString    = "" 'Optional
    While lDetail.RecordCount <> 0
   lMain.FindField("Address4").AsString    = "" 'Optional
      lDetail.First
  lMain.FindField("Phone1").AsString      = "" 'Optional
  lDetail.Delete
  lMain.FindField("Description").AsString = "Sales Order"
     Wend
  lMain.FindField("DocNoSetKey").value    = lDataSet.FindField("DocKey").value
   'Step 6: Append Detail
      
    lDetail.Append
   'Step 5: Insert Data - Detail
    lDetail.FindField("DtlKey").value = -1
  'For With Item Code
    lDetail.FindField("Account").value = "610-2000"
  lDetail.Append
    lDetail.FindField("Description").value = "Purchase Item A"
  lDetail.FindField("DtlKey").value         = -1
    lDetail.FindField("Tax").value = ""
  lDetail.FindField("DocKey").value         = -1
     lDetail.FindField("TaxInclusive").value = 0
  lDetail.FindField("Seq").value            = 3
    lDetail.FindField("Amount").value = 410.37
  lDetail.FindField("ItemCode").AsString    = "ANT"
    lDetail.FindField("TaxAmt").value = 0
  lDetail.FindField("Description").AsString = "Sales Item B"
    lDetail.Post
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UOM").AsString        = "UNIT"
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString        = ""
  lDetail.FindField("TaxRate").AsString     = ""
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100 
  lDetail.FindField("Amount").AsFloat      = 200
  lDetail.FindField("TaxAmt").AsFloat      = 0
  lDetail.Post
 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
    
    
   'Step 7 : Logout after done 
   'Step 7: Save Document
  'ComServer.Logout
    BizObject.Save
    BizObject.Close
    
    
   MsgBox "Done"
   'Step 8 : Logout after done 
    'ComServer.Logout 
    MsgBox "Done"  
Else
MsgBox "Record Not Found"
  END IF
 
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL_PV====
====SL_DO to SL_IV====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Cash Book PV Script   
! SL_DO to SL_IV Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg AR_PM.vbs
'Updated 26 Oct 2018
Call PostData
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call CheckLogin
Function CreateSQLAccServer
Call InsertData1
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
Call InsertData2
End Function
Function PostData
Dim ComServer, BizObject, lIVNo, lDate
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
  END IF
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_PV")
  'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data 
 
  'Step 4 : Posting
    lDate = CDate("January 23, 2020")
    BizObject.New
    lMain.FindField("DOCKEY").Value          = -1
    lMain.FindField("DocNo").AsString        = "--CB PV Test--"
    lMain.FindField("DocDate").Value          = lDate
    lMain.FindField("PostDate").Value        = lDate
    lMain.FindField("Description").AsString  = "Compacc System"
    lMain.FindField("PaymentMethod").AsString = "310-001"
lMain.FindField("CHEQUENUMBER").AsString = "MBB 213245"
    lMain.FindField("DocAmt").AsFloat        = 2019.57
    lMain.FindField("Cancelled").AsString    = "F"
lMain.Post
 
    lDetailDataSet.Append
    lDetailDataSet.FindField("DTLKEY").value = -1
lDetailDataSet.FindField("DOCKEY").value = -1
lDetailDataSet.FindField("Code").AsString = "200-300"
    lDetailDataSet.FindField("DESCRIPTION").AsString = "Maybank - Asus A555LD-xx313H"
lDetailDataSet.FindField("TAX").AsString = ""
lDetailDataSet.FindField("TAXAMT").AsFloat = 0
lDetailDataSet.FindField("TAXINCLUSIVE").AsFloat = 0
lDetailDataSet.FindField("AMOUNT").AsFloat = 2019.57
    lDetailDataSet.Post
 
  'Step 5: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
End Function
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
====ST_Item with Opening====
{| class="mw-collapsible mw-collapsed wikitable"
! ST_Item with Opening Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg ST_XF.vbs
Call CheckLogin
Call InsertData


Dim ComServer
Dim ComServer
Line 9,011: Line 9,462:
End Function
End Function


Function InsertData
Function InsertData1
Dim BizObject, lMain, lDtl, lOpn
Dim BizObject, lMain, lDetail, lDate
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("ST_ITEM")  
   Set BizObject = ComServer.BizObjects.Find("SL_DO")  


   'Step 3: Set Dataset
   'Step 3: Set Dataset
   Set lMain = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   Set lDtl = BizObject.DataSets.Find("cdsUOM") 'lDetail contains detail data 
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
  Set lOpn = BizObject.DataSets.Find("cdsOpeningBalance") 'lDetail contains detail data   
    
    
   'Begin Looping yr data
   'Begin Looping yr data
   'Step 4 : Insert Data - Master
   'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
   BizObject.New
   BizObject.New
   lMain.FindField("CODE").value = "==Test New Item Code=="
   lMain.FindField("DocKey").value         = -1
   lMain.FindField("DESCRIPTION").value = "Item Description 123"
  lMain.FindField("DocNo").AsString      = "--DO Test--"
   lMain.FindField("STOCKGROUP").value = "DEFAULT"
  lMain.FindField("DocDate").value        = lDate
   lMain.FindField("STOCKCONTROL").value = "T"
  lMain.FindField("PostDate").value      = lDate
   lMain.FindField("ISACTIVE").value = "T"
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
   
  lMain.FindField("CompanyName").AsString = "Cash Sales"
   'lMain.FindField("Address1").AsString    = "" 'Optional
  'lMain.FindField("Address2").AsString    = "" 'Optional
  'lMain.FindField("Address3").AsString    = "" 'Optional
   'lMain.FindField("Address4").AsString    = "" 'Optional
   'lMain.FindField("Phone1").AsString      = "" 'Optional
   lMain.FindField("Description").AsString = "Delivery Order"
   
   'Step 5: Insert Data - Detail
   'Step 5: Insert Data - Detail
   lDtl.Edit 'For 1St UOM
   lDetail.Append
   lDtl.FindField("UOM").AsString = "PCS"
  lDetail.FindField("DtlKey").value        = -1
   lDtl.FindField("Rate").AsFloat = 1
  lDetail.FindField("DocKey").value        = -1
   lDtl.FindField("RefCost").AsFloat = 10.2
  lDetail.FindField("Seq").value            = 1
   lDtl.FindField("RefPrice").AsFloat = 25
  lDetail.FindField("ItemCode").AsString    = "ANT"
   lDtl.Post
  lDetail.FindField("Description").AsString = "Sales Item A"
   lDetail.FindField("UOM").AsString         = "BOX"
   lDetail.FindField("Qty").AsFloat         = 2
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString        = "SR"
  lDetail.FindField("TaxRate").AsString    = "6%"
  lDetail.FindField("TaxInclusive").value  = 0
   lDetail.FindField("UnitPrice").AsFloat   = 100 
  lDetail.FindField("Amount").AsFloat      = 200
   lDetail.FindField("TaxAmt").AsFloat       = 12
   lDetail.Post


   lDtl.Append 'For 2nd UOM
   lDetail.Append
   lDtl.FindField("UOM").AsString = "CTN"
   lDetail.FindField("DtlKey").value        = -1
   lDtl.FindField("Rate").AsFloat = 12
  lDetail.FindField("DocKey").value        = -1
   lDtl.FindField("RefCost").AsFloat = 102
   lDetail.FindField("Seq").value            = 2
   lDtl.FindField("RefPrice").AsFloat = 240
   lDetail.FindField("ItemCode").AsString    = "COVER"
   lDtl.Post
   lDetail.FindField("Description").AsString = "Sales Item B"
    
   lDetail.FindField("UOM").AsString        = "UNIT"
   'Step 6: Insert Data - Opening
   lDetail.FindField("Qty").AsFloat          = 3
   lOpn.Append
   lDetail.FindField("Tax").AsString        = "SR"
   lOpn.FindField("LOCATION").AsString = "----"
   lDetail.FindField("TaxRate").AsString    = "6%"
   lOpn.FindField("Qty").AsFloat = 10 'in smallest UOM'
   lDetail.FindField("TaxInclusive").value  = 0
   lOpn.FindField("COST").AsFloat = 10.2
  lDetail.FindField("UnitPrice").AsFloat    = 10 
   lOpn.Post
   lDetail.FindField("Amount").AsFloat       = 30
 
   lDetail.FindField("TaxAmt").AsFloat       = 1.80
   'Step 7: Save Document
   lDetail.Post
   'Step 6: Save Document
   BizObject.Save
   BizObject.Save
   BizObject.Close
   BizObject.Close
 
   MsgBox "DO Posting Done"   
  'Step 8 : Logout after done 
  'ComServer.Logout
 
   MsgBox "Done"   
End Function
End Function
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


====GL Stock Value-Insert,Edit & Delete====
Function InsertData2
{| class="mw-collapsible mw-collapsed wikitable"
Dim BizObject, lMain, lDetail, lDate, lDODtl, lxFer, lSQL, v(2)
! GL Stock Value Insert, Edit & Delete Script 
  'Step 1: Check Is transtered or not
|-
  lSQL = "SELECT DocKey FROM SL_IVDTL "
|
  lSQL = lSQL & "WHERE FromDockey=(SELECT DocKey FROM SL_DO "
<syntaxhighlight lang="vb">
  lSQL = lSQL & "WHERE DocNo='--DO Test--') "
'Available in Version 5.2018.833.759 & above
  Set lxFer = ComServer.DBManager.NewDataSet(lSQL)
'Copy below script & paste to notepad & name it as eg GLStockValue.vbs
Call CheckLogin
Call GetData
'Call InsertValue
'Call UpdateValue
Call DeleteValue


Dim ComServer, lDataSet
  if lxFer.RecordCount = 0 then
    'Step 2: Get DO Information
    lSQL = "SELECT * FROM SL_DODTL "
    lSQL = lSQL & "WHERE Dockey=(SELECT DocKey FROM SL_DO "
    lSQL = lSQL & "WHERE DocNo='--DO Test--') "
    Set lDODtl = ComServer.DBManager.NewDataSet(lSQL)   
'Step 3: Find and Create the Biz Objects
    Set BizObject = ComServer.BizObjects.Find("SL_IV")


Function CreateSQLAccServer
    'Step 4: Set Dataset
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
    Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
End Function
    Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
 
function CheckLogin
    'Step 5 : Insert Data - Master
  'Step 1: Create Com Server object
    lDate = CDate("January 1, 2017")
  Set ComServer = CreateSQLAccServer 'Create Com Server
    BizObject.New
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     lMain.FindField("DocKey").value        = -1
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
    lMain.FindField("DocNo").AsString      = "--IV Test--"
                'UserName, Password, DCF full path, Database filename
    lMain.FindField("DocDate").value        = lDate
  END IF
    lMain.FindField("PostDate").value      = lDate
End Function
    lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
 
    lMain.FindField("CompanyName").AsString = "Cash Sales"
Function GetData
    'lMain.FindField("Address1").AsString    = "" 'Optional
Dim lSQL
    'lMain.FindField("Address2").AsString    = "" 'Optional
  lSQL = "SELECT Dockey FROM GL_STOCK "
    'lMain.FindField("Address3").AsString    = "" 'Optional
  lSQL = lSQL & "WHERE BalanceStock='330-000' "
    'lMain.FindField("Address4").AsString    = "" 'Optional
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
     'lMain.FindField("Phone1").AsString      = "" 'Optional
End Function
    lMain.FindField("Description").AsString = "Sales"
 
   
Function InsertValue
    'Step 6: Insert Data - Detail
Dim BizObject, lMain, lDetail
    v(0) = "COVER"
  'Step 2: Find and Create the Biz Objects
    v(1) = "UNIT"
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK")  
 
  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
  'Step 4 : Find Dockey Record
  If lDataSet.RecordCount > 0 Then 
lDataSet.First
     BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
     BizObject.Open
     if (lDODtl.Locate("ItemCode;UOM", v, false, false)) then
     BizObject.Edit
      lDetail.Append
      lDetail.FindField("DtlKey").value        = -1
      lDetail.FindField("DocKey").value        = -1
      lDetail.FindField("Seq").value            = 1
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
      'lDetail.FindField("Account").AsString    = "500-000" 'If you wanted override the Sales Account Code
      lDetail.FindField("UOM").AsString        = lDODtl.FindField("UOM").AsString
  lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("Tax").AsString        = lDODtl.FindField("Tax").AsString
      lDetail.FindField("TaxRate").AsString     = lDODtl.FindField("TaxRate").AsString
      lDetail.FindField("TaxInclusive").value  = lDODtl.FindField("TaxInclusive").Value
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitPrice").AsFloat
      lDetail.FindField("Amount").AsFloat      = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("TaxAmt").AsFloat      = lDODtl.FindField("TaxAmt").AsFloat
  lDetail.FindField("FromDocType").AsString = "DO"
  lDetail.FindField("FromDockey").AsFloat  = lDODtl.FindField("DocKey").AsFloat
  lDetail.FindField("FromDtlkey").AsFloat  = lDODtl.FindField("DtlKey").AsFloat
      lDetail.Post
End IF 
    v(0) = "ANT"
    v(1) = "BOX"
     lDetail.Append
     if (lDODtl.Locate("ItemCode;UOM", v, false, false)) then
    lDetail.FindField("Project").value = "----"
      lDetail.Append
lDetail.FindField("SYear").value = 2021
      lDetail.FindField("DtlKey").value         = -1
lDetail.FindField("SMonth").value = 4
      lDetail.FindField("DocKey").value        = -1
lDetail.FindField("Amount").value = 423.00
      lDetail.FindField("Seq").value            = 2
    lDetail.Post
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
   'Step 6: Save Document
      'lDetail.FindField("Account").AsString    = "500-000" 'If you wanted override the Sales Account Code
      lDetail.FindField("UOM").AsString        = lDODtl.FindField("UOM").AsString
  lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("Tax").AsString        = lDODtl.FindField("Tax").AsString
      lDetail.FindField("TaxRate").AsString    = lDODtl.FindField("TaxRate").AsString
      lDetail.FindField("TaxInclusive").value   = lDODtl.FindField("TaxInclusive").Value
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitPrice").AsFloat
      lDetail.FindField("Amount").AsFloat      = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("TaxAmt").AsFloat      = lDODtl.FindField("TaxAmt").AsFloat
  lDetail.FindField("FromDocType").AsString = "DO"
  lDetail.FindField("FromDockey").AsFloat  = lDODtl.FindField("DocKey").AsFloat
  lDetail.FindField("FromDtlkey").AsFloat  = lDODtl.FindField("DtlKey").AsFloat
      lDetail.Post
End IF 
   'Step 7: Save Document
     BizObject.Save
     BizObject.Save
     BizObject.Close
     BizObject.Close
    MsgBox "Done"
 
   END IF
  'Step 8 : Logout after done 
  'ComServer.Logout
 
  MsgBox "Posting IV Done"
   else MsgBox "--DO Test-- had been transfered. Posting IV aborted" 
  End IF
End Function
End Function
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


Function UpdateValue
====SL_IV-Edit====
Dim BizObject, lMain, lDetail, v(2)
{| class="mw-collapsible mw-collapsed wikitable"
  'Step 2: Find and Create the Biz Objects
! SL_IV-Edit Script 
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK")
|-
|
<syntaxhighlight lang="vb">
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call CheckLogin
Call GetData
Call PostData


  'Step 3: Set Dataset
Dim ComServer, lDataSet
  Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
  'Step 4 : Find Dockey Record
  If lDataSet.RecordCount > 0 Then 
lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString 
    BizObject.Open
    BizObject.Edit


    v(0) = "----" 'Project Code
Function CreateSQLAccServer
    v(1) = "2021" 'Year
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
v(2) = "3" 'Month to update
End Function
 
if (lDetail.Locate("Project;SYear;SMonth", v, false, false)) then
function CheckLogin
      lDetail.Edit
  'Step 1: Create Com Server object
      lDetail.FindField("Amount").value = 333.12     
  Set ComServer = CreateSQLAccServer 'Create Com Server
      lDetail.Post
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
End IF
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
  'Step 6: Save Document
                'UserName, Password, DCF full path, Database filename
    BizObject.Save
  END IF
    BizObject.Close
End Function
    MsgBox "Done"
 
   END IF
Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM SL_IV "
  lSQL = lSQL & "WHERE DocNo='IV-00010' "
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function
End Function


Function DeleteValue
Function PostData
Dim BizObject, lMain, lDetail, v(2)
Dim BizObject, lMain, lDetail
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("GL_STOCK")  
   Set BizObject = ComServer.BizObjects.Find("SL_IV")  


   'Step 3: Set Dataset
   'Step 3: Set Dataset
Line 9,174: Line 9,674:
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
    
    
   'Step 4 : Find Dockey Record
   'Step 4 : Find Doc Number
   If lDataSet.RecordCount > 0 Then   
   If lDataSet.RecordCount > 0 Then   
lDataSet.First
lDataSet.First
     BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
     BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
 
 
     BizObject.Open
     BizObject.Open
     BizObject.Edit
     BizObject.Edit
 
    lMain.Edit
    v(0) = "----" 'Project Code
lMain.FindField("Description").AsString = "Sales - Edited"  
     v(1) = "2021" 'Year
 
v(2) = "4" 'Month to update
  'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
if (lDetail.Locate("Project;SYear;SMonth", v, false, false)) then
      lDetail.First
      lDetail.Delete
  lDetail.Delete
End IF
    Wend
   'Step 6: Save Document
  'Step 6: Append Detail
     BizObject.Save
     lDetail.Append
     BizObject.Close
    lDetail.FindField("DtlKey").value = -1
     MsgBox "Done"
    lDetail.FindField("Account").value = "500-000"
   END IF
    lDetail.FindField("Description").value = "Edited Item A"
End Function
    lDetail.FindField("Tax").value =  ""
    lDetail.FindField("TaxInclusive").value =  0
    lDetail.FindField("Amount").value = 410.37
    lDetail.FindField("TaxAmt").value = 0
    lDetail.Post
 
   'Step 7: Save Document
     BizObject.Save
     BizObject.Close
 
  'Step 8 : Logout after done 
    'ComServer.Logout 
     MsgBox "Done"
Else
MsgBox "Record Not Found"  
   END IF  
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Stock Item Template to SL_IV====
====GL_JE====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Stock Item Template to SL_IV Script   
! GL_JE Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Updated 03 Sep 2021
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call InsertGLJE
Call CheckLogin
Call InsertData1
Call InsertData2
 
Dim ComServer
 
Function CreateSQLAccServer
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
End Function
 
function CheckLogin
Function InsertGLJE
Dim ComServer, BizObject, lDataSet, lDataSet2, lDate
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function
 
Function InsertData1
Dim BizObject, lMain, lDetail, lDate
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("ST_ITEM_TPL")  
   Set BizObject = ComServer.BizObjects.Find("GL_JE")  
 
   'Step 3: Set Dataset
   'Step 3: Set Dataset
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")   'lMainDataSet contains master data
   Set lDetail = BizObject.DataSets.Find("cdsItemTplDtl") 'lDetail contains detail data   
   Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data   
    
    
  'Begin Looping yr data
   'Step 4 : Insert Data - Master
   'Step 4 : Insert Data - Master
  lDate = CDate("January 23, 2017")
   BizObject.New
   BizObject.New
   lMain.FindField("Code").AsString        = "--TPL Test--"
   lMainDataSet.FindField("DocKey").value = -1
   lMain.FindField("Description").AsString = "Template formt 1"
  lMainDataSet.FindField("DocNo").value = "--JV Test--"
   lMain.FindField("RefPrice").AsFloat    = 299.15
   lMainDataSet.FindField("DocDate").value = lDate
   
  lMainDataSet.FindField("PostDate").value = lDate
   lMainDataSet.FindField("Description").value = "testing desc header"
  lMainDataSet.Post
 
   'Step 5: Insert Data - Detail
   'Step 5: Insert Data - Detail
   lDetail.Append
   'For Tax Inclusive
   lDetail.FindField("DtlKey").value         = -1
  lDetailDataSet.Append
   lDetail.FindField("Code").AsString        = "--TPL Test--"
   lDetailDataSet.FindField("DtlKey").value = -1
   lDetail.FindField("Seq").value           = 1
   lDetailDataSet.FindField("DocKey").value = -1
   lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetailDataSet.FindField("SEQ").value = 1
   lDetail.FindField("Description").AsString = "Sales Item A"
  lDetailDataSet.FindField("Code").value = "610-1000"
   lDetail.FindField("UOM").AsString        = "BOX"
  lDetailDataSet.FindField("Project").value = "----"
   lDetail.FindField("Qty").AsFloat          = 2
   lDetailDataSet.FindField("Description").value = "testing desc1"
   'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
   lDetailDataSet.FindField("Tax").value = "TX"
   lDetail.FindField("UNITAMOUNT").AsFloat    = 100 
   'lDetailDataSet.FindField("LOCALTAXAMT").value = 17.32 //For JE you can't override (i.e. system auto calc)
   lDetail.FindField("Amount").AsFloat      = 200
  lDetailDataSet.FindField("TaxInclusive").Value = 1
   lDetail.FindField("PRINTABLE").AsString   = "T"
  lDetailDataSet.FindField("LocalDR").value = 306 '//Including GST if TAXINCLUSIVE = 1
   lDetail.Post
  lDetailDataSet.FindField("DR").value = 306 '//If wanted DR <> LocalDR
 
  'For Tax Exclusive
   lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
   lDetailDataSet.FindField("SEQ").value = 2
   lDetailDataSet.FindField("Code").value = "605-200"
  lDetailDataSet.FindField("Project").value = "----"
   lDetailDataSet.FindField("Description").value = "testing desc2"
   lDetailDataSet.FindField("Tax").value = "TX"
   lDetailDataSet.FindField("TaxInclusive").value =  0
   lDetailDataSet.FindField("LocalCR").value = 100
   lDetailDataSet.Post  


   lDetail.Append
   'For No GST
   lDetail.FindField("DtlKey").value         = -1
  lDetailDataSet.Append
   lDetail.FindField("Code").AsString        = "--TPL Test--"
   lDetailDataSet.FindField("DtlKey").value = -1
   lDetail.FindField("Seq").value           = 2
   lDetailDataSet.FindField("DocKey").value = -1
   lDetail.FindField("ItemCode").AsString    = "COVER"
   lDetailDataSet.FindField("SEQ").value = 3
   lDetail.FindField("Description").AsString = "Sales Item B"
   lDetailDataSet.FindField("Code").value = "610-002"
   lDetail.FindField("UOM").AsString        = "UNIT"
   lDetailDataSet.FindField("Project").value = "----"
   lDetail.FindField("Qty").AsFloat          = 3
   lDetailDataSet.FindField("Description").value = "testing desc3"
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
   lDetailDataSet.FindField("Tax").value = ""
   lDetail.FindField("UNITAMOUNT").AsFloat    = 10  
   lDetailDataSet.FindField("TaxInclusive").value 0
   lDetail.FindField("Amount").AsFloat      = 30
   lDetailDataSet.FindField("LocalCR").value = 200
   lDetail.FindField("PRINTABLE").AsString  = "T"
   lDetailDataSet.Post  
  lDetail.Post
   'Step 6: Save Document
   'Step 6: Save Document
   BizObject.Save
   BizObject.Save
   BizObject.Close
   BizObject.Close
   MsgBox "Template Posting Done"
   MsgBox "Done"
End Function
 
Function InsertData2
Dim BizObject, lMain, lDetail, lDate, lDODtl, lSQL, v(2)
  'Step 1: Get Template Information
  lSQL = "SELECT * FROM ST_ITEM_TPLDTL "
  lSQL = lSQL & "WHERE Code='--TPL Test--' "
  Set lDODtl = ComServer.DBManager.NewDataSet(lSQL)
 
  if lDODtl.RecordCount > 0 then
'Step 2: Find and Create the Biz Objects
    Set BizObject = ComServer.BizObjects.Find("SL_IV")
 
    'Step 3: Set Dataset
    Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
    Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
    'Step 4 : Insert Data - Master
    lDate = CDate("January 1, 2021")
    BizObject.New
    lMain.FindField("DocKey").value        = -1
    lMain.FindField("DocNo").AsString      = "--IV Test--"
    lMain.FindField("DocDate").value        = lDate
    lMain.FindField("PostDate").value      = lDate
    lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
    lMain.FindField("CompanyName").AsString = "Cash Sales"
    'lMain.FindField("Address1").AsString    = "" 'Optional
    'lMain.FindField("Address2").AsString    = "" 'Optional
    'lMain.FindField("Address3").AsString    = "" 'Optional
    'lMain.FindField("Address4").AsString    = "" 'Optional
    'lMain.FindField("Phone1").AsString      = "" 'Optional
    lMain.FindField("Description").AsString = "Sales"
   
    'Step 6: Insert Data - Detail
lDODtl.First
    While not lDODtl.Eof
      lDetail.Append
      lDetail.FindField("DtlKey").value        = -1
      lDetail.FindField("DocKey").value        = -1
      lDetail.FindField("Seq").value            = 1
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
      lDetail.FindField("UOM").AsString        = lDODtl.FindField("UOM").AsString
      lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitAmount").AsFloat
      lDetail.FindField("Amount").AsFloat      = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("PRINTABLE").AsString  = lDODtl.FindField("PRINTABLE").AsString
      lDetail.Post
  lDODtl.Next
Wend
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
 
  'Step 8 : Logout after done 
  'ComServer.Logout
 
  MsgBox "Posting IV Done"
  else MsgBox "--No Template found. Posting IV aborted" 
  End IF
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
====AR_CN====
 
====GL_JE-Edit====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_CN Script   
! GL_JE-Edit Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'Updated 24 Feb 2023
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg AR_CN.vbs
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call InsertData
Call CheckLogin
Call GetData
Call PostData
 
Dim ComServer, lDataSet


Function CreateSQLAccServer
Function CreateSQLAccServer
Line 9,353: Line 9,823:
End Function
End Function


Function InsertData
function CheckLogin
Dim ComServer, BizObject, lDate, lIVNO, v(1)
 
   'Step 1: Create Com Server object
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
   Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
   END IF
End Function


Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM GL_JE "
  lSQL = lSQL & "WHERE DocNo='JV-00002' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function
Function PostData
Dim BizObject, lMain, lDetail
   'Step 2: Find and Create the Biz Objects
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("AR_CN")  
   Set BizObject = ComServer.BizObjects.Find("GL_JE")  


   'Step 3: Set Dataset
   'Step 3: Set Dataset
   Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")   'lMainDataSet contains master data
   Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data 
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data   
  Set lKO = BizObject.DataSets.Find("cdsKnockOff") 'Contains IV/DN to knock off data   
    
    
   'Step 4 : Insert Data - Master
   'Step 4 : Find Doc Number
   lDate = CDate("January 1, 2023")
   If lDataSet.RecordCount > 0 Then    
  BizObject.New
lDataSet.First
  lMainDataSet.FindField("DocKey").value = -1
     BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
   lMainDataSet.FindField("DocNo").value = "--CN Test--"
  lMainDataSet.FindField("DocDate").value = lDate
  lMainDataSet.FindField("PostDate").value = lDate
  lMainDataSet.FindField("Code").value = "300-A0001"
  lMainDataSet.FindField("Description").value = "Credit Note"
      
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "510-2000"
  lDetailDataSet.FindField("Description").value =  "Sales Item A"
  lDetailDataSet.FindField("Tax").value =  "SV"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
    
    
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value =  1
  lDetailDataSet.EnableControls
    
    
  lDetailDataSet.FindField("Changed").value = "F"
    BizObject.Open
  lDetailDataSet.Post
    BizObject.Edit
    lMain.Edit
lMain.FindField("Description").AsString = "Journal - Edited"  
    
    
   'For Tax Inclusive = False with override Tax Amount
   'Step 5: Delete all Detail
   lDetailDataSet.Append
    While lDetail.RecordCount <> 0
   lDetailDataSet.FindField("DtlKey").value = -1
      lDetail.First
   lDetailDataSet.FindField("DocKey").value = -1
  lDetail.Delete
   lDetailDataSet.FindField("Account").value = "510-2000"
    Wend
   lDetailDataSet.FindField("Description").value = "Sales Item B"
  'Step 6: Append Detail
   lDetailDataSet.FindField("Tax").value =  "SV"
   lDetail.Append
   lDetailDataSet.FindField("TaxInclusive").value =  0
   lDetail.FindField("DtlKey").value = -1
   lDetailDataSet.FindField("Amount").value = 94.43
   lDetail.FindField("Code").value = "610-000"
  lDetailDataSet.FindField("TaxAmt").value = 5.66
   lDetail.FindField("Description").value = "testing desc1"
   lDetailDataSet.FindField("Changed").value = "F"
   lDetail.FindField("Project").value = "P12W1"
   lDetailDataSet.Post
   lDetail.FindField("Tax").value =  ""
 
   lDetail.FindField("TaxInclusive").value =  0
  'Step 7: Knock Off IV
   lDetail.FindField("LocalDR").value = 200
    lIVNO = "--IV Test--"
   lDetail.FindField("DR").value = 200
    v(0) = "IV"
   lDetail.Post  
    v(1) = lIVNO
    if (lKO.Locate("DocType;DocNo", v, false, false)) then
      lKO.Edit
      lKO.FindField("KOAmt").value = 65.57
      lKO.FindField("KnockOff").AsString = "T"
      lKO.Post
End IF 


  lDetail.Append
  lDetail.FindField("DtlKey").value = -1
  lDetail.FindField("Code").value = "531-000"
  lDetail.FindField("Description").value =  "testing desc2"
  lDetail.FindField("Project").value = "P13W1"
  lDetail.FindField("Tax").value =  ""
  lDetail.FindField("TaxInclusive").value =  0
  lDetail.FindField("LocalCR").value = 200
  lDetail.FindField("CR").value = 200
  lDetail.Post
 
   'Step 7: Save Document
   'Step 7: Save Document
  BizObject.Save
    BizObject.Save
  BizObject.Close
    BizObject.Close
   MsgBox "Done"
    
  'Step 8 : Logout after done 
    'ComServer.Logout 
    MsgBox "Done"  
Else
MsgBox "Record Not Found"
  END IF
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
<br />


===JScript/JavaScript===
====GL_JE-Delete====
This Script only can run using Internet Explorer (till IE 11)
 
====AR_IV====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_IV Script   
! GL_JE-Delete Script   
|-
|-
|  
|  
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="vb">
<html>
'Available in Version 5.2018.833.759 & above
<head>
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
<title>Add Customer Invoice</title>
Call CheckLogin
<script language="JScript">
Call GetData
var ComServer;
Call DelData
 
function CreateSQLAccServer() {
Dim ComServer, lDataSet
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
  }
}
function AutoInvoice() {
  var BizObject, lMainDataSet, lDetailDataSet;
  CreateSQLAccServer();
  BizObject = ComServer.BizObjects.Find('AR_IV');
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
  lDetailDataSet = BizObject.DataSets.Find('cdsDocDetail');
  BizObject.New();
  lMainDataSet.FindField('DocKey').value = -1;
  lMainDataSet.FindField('DocNo').value = "--IV Test--";
  lMainDataSet.FindField('DocDate').value = "01/10/2016";
  lMainDataSet.FindField('PostDate').value = "01/10/2016";
  lMainDataSet.FindField('Code').value = "300-A0003";
  lMainDataSet.FindField('Description').value = "Sales";


  /*For Tax Inclusive = True with override Tax Amount*/
Function CreateSQLAccServer
  lDetailDataSet.Append();
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  lDetailDataSet.FindField('DtlKey').value = -1;
End Function
  lDetailDataSet.FindField('DocKey').value = -1;
   lDetailDataSet.FindField('Account').value = "500-000";
  lDetailDataSet.FindField('Description').value =  "Sales Item A";
  lDetailDataSet.FindField('Tax').value =  "SR";
  lDetailDataSet.FindField('TaxInclusive').value =  0;
  lDetailDataSet.FindField('Amount').value = 410.37;
  lDetailDataSet.FindField('TaxAmt').value = 24.63;
  lDetailDataSet.DisableControls();
  lDetailDataSet.FindField('TaxInclusive').value =  1;
  lDetailDataSet.EnableControls();
  lDetailDataSet.FindField('Changed').value = "F";
  lDetailDataSet.Post();


  /*For Tax Inclusive = False with override Tax Amount*/
function CheckLogin
  lDetailDataSet.Append();
   'Step 1: Create Com Server object
   lDetailDataSet.FindField('DtlKey').value = -1;
   Set ComServer = CreateSQLAccServer 'Create Com Server
   lDetailDataSet.FindField('DocKey').value = -1;
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
   lDetailDataSet.FindField('Account').value = "500-000";
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
  lDetailDataSet.FindField('Description').value =  "Sales Item B";
                'UserName, Password, DCF full path, Database filename
  lDetailDataSet.FindField('Tax').value =  "SR";
   END IF
  lDetailDataSet.FindField('TaxInclusive').value =  0;
End Function
   lDetailDataSet.FindField('Amount').value = 94.43;
 
   lDetailDataSet.FindField('TaxAmt').value = 5.66;
Function GetData
   lDetailDataSet.FindField('Changed').value = "F";
Dim lSQL
   lDetailDataSet.Post();
   lSQL = "SELECT Dockey FROM GL_JE "
   lSQL = lSQL & "WHERE DocNo='JV-00002' "
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function


   /* Save document */ 
Function DelData
    BizObject.Save();
Dim BizObject
     BizObject.Close();
   'Step 2: Find and Create the Biz Objects
     alert('Customer Invoice - has been saved.');
  Set BizObject = ComServer.BizObjects.Find("GL_JE")  
}
  'Step 3 : Find Doc Number
</script>
  If lDataSet.RecordCount > 0 Then
</head>
lDataSet.First
<body>
     BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
<input type="submit" value="SYNC" name="btnSubmit" onclick="AutoInvoice()">
     BizObject.Open
</body>
    BizObject.Delete
</html>
    BizObject.Close
 
  'Step 4 : Logout after done 
    'ComServer.Logout 
    MsgBox "Done"  
Else
MsgBox "Record Not Found"  
  END IF
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====SL_CS====
====Get Invoice Next Number====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! SL_CS Script   
! Get Invoice Next Number Script   
|-
|-
|  
|  
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="vb">
<html>
'Available in Version 5.2018.833.759 & above
<head>
'Copy below script & paste to notepad & name it as eg GetNextNo.vbs
<title>Add Cash Sales</title>
Call CheckLogin
<script language="JScript">
Call GetData
var ComServer;
Call ShowNextNo


function CreateSQLAccServer() {
Dim ComServer, lDataSet
   ComServer = new ActiveXObject('SQLAcc.BizApp');
 
  if (!ComServer.IsLogin) {            /* check whether user has logon */
Function CreateSQLAccServer
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
/* UserName, Password */
End Function
  }
}


function InsertData() {
function CheckLogin
   var BizObject, lMain, lDetail;
   'Step 1: Create Com Server object
    
  Set ComServer = CreateSQLAccServer 'Create Com Server
  CreateSQLAccServer();
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
End Function


   /*Step 2: Find and Create the Biz Objects*/
Function GetData
   BizObject = ComServer.BizObjects.Find('SL_CS') ;
Dim lSQL
   lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A "
  lSQL = lSQL & "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) "
  lSQL = lSQL & "WHERE A.DOCTYPE='IV' "
  lSQL = lSQL & "AND A.DESCRIPTION='Customer Invoice' "
  lSQL = lSQL & "AND A.STATESET=1 "
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function


  /*Step 3: Set Dataset*/
Function ShowNextNo
   lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
Dim Desc, Fmt, NextNo, lResult, sb
   lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */ 
   set sb = CreateObject("System.Text.StringBuilder")
 
   'Step 2 : Find Doc Number
  /*Begin Looping yr data*/
   If lDataSet.RecordCount > 0 Then    
  /*Step 4 : Insert Data - Master*/
lDataSet.First
   BizObject.New();
    Desc = lDataSet.FindField("Description").AsString
   lMain.FindField('DocKey').value        = -1;
Fmt  = lDataSet.FindField("Format").AsString
  lMain.FindField('DocNo').AsString      = "--IV Test--";
NextNo = lDataSet.FindField("NEXTNUMBER").Value
  lMain.FindField('DocDate').value        = "20/12/2017";
  lMain.FindField('PostDate').value      = "20/12/2017";
'Convert from IV-%.5d to IV-{0:d5}
  lMain.FindField('Code').AsString       = "300-C0001"; /*Customer Account*/
sb.Append_3 Fmt
  lMain.FindField('CompanyName').AsString = "Cash Sales"
sb.Replace "d", ""
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
sb.Replace "%.","{0:d"
  lMain.FindField('Address2').AsString   = ""; /*Optional*/
Fmt = sb.ToString & "}"
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
sb.Length = 0 'clear sb list
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
sb.AppendFormat Fmt, NextNo
  lMain.FindField('Description').AsString = "Sales";
   
lResult = sb.ToString
  /*Step 5: Insert Data - Detail*/
    MsgBox Desc
  /*For Tax Inclusive = True with override Tax Amount*/
MsgBox Fmt
  lDetail.Append();
MsgBox NextNo
  lDetail.FindField('DtlKey').value        = -1;
MsgBox lResult
  lDetail.FindField('DocKey').value        = -1;
Else
  lDetail.FindField('Seq').value            = 1;
MsgBox "Record Not Found"
  lDetail.FindField('Account').AsString    = "500-000"; /*Sales Account*/
   END IF   
  lDetail.FindField('Description').AsString = "Sales Item A";
End Function
  lDetail.FindField('Qty').AsFloat          = 1;
</syntaxhighlight>
  lDetail.FindField('Tax').AsString        = "SR";
|}
  lDetail.FindField('TaxRate').AsString    = "6%";
<div style="float: right;">   [[#top|[top]]]</div>
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 435;
  lDetail.FindField('Amount').AsFloat      = 410.37; /*Exclding GST Amt*/
  lDetail.FindField('TaxAmt').AsFloat      = 24.63;
 
  lDetail.DisableControls();
  lDetail.FindField('TaxInclusive').value  = 1;
  lDetail.EnableControls();
 
  lDetail.Post();
 
  /*For Tax Inclusive = False with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('DtlKey').value        = -1;
   lDetail.FindField('DocKey').value        = -1;
  lDetail.FindField('Seq').value            = 2;
  lDetail.FindField('Account').AsString    = "500-000";
  lDetail.FindField('Description').AsString = "Sales Item B";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString        = "SR";
  lDetail.FindField('TaxRate').AsString    = "6%";
   lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 94.43;
  lDetail.FindField('Amount').AsFloat      = 94.43;
  lDetail.FindField('TaxAmt').AsFloat      = 5.66;
  lDetail.Post();


  /*For With Item Code*/
====Auto Run Doc. Number====
  lDetail.Append();
{| class="mw-collapsible mw-collapsed wikitable"
  lDetail.FindField('DtlKey').value        = -1;
! Sales Order Auto Run Doc Number Script 
  lDetail.FindField('DocKey').value        = -1;
|-
  lDetail.FindField('Seq').value            = 3;
|
  lDetail.FindField('ItemCode').AsString    = "ANT";
<syntaxhighlight lang="vb">
  lDetail.FindField('Description').AsString = "Sales Item B";
'Copy below script & paste to notepad & name it as eg SL_SO.vbs
  /*lDetail.FindField('Account').AsString    = "500-000"; If you wanted override the Sales Account Code*/
'If had prompt Set Default - Just click Yes to avoid keep prompt
  lDetail.FindField('Qty').AsFloat          = 2;
Call CheckLogin
  lDetail.FindField('UOM').AsString        = "UNIT";
Call GetData
  /*lDetail.FindField('DISC').AsString        = "5%+3"; Optional (eg 5% plus 3 Discount)*/
Call InsertData
  lDetail.FindField('Tax').AsString        = "SR";
 
  lDetail.FindField('TaxRate').AsString    = "6%";
Dim ComServer, lDataSet
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat      = 200;
  lDetail.FindField('TaxAmt').AsFloat      = 12;
  lDetail.Post();


  /*Step 6: Save Document*/
Function CreateSQLAccServer
   BizObject.Save();
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  BizObject.Close();
End Function
    alert('Document has been saved.');
}
</script>
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="InsertData()">
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


====AR_PM====
function CheckLogin
{| class="mw-collapsible mw-collapsed wikitable"
  'Step 1: Create Com Server object
! AR_PM Script 
  Set ComServer = CreateSQLAccServer 'Create Com Server
|-
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
|
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
<syntaxhighlight lang="javascript">
                'UserName, Password, DCF full path, Database filename
<html>
  END IF
<head>
End Function
<title>Add Customer Payment</title>
<script language="JScript">
var ComServer;


function CreateSQLAccServer() {
Function GetData
   ComServer = new ActiveXObject("SQLAcc.BizApp");
Dim lSQL
   if (!ComServer.IsLogin) {            /* check whether user has logon */
  lSQL = "SELECT * FROM SY_DOCNO "
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
   lSQL = lSQL & "WHERE DESCRIPTION='Customer Sales Order 2' "
/* UserName, Password */
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
  }
End Function
}


function AutoPayment() {
  var BizObject, lMainDataSet, lKnockOffDataSet, V;
 
  CreateSQLAccServer();


   BizObject = ComServer.BizObjects.Find('AR_PM');
Function InsertData
   lMainDataSet = BizObject.DataSets.Find('MainDataSet');
Dim BizObject, lMain, lDetail, lDate
   lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
   'Step 2: Find and Create the Biz Objects
  BizObject.New();
  Set BizObject = ComServer.BizObjects.Find("SL_SO")
 
  'Step 3: Set Dataset
   Set lMain  = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   lMainDataSet.FindField('DocKey').value = -1;
   'Begin Looping yr data
   lMainDataSet.FindField('DocNo').value = "Test";
  'Step 4 : Insert Data - Master
   lMainDataSet.FindField('Code').value = "888";
  lDate = CDate("January 1, 2019")
   lMainDataSet.FindField('DocDate').value = "01/09/2015";
  BizObject.New
   lMainDataSet.FindField('PostDate').value = "01/09/2015";
  lMain.FindField("DocKey").value         = -1
   lMainDataSet.FindField('Project').value = "----";
   lMain.FindField("DocNo").AsString      = "<<New>>"
  lMain.FindField("DocDate").value       = lDate
  lMain.FindField("PostDate").value      = lDate
   lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
  lMain.FindField("CompanyName").AsString = "Cash Sales"
   lMain.FindField("Address1").AsString    = "" 'Optional
  lMain.FindField("Address2").AsString    = "" 'Optional
  lMain.FindField("Address3").AsString    = "" 'Optional
   lMain.FindField("Address4").AsString    = "" 'Optional
  lMain.FindField("Phone1").AsString      = "" 'Optional
  lMain.FindField("Description").AsString = "Sales Order"
  lMain.FindField("DocNoSetKey").value   = lDataSet.FindField("DocKey").value
   
  'Step 5: Insert Data - Detail
  'For With Item Code
  lDetail.Append
   lDetail.FindField("DtlKey").value        = -1
  lDetail.FindField("DocKey").value        = -1
  lDetail.FindField("Seq").value            = 3
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UOM").AsString        = "UNIT"
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString        = ""
  lDetail.FindField("TaxRate").AsString    = ""
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100 
  lDetail.FindField("Amount").AsFloat      = 200
  lDetail.FindField("TaxAmt").AsFloat      = 0
  lDetail.Post
 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
    
    
   lMainDataSet.FindField('Description').value = "";
   'Step 7 : Logout after done 
   lMainDataSet.FindField('PaymentMethod').value = "320-000";
   'ComServer.Logout
  lMainDataSet.FindField('Journal').value = "CASH";
  lMainDataSet.FindField('ChequeNumber').value = "";
  lMainDataSet.FindField('CurrencyCode').value = "----";
  lMainDataSet.FindField('CurrencyRate').value = "1.0000000000";
  lMainDataSet.FindField('DocAmt').value = "106.00";
  lMainDataSet.FindField('BankCharge').value = "0";
  lMainDataSet.FindField('UnappliedAmt').value = "0";
  lMainDataSet.FindField('Cancelled').value = 'F';
    
    
   v = ComServer.CreateOleVariantArray(2);
   MsgBox "Done" 
  v.SetItem(0, 'IV'); /*Knock Off DocType*/
End Function
   v.SetItem(1, 'IV-00111'); /*Knock Off DocNo*/
</syntaxhighlight>
|}
<div style="float: right;">   [[#top|[top]]]</div>


  if (lKnockOffDataSet.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
====GL_PV====
          lKnockOffDataSet.Edit();
{| class="mw-collapsible mw-collapsed wikitable"
          lKnockOffDataSet.FindField('DocAmt').value = "106";  
! Cash Book PV Script   
          lKnockOffDataSet.FindField('KnockOff').AsString = 'T';
          lKnockOffDataSet.Post(); }
    /* Save document */ 
    BizObject.Save();
    BizObject.Close();
    alert("Customer Payment - has been saved.");
}
</script>
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="AutoPayment()">
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer.IV.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.IV.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="vb">
<html>
'Copy below script & paste to notepad & name it as eg AR_PM.vbs
  <head>
Call PostData
    <title>Customer.IV.RO</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Function CreateSQLAccServer
    <script type="text/javascript">
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
var ComServer;
End Function
 
function CreateSQLAccServer() {
Function PostData
   ComServer = new ActiveXObject("SQLAcc.BizApp");
Dim ComServer, BizObject, lIVNo, lDate
   if (!ComServer.IsLogin) {            /* check whether user has logon */
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
  'Step 1: Create Com Server object
  /* UserName, Password */
   Set ComServer = CreateSQLAccServer 'Create Com Server
   }
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
}     
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
 
  END IF
function GetData() {  
  var lMain, lDetail, lRptVar, lDateFrom, lDateTo;
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_PV")  
   
   'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
    
    
   elem = document.getElementById('txt1');
   'Step 4 : Posting
 
    lDate = CDate("January 23, 2020")
  CreateSQLAccServer();
    BizObject.New
 
    lMain.FindField("DOCKEY").Value          = -1
   lDateFrom = new Date("January 1 2015");
    lMain.FindField("DocNo").AsString        = "--CB PV Test--"
  lDateTo = new Date("December 31, 2015");
    lMain.FindField("DocDate").Value          = lDate
    lMain.FindField("PostDate").Value        = lDate
    lMain.FindField("Description").AsString   = "Compacc System"
    lMain.FindField("PaymentMethod").AsString = "310-001"
lMain.FindField("CHEQUENUMBER").AsString = "MBB 213245"
    lMain.FindField("DocAmt").AsFloat        = 2019.57
    lMain.FindField("Cancelled").AsString    = "F"
lMain.Post
    
    
  lRptVar = ComServer.RptObjects.Find('Customer.IV.RO');
    lDetailDataSet.Append
  lRptVar.Params.Find('SelectDate').Value          = true;
    lDetailDataSet.FindField("DTLKEY").value = -1
  lRptVar.Params.Find('DateFrom').Value            = lDateFrom.valueOf();
lDetailDataSet.FindField("DOCKEY").value = -1
  lRptVar.Params.Find('DateTo').Value              = lDateTo.valueOf();
lDetailDataSet.FindField("Code").AsString = "200-300"
  lRptVar.Params.Find('AllAgent').Value            = false;
     lDetailDataSet.FindField("DESCRIPTION").AsString = "Maybank - Asus A555LD-xx313H"
  lRptVar.Params.Find('AgentData').Value            = "----\nLF"; /*Filter by Agent code ---- & HALIM */
lDetailDataSet.FindField("TAX").AsString = ""
  lRptVar.Params.Find('AllArea').Value              = true;
lDetailDataSet.FindField("TAXAMT").AsFloat = 0
  lRptVar.Params.Find('AllCompany').Value          = true;
lDetailDataSet.FindField("TAXINCLUSIVE").AsFloat = 0
  lRptVar.Params.Find('AllCurrency').Value          = true;
lDetailDataSet.FindField("AMOUNT").AsFloat = 2019.57
  lRptVar.Params.Find('AllDocProject').Value        = true;
     lDetailDataSet.Post
  lRptVar.Params.Find('AllCompanyCategory').Value  = true;
 
  lRptVar.Params.Find('AllDocument').Value          = true;
   'Step 5: Save Document
  lRptVar.Params.Find('IncludeCancelled').Value  = false;
    BizObject.Save
  lRptVar.Params.Find('PrintDocumentStyle').Value = false;
     BizObject.Close
  lRptVar.Params.Find('AllItemProject').Value     = true;
     MsgBox "Done"
  lRptVar.Params.Find('AllPaymentMethod').Value  = true;
End Function
  lRptVar.CalculateReport(); 
</syntaxhighlight>
 
|}
  lMain  = lRptVar.DataSets.Find('cdsMain');
<div style="float: right;">  [[#top|[top]]]</div>
  lDetail = lRptVar.DataSets.Find('cdsDocDetail');
====ST_Item with Opening====
  /*alert("Count -" + lRptVar.DataSets.Find('cdsDocDetail').RecordCount);*/
{| class="mw-collapsible mw-collapsed wikitable"
  elem.innerHTML += 'From Main'+'\n';
! ST_Item with Opening Script 
   
|-
  lMain.First();
|
  while (!lMain.eof) {
<syntaxhighlight lang="vb">
    elem.innerHTML += lMain.FindField('DocKey').AsString + ' ' +
'Copy below script & paste to notepad & name it as eg ST_XF.vbs
                  lMain.FindField('DocNo').AsString + ' ' + lMain.FindField('DocDate').AsString + ' '+
Call CheckLogin
                      lMain.FindField('CompanyName').AsString + ' ' + lMain.FindField('DocAmt').AsString + '\n';
Call InsertData
lMain.Next()
 
  }
Dim ComServer
  elem.innerHTML += 'End Main'+'\n\n';
 
 
Function CreateSQLAccServer
  elem.innerHTML += 'From Detail'+'\n';
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
  lDetail.First();
End Function
  while (!lDetail.eof) {
     elem.innerHTML += lDetail.FindField('Dockey').AsString + ' ' + lDetail.FindField('Account').AsString + ' ' +
                  lDetail.FindField('Description').AsString + ' ' + lDetail.FindField('Amount').AsString + '\n';
lDetail.Next(); 
  
  elem.innerHTML += 'End Detail'+'\n\n';
}
 
     </script>
  </head>
  <body>
     <form>
      <textarea id="txt1" rows="30" cols="116"></textarea>
      <input type="button" value="Calculate" onclick="GetData()">
    </form>
  </body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


====Customer.RO====
function CheckLogin
{| class="mw-collapsible mw-collapsed wikitable"
  'Step 1: Create Com Server object
! Customer.RO Report Object Script 
   Set ComServer = CreateSQLAccServer 'Create Com Server
|-
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
|
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
<syntaxhighlight lang="javascript">
                'UserName, Password, DCF full path, Database filename
<html>
   END IF
<head>
End Function
<title>Add Customer Invoice</title>
<script language='JScript'>
var ComServer;
function CreateSQLAccServer() {
   ComServer = new ActiveXObject('SQLAcc.BizApp');
   if (!ComServer.IsLogin) {            /* check whether user has logon */
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
   }
}


function GetCustomerData() {
Function InsertData
  var RptObject, lDataSet, lDataSet2;
Dim BizObject, lMain, lDtl, lOpn
   edOutput.value = '';
   'Step 2: Find and Create the Biz Objects
  edOutput2.value = '';
   Set BizObject = ComServer.BizObjects.Find("ST_ITEM")  
  //Step 1: Create Com Server object
 
   CreateSQLAccServer();
   'Step 3: Set Dataset
 
  Set lMain = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   //Step 2: Find and Create the Report Objects
   Set lDtl = BizObject.DataSets.Find("cdsUOM") 'lDetail contains detail data 
   RptObject = ComServer.RptObjects.Find('Customer.RO');
  Set lOpn = BizObject.DataSets.Find("cdsOpeningBalance") 'lDetail contains detail data 
    
    
   //Step 3: Spool parameters
   'Begin Looping yr data
   RptObject.Params.Find('AllAgent').Value = true;
  'Step 4 : Insert Data - Master
   RptObject.Params.Find('AllArea').Value = true;
   BizObject.New
   RptObject.Params.Find('AllCompany').Value = true;
  lMain.FindField("CODE").value = "==Test New Item Code=="
   RptObject.Params.Find('AllCompanyCategory').Value = true;
   lMain.FindField("DESCRIPTION").value = "Item Description 123"
   RptObject.Params.Find('AllCurrency').Value = true;
   lMain.FindField("STOCKGROUP").value = "DEFAULT"
   RptObject.Params.Find('AllTerms').Value = true;
   lMain.FindField("STOCKCONTROL").value = "T"
   RptObject.Params.Find('SelectDate').Value = true;
   lMain.FindField("ISACTIVE").value = "T"
   RptObject.Params.Find('PrintActive').Value = true;
   
   RptObject.Params.Find('PrintInactive').Value = false;
  'Step 5: Insert Data - Detail
   RptObject.Params.Find('PrintPending').Value = false;
   lDtl.Edit 'For 1St UOM
   RptObject.Params.Find('PrintProspect').Value = false;
  lDtl.FindField("UOM").AsString = "PCS"
   RptObject.Params.Find('PrintSuspend').Value = false;
   lDtl.FindField("Rate").AsFloat = 1
   //RptObject.Params.Find('CompanyData').Value = '300-A0003';
   lDtl.FindField("RefCost").AsFloat = 10.2
   lDtl.FindField("RefPrice").AsFloat = 25
   lDtl.Post
 
  lDtl.Append 'For 2nd UOM
  lDtl.FindField("UOM").AsString = "CTN"
   lDtl.FindField("Rate").AsFloat = 12
   lDtl.FindField("RefCost").AsFloat = 102
   lDtl.FindField("RefPrice").AsFloat = 240
  lDtl.Post
    
    
   //Step 4: Perform Report calculation
   'Step 6: Insert Data - Opening
   RptObject.CalculateReport();
  lOpn.Append
   lDataSet = RptObject.DataSets.Find('cdsMain');
   lOpn.FindField("LOCATION").AsString = "----"
   lDataSet2 = RptObject.DataSets.Find('cdsBranch');
   lOpn.FindField("Qty").AsFloat = 10 'in smallest UOM'
   lOpn.FindField("COST").AsFloat = 10.2
  lOpn.Post
 
  'Step 7: Save Document
  BizObject.Save
  BizObject.Close
    
    
   //alert('Count ' + lDataSet.RecordCount);
   'Step 8 : Logout after done  
 
   'ComServer.Logout
  //Step 5 Retrieve the output
    
  lDataSet.First;
   MsgBox "Done"
  while (!lDataSet.eof){
End Function
    edOutput.value = edOutput.value +
                'Code : ' + lDataSet.FindField('Code').AsString + '\n' +
                'Company Name : ' + lDataSet.FindField('CompanyName').AsString +'\n\n';
lDataSet.Next();
   }
  lDataSet2.First();
  while (!lDataSet2.eof){
  edOutput2.value = edOutput2.value +
                  'Code : '+ lDataSet2.FindField('Code').AsString + '\n' +
  'Branch Name : '+ lDataSet2.FindField('BranchName').AsString + '\n' +
                  'Address 1 : '+ lDataSet2.FindField('Address1').AsString + '\n' +
  'Address 2 : '+ lDataSet2.FindField('Address2').AsString + '\n' +
  'Address 3 : '+ lDataSet2.FindField('Address3').AsString + '\n' +
  'Address 4 : '+ lDataSet2.FindField('Address4').AsString + '\n' +
  'Phone 1 : '+ lDataSet2.FindField('Phone1').AsString  +'\n\n';
  lDataSet2.Next();
    }
}
 
</script>
</head>
<body>
  <table>
    <tr>
      <th>Main Table</th>
      <th>Branch Branch</th>
    </tr>
    <tr>
      <td>
        <TEXTAREA rows=15 cols=75 name="edOutput"></TEXTAREA>
  </td>
      <td>
        <TEXTAREA rows=15 cols=75 name="edOutput2"></TEXTAREA>
  </td>
    </tr>
   </table>
   <table width="83%">
<tr>
  <td align="center">
<input type='submit' value='Sync Data' name='btnSubmit' onclick='GetCustomerData()'>
  </td>
</tr>
  </table>
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Get Next IV Number====
====GL Stock Value-Insert,Edit & Delete====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Get Next IV Number Script   
! GL Stock Value Insert, Edit & Delete Script   
|-
|-
|  
|  
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="vb">
<html>
'Available in Version 5.2018.833.759 & above
<head>
'Copy below script & paste to notepad & name it as eg GLStockValue.vbs
<title>Add Cash Sales</title>
Call CheckLogin
<script language="JScript">
Call GetData
var ComServer, lDataSet;
'Call InsertValue
'Call UpdateValue
Call DeleteValue


function CreateSQLAccServer() {
Dim ComServer, lDataSet
   ComServer = new ActiveXObject('SQLAcc.BizApp');
 
   if (!ComServer.IsLogin) {            /* check whether user has logon */
Function CreateSQLAccServer
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
/* UserName, Password */
End Function
   }
 
}
function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
End Function


function zeroPad(num, places) {
Function GetData
   var zero = places - num.toString().length + 1;
Dim lSQL
   return Array(+(zero > 0 && zero)).join("0") + num;
   lSQL = "SELECT Dockey FROM GL_STOCK "
   /*zeroPad(5, 2); // "05"*/
   lSQL = lSQL & "WHERE BalanceStock='330-000' "
}
   Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function


function GetData() {
Function InsertValue
  var lSQL;
Dim BizObject, lMain, lDetail
  lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A ";
   'Step 2: Find and Create the Biz Objects
  lSQL = lSQL + "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) ";
   Set BizObject = ComServer.BizObjects.Find("GL_STOCK")  
  lSQL = lSQL + "WHERE A.DOCTYPE='IV' ";
   lSQL = lSQL + "AND A.DESCRIPTION='Customer Invoice' ";
   lSQL = lSQL + "AND A.STATESET=1 ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL)
}


function ShowNextNo() {
  'Step 3: Set Dataset
   var Desc, Fmt, NextNo, lResult, lPad;
  Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
    
    
   CreateSQLAccServer(); 
   'Step 4 : Find Dockey Record
  GetData();
   If lDataSet.RecordCount > 0 Then    
 
lDataSet.First
   if (lDataSet.RecordCount > 0) {    
     BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
    lDataSet.First;
     Desc = lDataSet.FindField("Description").AsString;
Fmt  = lDataSet.FindField("Format").AsString;
NextNo = lDataSet.FindField("NEXTNUMBER").Value;
    alert(Desc);
alert(Fmt);
alert(NextNo);
lPad = Fmt.substr(5, 1);
     BizObject.Open
lPad = zeroPad(NextNo, lPad)
    BizObject.Edit
Desc = Fmt.substr(0, 3);
alert(Desc + lPad);
    lDetail.Append
  }
    lDetail.FindField("Project").value = "----"
}
lDetail.FindField("SYear").value = 2021
</script>
lDetail.FindField("SMonth").value = 4
</head>
lDetail.FindField("Amount").value = 423.00
<body>
    lDetail.Post
<input type="submit" value="Show Next No" name="btnSubmit" onclick="ShowNextNo()">
</body>
   'Step 6: Save Document
</html>
    BizObject.Save
</syntaxhighlight>
    BizObject.Close
|}
    MsgBox "Done"
<div style="float: right;">  [[#top|[top]]]</div>
  END IF
====Customer & Supplier Contra====
End Function
{| class="mw-collapsible mw-collapsed wikitable"
! Customer & Supplier Contra Script 
|-
|
<syntaxhighlight lang="javascript">
<html>
<head>
<title>Add Customer Invoice</title>
<script language="JScript">
var ComServer;
function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
  }
}
function PostARCT() {
  var BizObject, lMain, lKO, V;
  CreateSQLAccServer();
  BizObject = ComServer.BizObjects.Find('AR_CT');
  lMain = BizObject.DataSets.Find('MainDataSet');
  lKO = BizObject.DataSets.Find('cdsKnockOff');
  BizObject.New();
  lMain.FindField('DocKey').value = -1;
  lMain.FindField('DocNo').value = "--CT Test--";
  lMain.FindField('DocDate').value = "01/10/2020";
  lMain.FindField('PostDate').value = "01/10/2020";
  lMain.FindField('Code').value = "300-A0002";
  lMain.FindField('Description').value = "Contra";
  lMain.FindField('DocAmt').value = "100.00";
   //lMain.FindField('UnappliedAmt').value = "0";


   v = ComServer.CreateOleVariantArray(2);
Function UpdateValue
   v.SetItem(0, 'IV'); /*Knock Off DocType*/
Dim BizObject, lMain, lDetail, v(2)
   v.SetItem(1, 'IV-00021'); /*Knock Off DocNo*/
   'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK")  
 
  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
 
  'Step 4 : Find Dockey Record
  If lDataSet.RecordCount > 0 Then 
lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString 
    BizObject.Open
    BizObject.Edit


  if (lKO.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
    v(0) = "----" 'Project Code
          lKO.Edit();
    v(1) = "2021" 'Year
          lKO.FindField('DocAmt').value = "100";  
v(2) = "3" 'Month to update
          lKO.FindField('KnockOff').AsString = 'T';
          lKO.Post(); }
if (lDetail.Locate("Project;SYear;SMonth", v, false, false)) then
      lDetail.Edit
      lDetail.FindField("Amount").value = 333.12     
      lDetail.Post
End IF
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  END IF
End Function


  /* Save document */ 
Function DeleteValue
    BizObject.Save();
Dim BizObject, lMain, lDetail, v(2)
    BizObject.Close();
  'Step 2: Find and Create the Biz Objects
    alert('Customer Contra - has been saved.');
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK")  
}


function PostAPST() {
   'Step 3: Set Dataset
   var BizObject, lMain, lKO, V, lDocNo, lDocKey;
   Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
   Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
  CreateSQLAccServer();
  BizObject = ComServer.BizObjects.Find('AP_ST');
   lMain = BizObject.DataSets.Find('MainDataSet');
   lKO = BizObject.DataSets.Find('cdsKnockOff');
    
    
   lDocNo = "--CT Test--"
   'Step 4 : Find Dockey Record
   lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
   If lDataSet.RecordCount > 0 Then 
  BizObject.Params.Find("DocKey").Value = lDocKey  
lDataSet.First
 
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString  
  if (lDocKey != null) {
     BizObject.Open();
     BizObject.Open
BizObject.Edit();
    BizObject.Edit
lMain.FindField('Code').value = "400-C0001";
lMain.FindField('DocAmt').value = "100.00";
  //lMain.FindField('UnappliedAmt').value = "0";


  v = ComServer.CreateOleVariantArray(2);
    v(0) = "----" 'Project Code
  v.SetItem(0, 'PI'); /*Knock Off DocType*/
    v(1) = "2021" 'Year
  v.SetItem(1, 'PI-00001'); /*Knock Off DocNo*/
v(2) = "4" 'Month to update
 
    if (lKO.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
if (lDetail.Locate("Project;SYear;SMonth", v, false, false)) then
          lKO.Edit();
      lDetail.Delete
          lKO.FindField('DocAmt').value = "100";  
End IF
          lKO.FindField('KnockOff').AsString = 'T';
  'Step 6: Save Document
          lKO.Post(); }
     BizObject.Save
 
     BizObject.Close
  /* Save document */ 
     MsgBox "Done"
     BizObject.Save(); 
  END IF
     BizObject.Close();
End Function
     alert('Supplier Contra - has been Updated.');
  }
}
</script>
</head>
<body>
<button onclick="javascript:PostARCT();">PostARCT</button>&nbsp;&nbsp;
<button onclick="javascript:PostAPST();">PostAPST</button>&nbsp;&nbsp;
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Add Stock Item====
====Stock Item Template to SL_IV====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Add ST_Item Script   
! Stock Item Template to SL_IV Script   
|-
|-
|  
|  
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="vb">
<html>
'Updated 03 Sep 2021
<head>
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
<title>Add Stock Item</title>
Call CheckLogin
<script language="JScript">
Call InsertData1
var ComServer;
Call InsertData2


function CreateSQLAccServer() {
Dim ComServer
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
  }
}


function InsertData() {
Function CreateSQLAccServer
   var BizObject, lMain, lDetail;
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
    
End Function
  CreateSQLAccServer();
 
function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
   If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
                'UserName, Password, DCF full path, Database filename
   END IF
End Function


   /*Step 2: Find and Create the Biz Objects*/
Function InsertData1
   BizObject = ComServer.BizObjects.Find('ST_ITEM') ;
Dim BizObject, lMain, lDetail, lDate
   'Step 2: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("ST_ITEM_TPL")  


   /*Step 3: Set Dataset*/
   'Step 3: Set Dataset
   lMain  = BizObject.DataSets.Find('MainDataSet'); /*lMain contains master data*/
   Set lMain  = BizObject.DataSets.Find("MainDataSet"'lMain contains master data
   lUOM = BizObject.DataSets.Find('cdsUOM'); /*lDetail contains detail data */  
   Set lDetail = BizObject.DataSets.Find("cdsItemTplDtl") 'lDetail contains detail data   
    
    
   /*Begin Looping yr data*/
   'Begin Looping yr data
   /*Step 4 : Insert Data - Master*/
   'Step 4 : Insert Data - Master
   BizObject.New();
   BizObject.New
   lMain.FindField('Code').AsString        = "Code JScript";
   lMain.FindField("Code").AsString        = "--TPL Test--"
   lMain.FindField('DESCRIPTION').AsString = "Post from JScript"
   lMain.FindField("Description").AsString = "Template formt 1"
  lMain.FindField('STOCKGROUP').AsString   = "DEFAULT"; /*Optional*/
   lMain.FindField("RefPrice").AsFloat    = 299.15
   lMain.FindField('STOCKCONTROL').AsString    = "T"; /*Optional*/
  lMain.FindField('ISACTIVE').AsString    = "T"; /*Optional*/
      
      
   /*Step 5: Insert Data - UOM*/
   'Step 5: Insert Data - Detail
   lUOM.Edit(); /*For 1St UOM*/
  lDetail.Append
   lUOM.FindField('UOM').AsString = "PCS";
  lDetail.FindField("DtlKey").value        = -1
   lUOM.FindField('Rate').AsFloat = 1;
  lDetail.FindField("Code").AsString        = "--TPL Test--"
   lUOM.FindField('RefCost').AsFloat = 10.2;
  lDetail.FindField("Seq").value            = 1
   lUOM.FindField('RefPrice').AsFloat = 25;
  lDetail.FindField("ItemCode").AsString    = "ANT"
   lUOM.Post();
   lDetail.FindField("Description").AsString = "Sales Item A"
   lDetail.FindField("UOM").AsString         = "BOX"
   lDetail.FindField("Qty").AsFloat         = 2
   'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("UNITAMOUNT").AsFloat   = 100 
   lDetail.FindField("Amount").AsFloat       = 200
   lDetail.FindField("PRINTABLE").AsString  = "T"
  lDetail.Post


   lUOM.Append(); /*For 2nd UOM*/
   lDetail.Append
   lUOM.FindField('UOM').AsString = "CTN";
  lDetail.FindField("DtlKey").value        = -1
   lUOM.FindField('Rate').AsFloat = 12;
  lDetail.FindField("Code").AsString        = "--TPL Test--"
   lUOM.FindField('RefCost').AsFloat = 102;
  lDetail.FindField("Seq").value            = 2
   lUOM.FindField('RefPrice').AsFloat = 240;
  lDetail.FindField("ItemCode").AsString    = "COVER"
   lUOM.Post();
  lDetail.FindField("Description").AsString = "Sales Item B"
   lDetail.FindField("UOM").AsString         = "UNIT"
   lDetail.FindField("Qty").AsFloat         = 3
   'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("UNITAMOUNT").AsFloat   = 10 
   lDetail.FindField("Amount").AsFloat       = 30
   lDetail.FindField("PRINTABLE").AsString  = "T"
  lDetail.Post 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  MsgBox "Template Posting Done" 
End Function


  /*Step 6: Save*/
Function InsertData2
  BizObject.Save();
Dim BizObject, lMain, lDetail, lDate, lDODtl, lSQL, v(2)
   BizObject.Close();
   'Step 1: Get Template Information
    alert('Item has been saved.');
  lSQL = "SELECT * FROM ST_ITEM_TPLDTL "
}
  lSQL = lSQL & "WHERE Code='--TPL Test--' "
</script>
  Set lDODtl = ComServer.DBManager.NewDataSet(lSQL)
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="InsertData()">
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>


====Get Company Profile====
  if lDODtl.RecordCount > 0 then
{| class="mw-collapsible mw-collapsed wikitable"
'Step 2: Find and Create the Biz Objects
! Get Company Profile Script 
    Set BizObject = ComServer.BizObjects.Find("SL_IV")
|-
|
<syntaxhighlight lang="javascript">
<html>
<head>
<title>Add Cash Sales</title>
<script language="JScript">
var ComServer, lDataSet;


function CreateSQLAccServer() {
    'Step 3: Set Dataset
   ComServer = new ActiveXObject('SQLAcc.BizApp');
    Set lMain  = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data 
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
    
/* UserName, Password */
    'Step 4 : Insert Data - Master
  }
    lDate = CDate("January 1, 2021")
}
    BizObject.New
 
    lMain.FindField("DocKey").value        = -1
function zeroPad(num, places) {
    lMain.FindField("DocNo").AsString      = "--IV Test--"
  var zero = places - num.toString().length + 1;
    lMain.FindField("DocDate").value        = lDate
  return Array(+(zero > 0 && zero)).join("0") + num;
    lMain.FindField("PostDate").value      = lDate
   /*zeroPad(5, 2); // "05"*/
    lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
}
    lMain.FindField("CompanyName").AsString = "Cash Sales"
     'lMain.FindField("Address1").AsString    = "" 'Optional
    'lMain.FindField("Address2").AsString    = "" 'Optional
    'lMain.FindField("Address3").AsString    = "" 'Optional
    'lMain.FindField("Address4").AsString    = "" 'Optional
    'lMain.FindField("Phone1").AsString      = "" 'Optional
    lMain.FindField("Description").AsString = "Sales"
   
    'Step 6: Insert Data - Detail
lDODtl.First
    While not lDODtl.Eof
      lDetail.Append
      lDetail.FindField("DtlKey").value        = -1
      lDetail.FindField("DocKey").value        = -1
      lDetail.FindField("Seq").value            = 1
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
      lDetail.FindField("UOM").AsString        = lDODtl.FindField("UOM").AsString
      lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitAmount").AsFloat
      lDetail.FindField("Amount").AsFloat      = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("PRINTABLE").AsString   = lDODtl.FindField("PRINTABLE").AsString
      lDetail.Post
  lDODtl.Next
Wend
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
 
  'Step 8 : Logout after done 
  'ComServer.Logout
 
  MsgBox "Posting IV Done"
  else MsgBox "--No Template found. Posting IV aborted" 
  End IF
End Function
</syntaxhighlight>
|}
<div style="float: right;">  [[#top|[top]]]</div>
====AR_CN====
{| class="mw-collapsible mw-collapsed wikitable"
! AR_CN Script 
|-
|
<syntaxhighlight lang="vb">
'Updated 24 Feb 2023
'Copy below script & paste to notepad & name it as eg AR_CN.vbs
Call InsertData


function GetData() {
Function CreateSQLAccServer
  var lSQL;
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
   lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, ";
End Function
  lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, ";
  lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL)
}


function ShowCoProfile() {
Function InsertData
  var CoName, Rmk, BRN;
Dim ComServer, BizObject, lDate, lIVNO, v(1)
 
  CreateSQLAccServer(); 
  GetData();


   if (lDataSet.RecordCount > 0) {    
   'Step 1: Create Com Server object
    lDataSet.First;
   Set ComServer = CreateSQLAccServer 'Create Com Server
     CoName = lDataSet.FindField("COMPANYNAME").AsString;
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
Rmk  = lDataSet.FindField("REMARK").AsString;
     ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"  
BRN = lDataSet.FindField("BRN").Value;
   END IF
    alert(CoName);
alert(Rmk);
alert(BRN);
  }
}
</script>
</head>
<body>
<input type="submit" value="Show Co Profile" name="btnSubmit" onclick="ShowCoProfile()">
</body>
</html>
</syntaxhighlight>
|}
<div style="float: right;">   [[#top|[top]]]</div>
<br />


===Delphi===
   'Step 2: Find and Create the Biz Objects
The below example is assuming after you had check the login status.
   Set BizObject = ComServer.BizObjects.Find("AR_CN")  
====GL_JE====
{| class="mw-collapsible mw-collapsed wikitable"
! GL_JE Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_GL_JEClick(Sender: TObject);
var BizApp, lMain, lDtl, lBizObj, lDocKey : Variant;
    i : integer;
begin
   BizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lBizObj := BizApp.BizObjects.Find('GL_JE');
    lMain   := lBizObj.DataSets.Find('MainDataSet');
    lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
    lBizObj.New;
    lMain.FindField('DOCKEY').Value        := -1;
    lMain.FindField('DocNo').Value        := '--JE Test--';
    lMain.FindField('DocDate').Value      := '28 Aug 2017';
    lMain.FindField('PostDate').Value      := '28 Aug 2017';
    lMain.FindField('TAXDATE').Value      := '28 Aug 2017';
    lMain.FindField('Description').Value  := 'Postage';
    lMain.FindField('Cancelled').Value    := 'F';
    lMain.FindField('DOCNOSETKEY').Value  := 0;
    lMain.Post;


     //For Tax Inclusive
  'Step 3: Set Dataset
    lDtl.Append;
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
    lDtl.FindField('DTLKEY').Value      := -1;
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data 
    lDtl.FindField('DOCKEY').Value      := -1;
  Set lKO = BizObject.DataSets.Find("cdsKnockOff") 'Contains IV/DN to knock off data 
    lDtl.FindField('SEQ').Value          := 1;
 
    lDtl.FindField('CODE').Value        := '610-1000';
  'Step 4 : Insert Data - Master
    lDtl.FindField('DESCRIPTION').Value := 'Item Desc 1';
  lDate = CDate("January 1, 2023")
    lDtl.FindField('TAX').Value          := 'TX';
  BizObject.New
//    lDtl.FindField('LOCALTAXAMT').AsFloat := 17.32;//For JE you can't override (i.e. system auto calc)
  lMainDataSet.FindField("DocKey").value = -1
    lDtl.FindField('TAXINCLUSIVE').Value := 1;
  lMainDataSet.FindField("DocNo").value = "--CN Test--"
    lDtl.FindField('LocalDR').AsFloat    := 306;//Including GST if TAXINCLUSIVE = 1
  lMainDataSet.FindField("DocDate").value = lDate
    lDtl.FindField('DR').AsFloat          := 306;//if wanted DR <> LocalDR
  lMainDataSet.FindField("PostDate").value = lDate
    lDtl.FindField('CHANGED').Value      := 'F';
  lMainDataSet.FindField("Code").value = "300-A0001"
    lDtl.Post;
  lMainDataSet.FindField("Description").value = "Credit Note"
      
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "510-2000"
  lDetailDataSet.FindField("Description").value = "Sales Item A"
  lDetailDataSet.FindField("Tax").value = "SV"
  lDetailDataSet.FindField("TaxInclusive").value = 0
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
 
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value = 1
  lDetailDataSet.EnableControls
 
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post
 
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "510-2000"
  lDetailDataSet.FindField("Description").value = "Sales Item B"
  lDetailDataSet.FindField("Tax").value = "SV"
  lDetailDataSet.FindField("TaxInclusive").value = 0
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post


    //For Tax Exclusive
  'Step 7: Knock Off IV
    lDtl.Append;
     lIVNO = "--IV Test--"
    lDtl.FindField('DTLKEY').Value      := -1;
     v(0) = "IV"
     lDtl.FindField('DOCKEY').Value      := -1;
     v(1) = lIVNO
     lDtl.FindField('SEQ').Value          := 2;
     lDtl.FindField('CODE').Value        := '605-200';
     if (lKO.Locate("DocType;DocNo", v, false, false)) then
     lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 2';
      lKO.Edit
    lDtl.FindField('TAX').Value          := 'TX';
      lKO.FindField("KOAmt").value = 65.57
    lDtl.FindField('TAXINCLUSIVE').Value := 0;
      lKO.FindField("KnockOff").AsString = "T"
    lDtl.FindField('LocalCR').AsFloat    := 100;
      lKO.Post
    lDtl.FindField('CHANGED').Value      := 'F';
End IF 
    lDtl.Post;


    //For No GST
  'Step 7: Save Document
    lDtl.Append;
  BizObject.Save
    lDtl.FindField('DTLKEY').Value      := -1;
   BizObject.Close
    lDtl.FindField('DOCKEY').Value      := -1;
   MsgBox "Done"
    lDtl.FindField('SEQ').Value          := 3;
End Function
    lDtl.FindField('CODE').Value        := '610-002';
    lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 3';
    lDtl.FindField('TAX').Value          := '';
    lDtl.FindField('TAXINCLUSIVE').Value  := 0;
    lDtl.FindField('LocalCR').AsFloat    := 200;
    lDtl.FindField('CHANGED').Value      := 'F';
    lDtl.Post;
 
    lBizObj.Save;
    MessageDlg('GL_JE-DocNo : ''--JE Test--'' Posted...', mtInformation, [mbOK],0);
   finally
    lBizObj.Close;
   end;
end;
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<br />


<div style="float: right;">  [[#top|[top]]]</div>
===JScript/JavaScript===
This Script only can run using Internet Explorer (till IE 11)


====GL_PV====
====AR_IV====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! GL_PV Script   
! AR_IV Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_GLPVClick(Sender: TObject);
<html>
var lMain, lDtl, lBizObj, BizApp : Variant;
<head>
    lTime : TDateTime;
<title>Add Customer Invoice</title>
begin
<script language="JScript">
   lTime := Now;
var ComServer;
  BizApp := CreateOleObject('SQLAcc.BizApp');
   try
function CreateSQLAccServer() {
     lBizObj := BizApp.BizObjects.Find('GL_PV');
   ComServer = new ActiveXObject('SQLAcc.BizApp');
    lMain   := lBizObj.DataSets.Find('MainDataSet');
   if (!ComServer.IsLogin) {            /* check whether user has logon */
    lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
    lBizObj.New;
/* UserName, Password */
    lMain.FindField('DOCKEY').Value          := -1;
  }
    lMain.FindField('DocNo').AsString        := '--CB PV Test1--';
}
    lMain.FindField('DocDate').Value          := '18 Aug 2015';
    lMain.FindField('PostDate').Value        := '18 Aug 2015';
function AutoInvoice() {
    lMain.FindField('TAXDATE').Value          := '18 Aug 2015';
  var BizObject, lMainDataSet, lDetailDataSet;
    lMain.FindField('Description').AsString   := 'Compacc System';
    lMain.FindField('PAYMENTMETHOD').AsString := '310-001';
  CreateSQLAccServer();
    lMain.FindField('CHEQUENUMBER').AsString  := 'MBB 213245';
    lMain.FindField('DocAmt').AsFloat        := 2019;
  BizObject = ComServer.BizObjects.Find('AR_IV');
    lMain.FindField('Cancelled').AsString    := 'F';
   lMainDataSet = BizObject.DataSets.Find('MainDataSet');
    lMain.FindField('CHANGED').AsString      := 'F';
  lDetailDataSet = BizObject.DataSets.Find('cdsDocDetail');
    lMain.Post;
  BizObject.New();
  lMainDataSet.FindField('DocKey').value = -1;
  lMainDataSet.FindField('DocNo').value = "--IV Test--";
  lMainDataSet.FindField('DocDate').value = "01/10/2016";
  lMainDataSet.FindField('PostDate').value = "01/10/2016";
   lMainDataSet.FindField('Code').value = "300-A0003";
  lMainDataSet.FindField('Description').value = "Sales";


    lDtl.Append;
  /*For Tax Inclusive = True with override Tax Amount*/
    lDtl.FindField('DTLKEY').Value        := -1;
  lDetailDataSet.Append();
    lDtl.FindField('DOCKEY').Value        := -1;
  lDetailDataSet.FindField('DtlKey').value = -1;
    lDtl.FindField('Code').AsString        := '200-300';
  lDetailDataSet.FindField('DocKey').value = -1;
    lDtl.FindField('DESCRIPTION').AsString := 'Maybank - Asus A555LD-xx313H';
  lDetailDataSet.FindField('Account').value = "500-000";
    lDtl.FindField('TAX').AsString        := 'TX';
  lDetailDataSet.FindField('Description').value = "Sales Item A";
    lDtl.FindField('TAXAMT').AsFloat      := 114.28;
  lDetailDataSet.FindField('Tax').value = "SR";
    lDtl.FindField('TAXINCLUSIVE').Value  := 1;
  lDetailDataSet.FindField('TaxInclusive').value = 0;
    lDtl.FindField('AMOUNT').AsFloat      := 2019;
  lDetailDataSet.FindField('Amount').value = 410.37;
    lDtl.FindField('CHANGED').AsString    := 'F';
  lDetailDataSet.FindField('TaxAmt').value = 24.63;
    lDtl.Post;
    lBizObj.Save;
  lDetailDataSet.DisableControls();
    lTime := Now - lTime;
  lDetailDataSet.FindField('TaxInclusive').value = 1;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
  lDetailDataSet.EnableControls();
              mtInformation, [mbOk], 0);
   finally
  lDetailDataSet.FindField('Changed').value = "F";
    lBizObj.Close;
   lDetailDataSet.Post();
  end;
end;
</syntaxhighlight>
|}


<div style="float: right;">  [[#top|[top]]]</div>
  /*For Tax Inclusive = False with override Tax Amount*/
 
  lDetailDataSet.Append();
====AR_Customer====
  lDetailDataSet.FindField('DtlKey').value = -1;
{| class="mw-collapsible mw-collapsed wikitable"
  lDetailDataSet.FindField('DocKey').value = -1;
! AR_Customer Script  
  lDetailDataSet.FindField('Account').value = "500-000";
|-
  lDetailDataSet.FindField('Description').value = "Sales Item B";
|
  lDetailDataSet.FindField('Tax').value = "SR";
<syntaxhighlight lang="delphi">
  lDetailDataSet.FindField('TaxInclusive').value =  0;
procedure TfmMain.dxbb_CustomerClick(Sender: TObject);
  lDetailDataSet.FindField('Amount').value = 94.43;
var lMain, lDtl, lBizObj, lBizApp : Variant;
  lDetailDataSet.FindField('TaxAmt').value = 5.66;
    lTime : TDateTime;
   lDetailDataSet.FindField('Changed').value = "F";
begin
   lDetailDataSet.Post();
   lTime := Now;
   lBizApp := CreateOleObject('SQLAcc.BizApp');


   lBizObj := lBizApp.BizObjects.Find('AR_Customer');
   /* Save document */
  lMain  := lBizObj.DataSets.Find('MainDataSet');
     BizObject.Save();
  lDtl    := lBizObj.DataSets.Find('cdsBranch');
     BizObject.Close();
 
     alert('Customer Invoice - has been saved.');
  try
}
    lBizObj.New;
</script>
    lMain.FindField('Code').value        := '300-Test';
</head>
    lMain.FindField('CompanyName').value := 'Testing 123';
<body>
 
<input type="submit" value="SYNC" name="btnSubmit" onclick="AutoInvoice()">
    lDtl.Edit; //For 1st Branch
</body>
     lDtl.FindField('BranchName').AsString := 'BILLING';
</html>
     lDtl.FindField('Address1').AsString  := 'Address1';
     lDtl.FindField('Address2').AsString  := 'Address2';
    lDtl.FindField('Address3').AsString  := 'Address3';
    lDtl.FindField('Address4').AsString  := 'Address4';
    lDtl.FindField('Attention').AsString  := 'Attention';
    lDtl.FindField('Phone1').AsString    := 'Phone1';
    lDtl.FindField('Fax1').AsString      := 'Fax1';
    lDtl.FindField('Email').AsString      := 'EmailAddress';
    lDtl.Post;
 
    lDtl.Append; //For 2nd Branch
    lDtl.FindField('BranchName').AsString := 'Branch1';
    lDtl.FindField('Address1').AsString  := 'DAddress1';
    lDtl.FindField('Address2').AsString  := 'DAddress2';
    lDtl.FindField('Address3').AsString  := 'DAddress3';
    lDtl.FindField('Address4').AsString  := 'DAddress4';
    lDtl.FindField('Attention').AsString  := 'DAttention';
    lDtl.FindField('Phone1').AsString    := 'DPhone1';
    lDtl.FindField('Fax1').AsString      := 'DFax1';
    lDtl.FindField('Email').AsString      := 'DEmailAddress';
    lDtl.Post;
    lBizObj.Save;
 
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
  finally
    lBizObj.Close;
  end;
end;
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_PM====
====SL_CS====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! AR_PM Script   
! SL_CS Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_ARPMClick(Sender: TObject);
<html>
var lMain, lKO, lBizApp, lBizObj, V : Variant;
<head>
begin
<title>Add Cash Sales</title>
  lBizApp := CreateOleObject('SQLAcc.BizApp');
<script language="JScript">
  try
var ComServer;
    lBizObj := lBizApp.BizObjects.Find('AR_PM');
    lMain  := lBizObj.DataSets.Find('MainDataSet');
    lKO    := lBizObj.DataSets.Find('cdsKnockOff');


    lBizObj.New;
function CreateSQLAccServer() {
    lMain.FindField('DOCKEY').Value          := -1;
  ComServer = new ActiveXObject('SQLAcc.BizApp');
    lMain.FindField('DocNo').AsString        := '--PM Test--'; //Payment Document Number
  if (!ComServer.IsLogin) {            /* check whether user has logon */
     lMain.FindField('CODE').AsString          := '300-A0001';
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
    lMain.FindField('DocDate').Value          := '28 Aug 2016';
/* UserName, Password */
    lMain.FindField('PostDate').Value        := '28 Aug 2016';
  }
    lMain.FindField('Description').AsString  := 'Payment for A/c';
}
    lMain.FindField('PaymentMethod').AsString := '320-000';
    lMain.FindField('DocAmt').AsFloat        := 1060;
    lMain.FindField('Cancelled').AsString    := 'F';


    V := lBizApp.CreateOleVariantArray(2);
function InsertData() {
    V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
  var BizObject, lMain, lDetail;
    V.SetItem(1, '--IV Test--'); //Invoice Document Number
 
  CreateSQLAccServer();


    if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
  /*Step 2: Find and Create the Biz Objects*/
      begin
  BizObject = ComServer.BizObjects.Find('SL_CS') ;
        lKO.Edit;
        lKO.FindField('KOAmt').ASFloat    := 500;
        lKO.FindField('KnockOff').AsString := 'T';
        lKO.Post;
      end;


    lBizObj.Save;
  /*Step 3: Set Dataset*/
    MessageDlg('AR_PM-DocNo : ''--PM Test--'' Posted...', mtInformation, [mbOK],0);
  lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
   finally
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */ 
    lBizObj.Close;
 
   end;
  /*Begin Looping yr data*/
end;
  /*Step 4 : Insert Data - Master*/
</syntaxhighlight>
  BizObject.New();
|}
  lMain.FindField('DocKey').value        = -1;
 
  lMain.FindField('DocNo').AsString      = "--IV Test--";
<div style="float: right;">   [[#top|[top]]]</div>
  lMain.FindField('DocDate').value        = "20/12/2017";
 
  lMain.FindField('PostDate').value      = "20/12/2017";
====AR_PM-Edit====
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
{| class="mw-collapsible mw-collapsed wikitable"
   lMain.FindField('CompanyName').AsString = "Cash Sales"
! AR_PM Script 
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
|-
   lMain.FindField('Address2').AsString    = ""; /*Optional*/
|
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
<syntaxhighlight lang="delphi">
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
procedure TfmMain.dxbb_ARPMClick(Sender: TObject);
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
var lMain, lKO, lBizApp, lBizObj, V : Variant;
  lMain.FindField('Description').AsString = "Sales";
begin
   
   lBizApp := CreateOleObject('SQLAcc.BizApp');
  /*Step 5: Insert Data - Detail*/
   try
   /*For Tax Inclusive = True with override Tax Amount*/
     lBizObj := lBizApp.BizObjects.Find('AR_PM');
  lDetail.Append();
     lMain   := lBizObj.DataSets.Find('MainDataSet');
  lDetail.FindField('DtlKey').value        = -1;
    lKO    := lBizObj.DataSets.Find('cdsKnockOff');
  lDetail.FindField('DocKey').value        = -1;
  lDetail.FindField('Seq').value            = 1;
  lDetail.FindField('Account').AsString    = "500-000"; /*Sales Account*/
  lDetail.FindField('Description').AsString = "Sales Item A";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString        = "SR";
  lDetail.FindField('TaxRate').AsString    = "6%";
  lDetail.FindField('TaxInclusive').value  = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 435;
  lDetail.FindField('Amount').AsFloat      = 410.37; /*Exclding GST Amt*/
  lDetail.FindField('TaxAmt').AsFloat      = 24.63;
 
  lDetail.DisableControls();
  lDetail.FindField('TaxInclusive').value  = 1;
  lDetail.EnableControls();
 
  lDetail.Post();
 
   /*For Tax Inclusive = False with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('DtlKey').value        = -1;
  lDetail.FindField('DocKey').value        = -1;
   lDetail.FindField('Seq').value            = 2;
  lDetail.FindField('Account').AsString     = "500-000";
  lDetail.FindField('Description').AsString = "Sales Item B";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString        = "SR";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 94.43;
  lDetail.FindField('Amount').AsFloat      = 94.43;
  lDetail.FindField('TaxAmt').AsFloat      = 5.66;
  lDetail.Post();


    lDocKey := lBizObj.FindKeyByRef('DocNo', '--PM Test--');
  /*For With Item Code*/
    lBizObj.Params.Find('DocKey').Value := VarToStr(lDocKey);
  lDetail.Append();
 
  lDetail.FindField('DtlKey').value        = -1;
    If not VarIsNull(lDocKey) Then begin
  lDetail.FindField('DocKey').value        = -1;
      lBizObj.Open;
  lDetail.FindField('Seq').value            = 3;
      lBizObj.Edit;
  lDetail.FindField('ItemCode').AsString    = "ANT";
      lMain.FindField('DOCKEY').Value          := -1;
  lDetail.FindField('Description').AsString = "Sales Item B";
      lMain.FindField('DocDate').Value         := '28 Aug 2016';
  /*lDetail.FindField('Account').AsString    = "500-000"; If you wanted override the Sales Account Code*/
      lMain.FindField('PostDate').Value         := '28 Aug 2016';
  lDetail.FindField('Qty').AsFloat         = 2;
      lMain.FindField('Description').AsString   := 'Payment for A/c';
  lDetail.FindField('UOM').AsString         = "UNIT";
      lMain.FindField('PaymentMethod').AsString := '310-000';
  /*lDetail.FindField('DISC').AsString        = "5%+3"; Optional (eg 5% plus 3 Discount)*/
      lMain.FindField('DocAmt').AsFloat        := 800.28;
  lDetail.FindField('Tax').AsString         = "SR";
      lMain.FindField('UnappliedAmt').AsFloat   := 100.28;
  lDetail.FindField('TaxRate').AsString     = "6%";
      lMain.FindField('Cancelled').AsString    := 'F';
  lDetail.FindField('TaxInclusive').value  = 0;
      lMain.FindField('CHANGED').AsString       := 'F';
  lDetail.FindField('UnitPrice').AsFloat   = 100;
  lDetail.FindField('Amount').AsFloat      = 200;
  lDetail.FindField('TaxAmt').AsFloat       = 12;
  lDetail.Post();


      V := lBizApp.CreateOleVariantArray(2);
  /*Step 6: Save Document*/
      V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
  BizObject.Save();
      V.SetItem(1, '--IV Test--'); //Document Number
  BizObject.Close();
 
    alert('Document has been saved.');
      if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
}
        begin
</script>
          lKO.Edit;
</head>
          lKO.FindField('KOAmt').AsFloat    := 700.28; // IV Knock Off/Offset Amount
<body>
          lKO.FindField('KnockOff').AsString := 'T';
<input type="submit" value="SYNC" name="btnSubmit" onclick="InsertData()">
          lKO.Post;
</body>
        end;
</html>
 
      lBizObj.Save;
      MessageDlg('AR_PM-DocNo : ''--PM Test--'' Updated...', mtInformation, [mbOK],0);
    end;
  finally
    lBizObj.Close;
  end;
end;
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====ST_Item====
====AR_PM====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! ST_Item Script   
! AR_PM Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_ST_ItemClick(Sender: TObject);
<html>
var lMain, lDtl, lBizObj, lBizApp : Variant;
<head>
    lTime : TDateTime;
<title>Customer Payment</title>
begin
<script language="JScript">
  lTime := Now;
<html>
  lBizApp := CreateOleObject('SQLAcc.BizApp');
<head>
  lBizObj := lBizApp.BizObjects.Find('ST_ITEM');
<title>Add Customer Payment</title>
  lMain  := lBizObj.DataSets.Find('MainDataSet');
<script language="JScript">
  lDtl    := lBizObj.DataSets.Find('cdsUOM');
var ComServer;


   try
function CreateSQLAccServer() {
    lBizObj.New;
   ComServer = new ActiveXObject("SQLAcc.BizApp");
     lMain.FindField('Code').AsString        := 'Test-1';
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    lMain.FindField('Description').AsString := 'Testing - Description';
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
  }
}
 
function AddPayment() {
  var BizObject, lMainDataSet, lKnockOffDataSet, V;
 
  CreateSQLAccServer();


    lDtl.Edit; //For 1st UOM
  BizObject = ComServer.BizObjects.Find('AR_PM');
    lDtl.FindField('UOM').AsString    := 'PCS';
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
    lDtl.FindField('Rate').AsFloat    := 1;
  lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
    lDtl.FindField('RefCost').AsFloat := 10.20;
  BizObject.New();
    lDtl.FindField('RefPrice').AsFloat := 25.00;
 
    lDtl.Post;
  lMainDataSet.FindField('DocKey').value = -1;
  lMainDataSet.FindField('DocNo').value = "--OR Test--";
  lMainDataSet.FindField('Code').value = "300-C0001";
  lMainDataSet.FindField('DocDate').value = "10/10/2023";
  lMainDataSet.FindField('PostDate').value = "10/10/2023"; 
  lMainDataSet.FindField('Description').value = "Payment for Account";
  lMainDataSet.FindField('PaymentMethod').value = "310-001";
  lMainDataSet.FindField('ChequeNumber').value = "";
  lMainDataSet.FindField('DocAmt').AsFloat = 106.10;
  lMainDataSet.FindField('BankCharge').AsFloat = 0;
  lMainDataSet.FindField('UnappliedAmt').AsFloat = 0;
  lMainDataSet.FindField('Cancelled').value = 'F';
 
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType*/
  v.SetItem(1, 'IV-00172'); /*Knock Off DocNo*/


    lDtl.Append; //For 2nd UOM
  if (lKnockOffDataSet.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
    lDtl.FindField('UOM').AsString    := 'CTN';
          lKnockOffDataSet.Edit();
    lDtl.FindField('Rate').AsFloat     := 12;
          lKnockOffDataSet.FindField('KOAmt').AsFloat = 106.10;  
    lDtl.FindField('RefCost').AsFloat  := 102.00;
          lKnockOffDataSet.FindField('KnockOff').AsString = 'T';
     lDtl.FindField('RefPrice').AsFloat := 240.00;
          lKnockOffDataSet.Post(); }
     lDtl.Post;
     /* Save document */ 
     lBizObj.Save;
    BizObject.Save();
     BizObject.Close();
     alert("Customer Payment - has been saved.");
}


    lTime := Now - lTime;
function EditPayment(){
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
  var BizObject, lMainDataSet, lKnockOffDataSet, V, lDocNo, lDocKey;
              mtInformation, [mbOk], 0);
    
   finally
   CreateSQLAccServer();
    lBizObj.Close;
   end;
end;
</syntaxhighlight>
|}


<div style="float: right;">   [[#top|[top]]]</div>
  BizObject = ComServer.BizObjects.Find('AR_PM');
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
  lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
 
  lDocNo = "--OR Test--"
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
  BizObject.Params.Find('DocKey').Value = lDocKey;
 
  if (lDocKey != null) {
    BizObject.Open();
    BizObject.Edit();
    lMainDataSet.FindField('Description').value = "Payment for Account-Edited";
    lMainDataSet.FindField('PaymentMethod').value = "310-001";
    lMainDataSet.FindField('ChequeNumber').value = "";
    lMainDataSet.FindField('DocAmt').AsFloat = 200.00;
    lMainDataSet.FindField('BankCharge').AsFloat = 0;
    lMainDataSet.FindField('UnappliedAmt').AsFloat = 0;
    lMainDataSet.FindField('Cancelled').value = 'F';
    
    v = ComServer.CreateOleVariantArray(2);
    v.SetItem(0, 'IV'); /*Knock Off DocType*/
    v.SetItem(1, 'IV-00172'); /*Knock Off DocNo*/


====ST_Item-Edit====
    if (lKnockOffDataSet.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
{| class="mw-collapsible mw-collapsed wikitable"
          lKnockOffDataSet.Edit();
! ST_Item Script 
          lKnockOffDataSet.FindField('KOAmt').AsFloat = 200;  
|-
          lKnockOffDataSet.FindField('KnockOff').AsString = 'T';
|
          lKnockOffDataSet.Post(); }
<syntaxhighlight lang="delphi">
    /* Save document */ 
procedure TfmMain.dxbb_ST_ItemClick(Sender: TObject);
      BizObject.Save();
var lMain, lDtl, lBizObj, lBizApp, lDocKey, V : Variant;
      BizObject.Close();
begin
      alert("Customer Payment - has been Edited & saved.");
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  }
  lBizObj := lBizApp.BizObjects.Find('ST_ITEM');
}
  lMain  := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsUOM');


   lDocKey := lBizObj.FindKeyByRef('Code', '--Stock Item Test--');
function DelPayment(){
   lBizObj.Params.Find('DocKey').Value := VarToStr(lDocKey);
   var BizObject, lMainDataSet, lKnockOffDataSet, V, lDocNo, lDocKey;
  try
    
  CreateSQLAccServer();


    If not VarIsNull(lDocKey) Then begin
  BizObject = ComServer.BizObjects.Find('AR_PM');
      lBizObj.Open;
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
      lBizObj.Edit;
  lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
      lMain.FindField('Description').value := 'Testing - Description';
 
  lDocNo = "--OR Test--"
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
  BizObject.Params.Find('DocKey').Value = lDocKey;
 
  if (lDocKey != null) {
    BizObject.Open();
    BizObject.Delete();


      V := lBizApp.CreateOleVariantArray(2);
    BizObject.Close();
      V.SetItem(0, 'CTN'); //UOM
    alert("Customer Payment - has been Deleted.");
      V.SetItem(1, '12');  //Rate
  }
 
}
      if lDtl.Locate('UOM;Rate', V.AsOleVariant, False, False) then
</script>
        begin
</head>
          lDtl.Edit;
<body>
          lDtl.FindField('RefCost').AsFloat  := 10.20;
<input type="submit" value="Add Payment" name="btnSubmit" onclick="AddPayment()">
          lDtl.FindField('RefPrice').AsFloat := 25.00;
<input type="submit" value="Edit Payment" name="btnSubmit" onclick="EditPayment()">
          lDtl.Post;
<input type="submit" value="Delete Payment" name="btnSubmit" onclick="DelPayment()">
        end;
</body>
      lBizObj.Save;
</html>
 
      MessageDlg('ST_Item-ItemCode : ''--Stock Item Test--'' Updated...', mtInformation, [mbOK],0);
    end;
  finally
    lBizObj.Close;
  end;
end;
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====SL_IV====
====Customer.IV.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! SL_IV Script   
! Customer.IV.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_SL_IVClick(Sender: TObject);
<html>
var lMain, lDtl, lSN, lBizObj, lBizApp : Variant;
  <head>
     lTime : TDateTime;
     <title>Customer.IV.RO</title>
begin
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  lTime := Now;
     <script type="text/javascript">
  lBizApp := CreateOleObject('SQLAcc.BizApp');
var ComServer;
  lBizObj := lBizApp.BizObjects.Find('SL_IV');
  lMain  := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
  lSN     := lBizObj.DataSets.Find('cdsSerialNumber');


  try
function CreateSQLAccServer() {
    lBizObj.New;
  ComServer = new ActiveXObject("SQLAcc.BizApp");
    lMain.FindField('DOCKEY').Value        := -1;
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    lMain.FindField('DocNo').AsString      := '--IV Test--';
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
    lMain.FindField('CODE').AsString        := '300-A0001';
/* UserName, Password */
     lMain.FindField('DocDate').Value        := '28 Aug 2020';
   }
    lMain.FindField('PostDate').Value      := '28 Aug 2020';
}     
    lMain.FindField('TAXDATE').Value        := '28 Aug 2020';
    lMain.FindField('Description').AsString := 'Sales';
    lMain.FindField('Cancelled').AsString   := 'F';
    lMain.Post;


    lDtl.Append; // For Tax Inclusive = True with override Tax Amount
function GetData() { 
    lDtl.FindField('DTLKEY').Value        := -1;
  var lMain, lDetail, lRptVar, lDateFrom, lDateTo;
    lDtl.FindField('DOCKEY').Value        := -1;
 
    lDtl.FindField('SEQ').Value            := 1;
  elem = document.getElementById('txt1');
    lDtl.FindField('ItemCode').AsString    := 'ITEM A';
 
    lDtl.FindField('ACCOUNT').AsString    := '500-000'; //GL Sales Account
  CreateSQLAccServer();
    lDtl.FindField('DESCRIPTION').AsString := 'Sales Item A';
 
    lDtl.FindField('QTY').AsFloat          := 1;
  lDateFrom = new Date("January 1 2015");
    lDtl.FindField('TAX').AsString        := 'SV';
  lDateTo = new Date("December 31, 2015");  
    lDtl.FindField('TAXINCLUSIVE').Value  := 0;
 
    lDtl.FindField('UNITPRICE').AsFloat    := 435;//Including GST UnitPrice
  lRptVar = ComServer.RptObjects.Find('Customer.IV.RO');
    lDtl.FindField('AMOUNT').AsFloat      := 410.37; //Must Excluding GST (Qty * UnitPrice) // Less 0.01
  lRptVar.Params.Find('SelectDate').Value          = true;
    lDtl.FindField('TAXAMT').AsFloat      := 24.63; //Extra 0.01
  lRptVar.Params.Find('DateFrom').Value            = lDateFrom.valueOf();
 
  lRptVar.Params.Find('DateTo').Value              = lDateTo.valueOf();
    lDtl.DisableControls; //For Tax Inclusive Only where TaxAmt is not as Calc
  lRptVar.Params.Find('AllAgent').Value            = false;
    try
  lRptVar.Params.Find('AgentData').Value            = "----\nLF"; /*Filter by Agent code ---- & HALIM */
      lDtl.FindField('TAXINCLUSIVE').Value := 1;
  lRptVar.Params.Find('AllArea').Value              = true;
    finally
  lRptVar.Params.Find('AllCompany').Value           = true;
      lDtl.EnableControls;
  lRptVar.Params.Find('AllCurrency').Value         = true;
    end;
  lRptVar.Params.Find('AllDocProject').Value       = true;
    lDtl.Post;
  lRptVar.Params.Find('AllCompanyCategory').Value   = true;
 
  lRptVar.Params.Find('AllDocument').Value          = true;
    lDtl.Append; // For Tax Inclusive = False with override Tax Amount
  lRptVar.Params.Find('IncludeCancelled').Value  = false;
    lDtl.FindField('DTLKEY').Value         := -1;
  lRptVar.Params.Find('PrintDocumentStyle').Value = false;
    lDtl.FindField('DOCKEY').Value         := -1;
  lRptVar.Params.Find('AllItemProject').Value    = true;
    lDtl.FindField('SEQ').Value           := 2;
  lRptVar.Params.Find('AllPaymentMethod').Value  = true;
    lDtl.FindField('ItemCode').AsString    := 'ITEM B';
  lRptVar.CalculateReport()
    lDtl.FindField('ACCOUNT').AsString    := '500-000';
 
    lDtl.FindField('DESCRIPTION').AsString := 'Sales Item B';
  lMain   = lRptVar.DataSets.Find('cdsMain');
    lDtl.FindField('QTY').AsFloat          := 1;
  lDetail = lRptVar.DataSets.Find('cdsDocDetail');
    lDtl.FindField('TAX').AsString        := 'SV';
  /*alert("Count -" + lRptVar.DataSets.Find('cdsDocDetail').RecordCount);*/
    lDtl.FindField('TAXINCLUSIVE').Value   := 0;
  elem.innerHTML += 'From Main'+'\n';
    lDtl.FindField('UNITPRICE').AsFloat    := 94.43;
      
    lDtl.FindField('AMOUNT').AsFloat      := 94.43;
  lMain.First();  
    lDtl.FindField('TAXAMT').AsFloat      := 5.66; //Less 0.01
  while (!lMain.eof) {
    lDtl.Post;
    elem.innerHTML += lMain.FindField('DocKey').AsString + ' ' +
 
                  lMain.FindField('DocNo').AsString + ' ' + lMain.FindField('DocDate').AsString + ' '+
     lDtl.Append; // For Serial Number
                      lMain.FindField('CompanyName').AsString + ' ' + lMain.FindField('DocAmt').AsString + '\n';
    lDtl.FindField('DTLKEY').Value        := -1;
lMain.Next();
    lDtl.FindField('DOCKEY').Value        := -1;
  }
    lDtl.FindField('SEQ').Value            := 3;
  elem.innerHTML += 'End Main'+'\n\n';
    lDtl.FindField('ItemCode').AsString   := 'SN1';
 
    lDtl.FindField('ACCOUNT').AsString     := '500-000';
  elem.innerHTML += 'From Detail'+'\n';
    lDtl.FindField('DESCRIPTION').AsString := 'Sales Serial Number Item';
  lDetail.First();  
 
  while (!lDetail.eof) {
    lSN.Append;
     elem.innerHTML += lDetail.FindField('Dockey').AsString + ' ' + lDetail.FindField('Account').AsString + ' ' +
    lSN.FindField('SERIALNUMBER').AsString := 'SN-00001';
                  lDetail.FindField('Description').AsString + ' ' + lDetail.FindField('Amount').AsString + '\n';
    lSN.Post;
lDetail.Next();
 
  } 
    lSN.Append;
  elem.innerHTML += 'End Detail'+'\n\n';
    lSN.FindField('SERIALNUMBER').AsString  := 'SN-00002';
}
    lSN.Post;
 
 
     </script>
     lDtl.FindField('QTY').AsFloat        := 2;
  </head>
    lDtl.FindField('TAX').AsString       := 'SR';
   <body>
    lDtl.FindField('TAXINCLUSIVE').Value := 0;
     <form>
    lDtl.FindField('UNITPRICE').AsFloat  := 94.43;
      <textarea id="txt1" rows="30" cols="116"></textarea>
    lDtl.FindField('TAXAMT').AsFloat    := 11.33;
      <input type="button" value="Calculate" onclick="GetData()">
    lDtl.Post;
     </form>
 
   </body>
    lBizObj.Save;
</html>
 
    lTime := Now - lTime;
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
   finally
     lBizObj.Close;
    lMain := null;
    lDtl := null;
    lSN := null;
    lBizObj := null;
     lBizApp := null;
   end;
end;
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Customer.IV.RO====
====Customer.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.IV.RO Report Object Script   
! Customer.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_RptObjClick(Sender: TObject);
<html>
var lBizApp, lRptVar : Variant;
<head>
    lTime : TDateTime;
<title>Add Customer Invoice</title>
    cdsMain, cdsDtl : TClientDataset;
<script language='JScript'>
begin
var ComServer;
  lTime := Now;
   
  cdsMain := TClientDataset.Create(nil);
function CreateSQLAccServer() {
  cdsDtl := TClientDataset.Create(nil);
   ComServer = new ActiveXObject('SQLAcc.BizApp');
   lBizApp := CreateOleObject('SQLAcc.BizApp');
   if (!ComServer.IsLogin) {           /* check whether user has logon */
   try
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
    lRptVar := null;
/* UserName, Password */
    lRptVar := lBizApp.RptObjects.Find('Customer.IV.RO');
   }
    lRptVar.Params.Find('SelectDate').AsBoolean          := True;
}
    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2015';
    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2015';
    lRptVar.Params.Find('AllAgent').AsBoolean            := False;
    lRptVar.Params.Find('AgentData').AsBlob              := '----'#13#10'HALIM'; //Filter by Agent code ---- & HALIM
    lRptVar.Params.Find('AllArea').AsBoolean              := True;
//    lRptVar.Params.Find('AreaData').AsBlob                := ; //Not use if AllArea is True
    lRptVar.Params.Find('AllCompany').AsBoolean          := True;
//    lRptVar.Params.Find('CompanyData').AsBlob            := ; //Not use if AllCompany is True
    lRptVar.Params.Find('AllCurrency').AsBoolean          := True;
//    lRptVar.Params.Find('CurrencyData').AsBlob           := ; //Not use if AllCurrenty is True
     lRptVar.Params.Find('AllDocProject').AsBoolean        := True;
//    lRptVar.Params.Find('DocProjectData').AsBlob          := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean  := True;
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob    := ; //Not use if AllCompanyCategory is True
    lRptVar.Params.Find('AllDocument').AsBoolean          := True;
//   lRptVar.Params.Find('DocumentData').AsBlob            := ; //Not use if AllDocument is True
    lRptVar.Params.Find('IncludeCancelled').AsBoolean  := True;
    lRptVar.Params.Find('PrintDocumentStyle').AsBoolean := False;
    lRptVar.Params.Find('AllItemProject').AsBoolean    := True;
    lRptVar.Params.Find('AllPaymentMethod').AsBoolean   := True;
    lRptVar.CalculateReport;


    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;     //Master Data
function GetCustomerData() {
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocDetail').XMLData; //Detail Data - To link Master Data use Dockey field
  var RptObject, lDataSet, lDataSet2;
  edOutput.value = '';
  edOutput2.value = '';
  //Step 1: Create Com Server object
  CreateSQLAccServer();
 
  //Step 2: Find and Create the Report Objects
  RptObject = ComServer.RptObjects.Find('Customer.RO');
 
  //Step 3: Spool parameters
  RptObject.Params.Find('AllAgent').Value = true;
  RptObject.Params.Find('AllArea').Value = true;
  RptObject.Params.Find('AllCompany').Value = true;
  RptObject.Params.Find('AllCompanyCategory').Value = true;
  RptObject.Params.Find('AllCurrency').Value = true;
  RptObject.Params.Find('AllTerms').Value = true;
  RptObject.Params.Find('SelectDate').Value = true;
  RptObject.Params.Find('PrintActive').Value = true;
  RptObject.Params.Find('PrintInactive').Value = false;
  RptObject.Params.Find('PrintPending').Value = false;
  RptObject.Params.Find('PrintProspect').Value = false;
  RptObject.Params.Find('PrintSuspend').Value = false;
  //RptObject.Params.Find('CompanyData').Value = '300-A0003';
 
  //Step 4: Perform Report calculation
  RptObject.CalculateReport();
  lDataSet = RptObject.DataSets.Find('cdsMain');
  lDataSet2 = RptObject.DataSets.Find('cdsBranch');
 
  //alert('Count ' + lDataSet.RecordCount);


     cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
  //Step 5 Retrieve the output
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml'); //Export To XML file
  lDataSet.First;
  while  (!lDataSet.eof){
     edOutput.value = edOutput.value +
                'Code : ' + lDataSet.FindField('Code').AsString + '\n' +
                'Company Name : ' + lDataSet.FindField('CompanyName').AsString +'\n\n';
lDataSet.Next();
  }
  lDataSet2.First();
  while (!lDataSet2.eof){
  edOutput2.value = edOutput2.value +
                  'Code : '+ lDataSet2.FindField('Code').AsString + '\n' +
  'Branch Name : '+ lDataSet2.FindField('BranchName').AsString + '\n' +
                  'Address 1 : '+ lDataSet2.FindField('Address1').AsString + '\n' +
  'Address 2 : '+ lDataSet2.FindField('Address2').AsString + '\n' +
  'Address 3 : '+ lDataSet2.FindField('Address3').AsString + '\n' +
  'Address 4 : '+ lDataSet2.FindField('Address4').AsString + '\n' +
  'Phone 1 : '+ lDataSet2.FindField('Phone1').AsString  +'\n\n';
  lDataSet2.Next();
    }
}


     lTime := Now - lTime;
</script>
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
</head>
              mtInformation, [mbOk], 0);
<body>
   finally
  <table>
    lRptVar := null;
     <tr>
    cdsMain.Free;
      <th>Main Table</th>
    cdsDtl.Free;
      <th>Branch Branch</th>
  end;
    </tr>
end;
    <tr>
      <td>
        <TEXTAREA rows=15 cols=75 name="edOutput"></TEXTAREA>
  </td>
      <td>
        <TEXTAREA rows=15 cols=75 name="edOutput2"></TEXTAREA>
  </td>
     </tr>
  </table>
  <table width="83%">
<tr>
  <td align="center">
<input type='submit' value='Sync Data' name='btnSubmit' onclick='GetCustomerData()'>
  </td>
</tr>
   </table>
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Stock.Item.RO====
====Get Next IV Number====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Stock.Item.RO Report Object Script   
! Get Next IV Number Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_ST_ITEM_ROClick(Sender: TObject);
<html>
var lBizApp, lRptVar : Variant;
<head>
    lTime : TDateTime;
<title>Add Cash Sales</title>
    cdsMain, cdsDtl, cdsCat : TClientDataset;
<script language="JScript">
    lSQL : string;
var ComServer, lDataSet;
begin
  lTime    := Now;
  cdsMain  := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  cdsCat  := TClientDataset.Create(nil);


   lBizApp := CreateOleObject('SQLAcc.BizApp');
function CreateSQLAccServer() {
   ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
  }
}


   lSQL := 'SELECT * FROM ST_ITEM_CATEGORY ' +
function zeroPad(num, places) {
          'WHERE Category IN (''B-MOTOLORA'',''B-MAXIS'')';
   var zero = places - num.toString().length + 1;
   cdsCat.Data := lBizApp.DBManager.Execute(lSQL); //For filtering Category only
  return Array(+(zero > 0 && zero)).join("0") + num;
   /*zeroPad(5, 2); // "05"*/
}


  try
function GetData() {
    lRptVar := null;
  var lSQL;
    lRptVar := lBizApp.RptObjects.Find('Stock.Item.RO');
  lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A ";
    lRptVar.Params.Find('AllItem').AsBoolean              := True;
  lSQL = lSQL + "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) ";
    lRptVar.Params.Find('AllStockGroup').AsBoolean        := True;
  lSQL = lSQL + "WHERE A.DOCTYPE='IV' ";
    lRptVar.Params.Find('AllCustomerPriceTag').AsBoolean  := True;
  lSQL = lSQL + "AND A.DESCRIPTION='Customer Invoice' ";
    lRptVar.Params.Find('AllSupplierPriceTag').AsBoolean  := True;
  lSQL = lSQL + "AND A.STATESET=1 ";
//    lRptVar.Params.Find('CategoryData').AsBlob            := ; //Not use
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
//    lRptVar.Params.Find('CategoryTpl').AsBlob            := ; //Not use
}
//    lRptVar.Params.Find('CustomerPriceTagData').AsBlob    := ; //Not use if AllCustomerPriceTag is True
//    lRptVar.Params.Find('SupplierPriceTagData').AsBlob    := ; //Not use if AllSupplierPriceTag is True
//    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2015'; //Not use if SelectDate is False
//    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2015';
    lRptVar.Params.Find('HasAltStockItem').AsBoolean      := False;
    lRptVar.Params.Find('HasBarcode').AsBoolean          := False;
    lRptVar.Params.Find('HasBOM').AsBoolean              := False;
    lRptVar.Params.Find('HasCategory').AsBoolean          := False;
    lRptVar.Params.Find('HasCustomerItem').AsBoolean      := False;
    lRptVar.Params.Find('HasOpeningBalance').AsBoolean    := False;
    lRptVar.Params.Find('HasPurchasePrice').AsBoolean    := False;
    lRptVar.Params.Find('HasSellingPrice').AsBoolean      := False;
    lRptVar.Params.Find('HasSupplierItem').AsBoolean      := False;
//    lRptVar.Params.Find('ItemData').AsBlob                := 'ANT 1.0'#13#10'COVER'; //Filter by Item code ANT 1.0 & COVER
//    lRptVar.Params.Find('ItemCategoryData').AsBlob        := cdsCat.XMLData; //Not use if SelectCategory is False
    lRptVar.Params.Find('PrintActive').AsBoolean          := True;
    lRptVar.Params.Find('PrintInActive').AsBoolean        := True;
    lRptVar.Params.Find('PrintNonStockControl').AsBoolean := True;
    lRptVar.Params.Find('PrintStockControl').AsBoolean    := True;
    lRptVar.Params.Find('SelectCategory').AsBoolean      := False;
    lRptVar.Params.Find('SelectDate').AsBoolean          := False;
    lRptVar.Params.Find('SortBy').AsString                  := 'Code';
//    lRptVar.Params.Find('StockGroupData').AsBlob        := ; //Not use if AllStockGroup is True
    lRptVar.CalculateReport;


    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData; //Master Data
function ShowNextNo() {
    cdsDtl.XMLData := lRptVar.DataSets.Find('cdsUOM').XMLData; //Detail Data - To link Master Data use Code field
  var Desc, Fmt, NextNo, lResult, lPad;
 
  CreateSQLAccServer();  
  GetData();


    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
  if (lDataSet.RecordCount > 0)
     cdsDtl.SaveToFile('C:\Temp\_ListD.xml'); //Export To XML file
    lDataSet.First;
 
     Desc = lDataSet.FindField("Description").AsString;
    lTime := Now - lTime;
Fmt  = lDataSet.FindField("Format").AsString;
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
NextNo = lDataSet.FindField("NEXTNUMBER").Value;
              mtInformation, [mbOk], 0);
     alert(Desc);
  finally
alert(Fmt);
    lRptVar := null;
alert(NextNo);
    cdsMain.Free;
    cdsDtl.Free;
lPad = Fmt.substr(5, 1);
    cdsCat.Free;
lPad = zeroPad(NextNo, lPad)
   end;
Desc = Fmt.substr(0, 3);
end;
alert(Desc + lPad);
   }
}
</script>
</head>
<body>
<input type="submit" value="Show Next No" name="btnSubmit" onclick="ShowNextNo()">
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer & Supplier Contra====
====Customer.Statement.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.Statement.RO Report Object Script   
! Customer & Supplier Contra Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_StatementClick(Sender: TObject);
<html>
var lBizApp, lRptVar : Variant;
<head>
    lTime : TDateTime;
<title>Add Customer Invoice</title>
    cdsMain, cdsDtl : TClientDataset;
<script language="JScript">
    s : string;
var ComServer;
begin
  lTime := Now;
function CreateSQLAccServer() {
  cdsMain := TClientDataset.Create(nil);
   ComServer = new ActiveXObject('SQLAcc.BizApp');
  cdsDtl  := TClientDataset.Create(nil);
  if (!ComServer.IsLogin) {            /* check whether user has logon */
  lBizApp := CreateOleObject('SQLAcc.BizApp');
     ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
  s := '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>'+
/* UserName, Password */
      '<FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>'+
  }
      '<FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>'+
}
      '<FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>'+
      '</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>'+
function PostARCT() {
      '<ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>'+
  var BizObject, lMain, lKO, V;
      '<ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>'+
  CreateSQLAccServer();
      '<ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>'+
  BizObject = ComServer.BizObjects.Find('AR_CT');
      '<ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>'+
  lMain = BizObject.DataSets.Find('MainDataSet');
      '</ROWDATA></DATAPACKET>';
  lKO = BizObject.DataSets.Find('cdsKnockOff');
   try
  BizObject.New();
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.Statement.RO');
  lMain.FindField('DocKey').value = -1;
//  lRptVar.Params.Find('AgentData').AsBlob              := ; //Not use if AllAgent is True
   lMain.FindField('DocNo').value = "--CT Test--";
     lRptVar.Params.Find('AgingData').AsString          := s; //Fixed
  lMain.FindField('DocDate').value = "01/10/2020";
    lRptVar.Params.Find('AgingOn').AsString            := 'I'; //Fixed
  lMain.FindField('PostDate').value = "01/10/2020";
    lRptVar.Params.Find('AllAgent').AsBoolean          := True;
  lMain.FindField('Code').value = "300-A0002";
    lRptVar.Params.Find('AllArea').AsBoolean            := True;
  lMain.FindField('Description').value = "Contra";
    lRptVar.Params.Find('AllCompany').AsBoolean        := False;
  lMain.FindField('DocAmt').value = "100.00";
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean := True;
  //lMain.FindField('UnappliedAmt').value = "0";
    lRptVar.Params.Find('AllControlAccount').AsBoolean  := True;
    lRptVar.Params.Find('AllCurrency').AsBoolean        := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean      := True;
//    lRptVar.Params.Find('AreaData').AsBlob              := ; //Not use if AllArea is True
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob   := ; //Not use if AllCompanyCategory is True
    lRptVar.Params.Find('CompanyData').AsBlob          := '300-A0001'#13#10'300-C0001'; //Filter by Customer Code 300-A0001 & 300-C0001
//    lRptVar.Params.Find('ControlAccountData').AsBlob    := ; //Not use if AllControlAccount is True
//    lRptVar.Params.Find('CurrencyData').AsBlob          := ; //Not use if AllCurrency is True
    lRptVar.Params.Find('DateFrom').AsDate              := '01 Aug 2016';
    lRptVar.Params.Find('DateTo').AsDate                := '31 Aug 2016';
//   lRptVar.Params.Find('DocProjectData').AsBlob        := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('IncludeZeroBalance').AsBoolean := False;
    lRptVar.Params.Find('SelectDate').AsBoolean        := True;
    lRptVar.Params.Find('SortBy').AsString              := 'CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount';
    lRptVar.Params.Find('StatementDate').AsDate        := '31 Aug 2016'; // Norm same as DateTo
    lRptVar.Params.Find('StatementType').AsString      := 'O'; //O := Open Item, B := B/F


    lRptVar.CalculateReport;
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType*/
  v.SetItem(1, 'IV-00021'); /*Knock Off DocNo*/


    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;     //Master Data
  if (lKO.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
     cdsDtl.XMLData := lRptVar.DataSets.Find('cdsDocument').XMLData; //Detail Data - To link Master Data use Code field
          lKO.Edit();
          lKO.FindField('DocAmt').value = "100";  
          lKO.FindField('KnockOff').AsString = 'T';
          lKO.Post(); }
 
  /* Save document */
     BizObject.Save();
    BizObject.Close();
    alert('Customer Contra - has been saved.');
}
 
function PostAPST() {
  var BizObject, lMain, lKO, V, lDocNo, lDocKey;
  CreateSQLAccServer();
   
  BizObject = ComServer.BizObjects.Find('AP_ST');
  lMain = BizObject.DataSets.Find('MainDataSet');
  lKO = BizObject.DataSets.Find('cdsKnockOff');
 
  lDocNo = "--CT Test--"
  lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  BizObject.Params.Find("DocKey").Value = lDocKey 
 
  if (lDocKey != null) {
    BizObject.Open();
BizObject.Edit();
lMain.FindField('Code').value = "400-C0001";
lMain.FindField('DocAmt').value = "100.00";
  //lMain.FindField('UnappliedAmt').value = "0";
 
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'PI'); /*Knock Off DocType*/
  v.SetItem(1, 'PI-00001'); /*Knock Off DocNo*/


     cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
     if (lKO.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml'); //Export To XML file
          lKO.Edit();
          lKO.FindField('DocAmt').value = "100";  
          lKO.FindField('KnockOff').AsString = 'T';
          lKO.Post(); }


     lTime := Now - lTime;
  /* Save document */ 
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
     BizObject.Save();
              mtInformation, [mbOk], 0);
     BizObject.Close();
   finally
    alert('Supplier Contra - has been Updated.');
    lRptVar := null;
   }
    cdsMain.Free;
}
    cdsDtl.Free;
</script>
  end;
</head>
end;
<body>
<button onclick="javascript:PostARCT();">PostARCT</button>&nbsp;&nbsp;
<button onclick="javascript:PostAPST();">PostAPST</button>&nbsp;&nbsp;
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====GL Account List For Sales & Purchase 1====
====Add Stock Item====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! GL_Acc Object Script   
! Add ST_Item Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_GLAccClick(Sender: TObject);
<html>
var BizApp : Variant;
<head>
    lDataSet : TClientDataSet;
<title>Add Stock Item</title>
    ASQL : String;
<script language="JScript">
begin
var ComServer;
  //For Debtor List => SpecialAccType = DR
  //For Creditor List => SpecialAccType = CR
  BizApp := CreateOleObject('SQLAcc.BizApp');
  lDataSet := TClientDataSet.Create(Self);
  try
    ASQL := 'SELECT A.Code, A.Description FROM GL_ACC A '+
            'LEFT OUTER JOIN GL_ACC B ON (A.Dockey=B.Parent) '+
            'WHERE A.Parent<>-1 ' +
            'AND B.Dockey IS NULL ' +
            'AND A.SpecialAccType = '''' '+
            'ORDER BY A.CODE ';
    lDataSet.Data := BizApp.DBManager.Execute(ASQL);
    lDataset.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file
  finally
    lDataSet.Free;
  end;
end;
</syntaxhighlight>
|}


<div style="float: right;">   [[#top|[top]]]</div>
function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
   }
}


====GL Account List For Sales & Purchase 2====
function InsertData() {
{| class="mw-collapsible mw-collapsed wikitable"
  var BizObject, lMain, lDetail;
! GL_Acc Object Script 
    
|-
   CreateSQLAccServer();
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_GLAccClick(Sender: TObject);
var BizApp, BizObj : Variant;
    lDataSet1, lDataSet2 : TClientDataSet;
    ASQL : String;
begin
   //For Debtor List => SpecialAccType = DR
  //For Creditor List => SpecialAccType = CR
  BizApp := CreateOleObject('SQLAcc.BizApp');
   BizObj := BizApp.BizObjects.Find('GL_Acc');


   lDataSet1 := TClientDataSet.Create(Self);
   /*Step 2: Find and Create the Biz Objects*/
   lDataSet2 := TClientDataSet.Create(Self);
   BizObject = ComServer.BizObjects.Find('ST_ITEM') ;
  try
    ASQL :='Parent<>-1 ' +
          'AND (SpecialAccType IS NULL OR SpecialAccType = '''' ' +
          'OR SpecialAccType = '''') ';
    lDataSet1.XMLData:= BizObj.Select('Dockey,Code,Description', ASQL, 'Code', 'SX', '', '');


    lDataSet2.XMLData:= BizObj.Select('Parent', '', 'Code', 'SX', '', '');
  /*Step 3: Set Dataset*/
  lMain  = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lUOM = BizObject.DataSets.Find('cdsUOM'); /*lDetail contains detail data */ 
 
  /*Begin Looping yr data*/
  /*Step 4 : Insert Data - Master*/
  BizObject.New();
  lMain.FindField('Code').AsString        = "Code JScript";
  lMain.FindField('DESCRIPTION').AsString = "Post from JScript"
  lMain.FindField('STOCKGROUP').AsString    = "DEFAULT"; /*Optional*/
  lMain.FindField('STOCKCONTROL').AsString    = "T"; /*Optional*/
  lMain.FindField('ISACTIVE').AsString    = "T"; /*Optional*/
   
  /*Step 5: Insert Data - UOM*/
  lUOM.Edit(); /*For 1St UOM*/
  lUOM.FindField('UOM').AsString = "PCS";
  lUOM.FindField('Rate').AsFloat = 1;
  lUOM.FindField('RefCost').AsFloat = 10.2;
  lUOM.FindField('RefPrice').AsFloat = 25;
  lUOM.Post();


    lDataset2.First; // Remove Parent Account
  lUOM.Append(); /*For 2nd UOM*/
    while not lDataset2.Eof do begin
  lUOM.FindField('UOM').AsString = "CTN";
      if lDataset1.Locate('Dockey', lDataSet2.FindField('Parent').AsString, []) then
  lUOM.FindField('Rate').AsFloat = 12;
        lDataset1.Delete;
  lUOM.FindField('RefCost').AsFloat = 102;
      lDataset2.Next;
  lUOM.FindField('RefPrice').AsFloat = 240;
    end;
  lUOM.Post();
    lDataset1.MergeChangeLog;
 
     lDataset1.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file
  /*Step 6: Save*/
  finally
  BizObject.Save();
    lDataSet1.Free;
  BizObject.Close();
    lDataSet2.Free;
     alert('Item has been saved.');
  end;
}
end;
</script>
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="InsertData()">
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Customer.Aging.RO====
====Get Company Profile====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Aging Report Object Script   
! Get Company Profile Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="javascript">
procedure TfmMain.dxbb_AgingClick(Sender: TObject);
<html>
var lBizApp, lRptVar : Variant;
<head>
    lTime : TDateTime;
<title>Add Cash Sales</title>
    cdsMain, cdsDtl : TClientDataset;
<script language="JScript">
    s : string;
var ComServer, lDataSet;
begin
 
   lTime := Now;
function CreateSQLAccServer() {
   cdsMain := TClientDataset.Create(nil);
   ComServer = new ActiveXObject('SQLAcc.BizApp');
  cdsDtl  := TClientDataset.Create(nil);
   if (!ComServer.IsLogin) {            /* check whether user has logon */
  lBizApp := CreateOleObject('SQLAcc.BizApp');
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
/* UserName, Password */
  }
}


   s := '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>'+
function zeroPad(num, places) {
      '<FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>'+
   var zero = places - num.toString().length + 1;
      '<FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>'+
  return Array(+(zero > 0 && zero)).join("0") + num;
      '<FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>'+
  /*zeroPad(5, 2); // "05"*/
      '</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>'+
}
      '<ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>'+
      '<ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>'+
      '</ROWDATA></DATAPACKET>';
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.Aging.RO');
    lRptVar.Params.Find('ActualGroupBy').AsString      := 'Code;CompanyName'; //Fixed
//    lRptVar.Params.Find('AgentData').AsBlob              := ; //Not use if AllAgent is True
    lRptVar.Params.Find('AgingData').AsString          := s;
    lRptVar.Params.Find('AgingDate').AsDate            := '31 Aug 2016';
    lRptVar.Params.Find('AgingOn').AsString            := 'I'; //Fixed
    lRptVar.Params.Find('AllAgent').AsBoolean          := True;
    lRptVar.Params.Find('AllArea').AsBoolean            := True;
    lRptVar.Params.Find('AllCompany').AsBoolean        := True;
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean := True;
    lRptVar.Params.Find('AllControlAccount').AsBoolean  := True;
    lRptVar.Params.Find('AllCurrency').AsBoolean        := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean      := True;
//   lRptVar.Params.Find('AreaData').AsBlob            := ; //Not use if AllArea is True
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob := ; //Not use if AllCompanyCategory is True
//    lRptVar.Params.Find('CompanyData').AsBlob        := ; //Not use if AllCompany is True
//    lRptVar.Params.Find('ControlAccountData').AsBlob  := ; //Not use if AllControlAccount is True
//    lRptVar.Params.Find('CurrencyData').AsBlob        := ; //Not use if AllCurrency is True
//    lRptVar.Params.Find('DocProjectData').AsBlob      := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('FilterPostDate').AsBoolean      := True;
//    lRptVar.Params.Find('GroupBy
    lRptVar.Params.Find('IncludePDC').AsBoolean        := False;
    lRptVar.Params.Find('IncludeZeroBalance').AsBoolean := False;
    lRptVar.Params.Find('SortBy').AsString              := 'Code;CompanyName';
    lRptVar.Params.Find('DateTo').AsDate                := '31 Aug 2016';
    lRptVar.Params.Find('IncludeKnockedOffDetail').AsBoolean := False;


    lRptVar.CalculateReport;
function GetData() {
  var lSQL;
  lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, ";
  lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, ";
  lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
}


    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;     //Master Data
function ShowCoProfile() {
    cdsDtl.XMLData := lRptVar.DataSets.Find('cdsDocument').XMLData; //Detail Data - To link Master Data use Code field
  var CoName, Rmk, BRN;
 
  CreateSQLAccServer();  
  GetData();


    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
  if (lDataSet.RecordCount > 0)
     cdsDtl.SaveToFile('C:\Temp\_ListD.xml'); //Export To XML file
    lDataSet.First;
 
     CoName = lDataSet.FindField("COMPANYNAME").AsString;
    lTime := Now - lTime;
Rmk  = lDataSet.FindField("REMARK").AsString;
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
BRN = lDataSet.FindField("BRN").Value;
              mtInformation, [mbOk], 0);
     alert(CoName);
   finally
alert(Rmk);
    lRptVar := null;
alert(BRN);
    cdsMain.Free;
   }
    cdsDtl.Free;
}
  end;
</script>
end;
</head>
<body>
<input type="submit" value="Show Co Profile" name="btnSubmit" onclick="ShowCoProfile()">
</body>
</html>
</syntaxhighlight>
</syntaxhighlight>
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
<br />


====GL.CB.RO====
===Delphi===
The below example is assuming after you had check the login status.
====GL_JE====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! GL Cash Book Report Object Script   
! GL_JE Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="delphi">
procedure TfmMain.dxBB_CBClick(Sender: TObject);
procedure TfmMain.dxbb_GL_JEClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
var BizApp, lMain, lDtl, lBizObj, lDocKey : Variant;
     lTime : TDateTime;
     i : integer;
    cdsMain, cdsDtl, cdsTax : TClientDataset;
begin
begin
   lTime := Now;
   BizApp := CreateOleObject('SQLAcc.BizApp');
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  cdsTax  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
   try
   try
     lRptVar := null;
     lBizObj := BizApp.BizObjects.Find('GL_JE');
     lRptVar := lBizApp.RptObjects.Find('GL.CB.RO');
     lMain  := lBizObj.DataSets.Find('MainDataSet');
     lRptVar.Params.Find('AllCurrency').AsBoolean          := True;
     lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
     lRptVar.Params.Find('AllDocProject').AsBoolean       := True;
    lBizObj.New;
     lRptVar.Params.Find('AllDocument').AsBoolean          := True;
     lMain.FindField('DOCKEY').Value       := -1;
     lRptVar.Params.Find('AllItemProject').AsBoolean       := True;
     lMain.FindField('DocNo').Value        := '--JE Test--';
     lRptVar.Params.Find('AllItemArea').AsBoolean          := True;
     lMain.FindField('DocDate').Value       := '28 Aug 2017';
     lRptVar.Params.Find('AllItemAgent').AsBoolean        := True;
     lMain.FindField('PostDate').Value      := '28 Aug 2017';
     lRptVar.Params.Find('AllDocAgent').AsBoolean          := True;
     lMain.FindField('TAXDATE').Value      := '28 Aug 2017';
     lRptVar.Params.Find('AllDocArea').AsBoolean          := True;
     lMain.FindField('Description').Value  := 'Postage';
     lRptVar.Params.Find('AllPaymentMethod').AsBoolean    := False;
     lMain.FindField('Cancelled').Value    := 'F';
//    lRptVar.Params.Find('CurrencyData').AsBlob            := 'Not use if AllCurrency is true
     lMain.FindField('DOCNOSETKEY').Value  := 0;
    lMain.Post;


// For Post Date From & Date To'
    //For Tax Inclusive
     lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2017';
    lDtl.Append;
     lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2017';
    lDtl.FindField('DTLKEY').Value      := -1;
    lDtl.FindField('DOCKEY').Value      := -1;
    lDtl.FindField('SEQ').Value          := 1;
    lDtl.FindField('CODE').Value        := '610-1000';
     lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 1';
    lDtl.FindField('TAX').Value          := 'TX';
//   lDtl.FindField('LOCALTAXAMT').AsFloat := 17.32;//For JE you can't override (i.e. system auto calc)
     lDtl.FindField('TAXINCLUSIVE').Value  := 1;
    lDtl.FindField('LocalDR').AsFloat    := 306;//Including GST if TAXINCLUSIVE = 1
    lDtl.FindField('DR').AsFloat          := 306;//if wanted DR <> LocalDR
    lDtl.FindField('CHANGED').Value      := 'F';
    lDtl.Post;


//   lRptVar.Params.Find('DocProjectData').AsBlob          := //'Not use if AllDocProject is true
    //For Tax Exclusive
//    lRptVar.Params.Find('DocAreaData').AsBlob            := //Not use if AllDocArea is true
    lDtl.Append;
//    lRptVar.Params.Find('DocAgentData').AsBlob            := //Not use if AllDocAgent is true
    lDtl.FindField('DTLKEY').Value      := -1;
//    lRptVar.Params.Find('ItemAgentData').AsBlob          := //Not use if AllItemAgent is true
    lDtl.FindField('DOCKEY').Value      := -1;
     lRptVar.Params.Find('DocType').AsString              := 'PV'; //'PV for Payment Voucher & OR for Official Receipt
    lDtl.FindField('SEQ').Value          := 2;
//    lRptVar.Params.Find('DocumentData').AsBlob            := //Not use if AllDocument is true
     lDtl.FindField('CODE').Value        := '605-200';
//    lRptVar.Params.Find('GroupBy').AsBlob                := //If you wanted to grouping the data
    lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 2';
     lRptVar.Params.Find('IncludeCancelled').AsBoolean    := False;
     lDtl.FindField('TAX').Value          := 'TX';
//    lRptVar.Params.Find('ItemAreaData').AsBlob            := //Not use if AllItemArea is true
     lDtl.FindField('TAXINCLUSIVE').Value := 0;
//    lRptVar.Params.Find('ItemProjectData').AsBlob        := //Not use if AllItemProject is true
     lDtl.FindField('LocalCR').AsFloat    := 100;
     lRptVar.Params.Find('PaymentMethodData').AsBlob      := '310-001';
     lDtl.FindField('CHANGED').Value      := 'F';
     lRptVar.Params.Find('PrintDocumentStyle').AsBoolean  := True;
     lDtl.Post;
     lRptVar.Params.Find('SelectDate').AsBoolean          := True; //For Post Date
//  lRptVar.Params.Find('SelectDocDate').AsBoolean  := True; 'For Doc Date
     lRptVar.Params.Find('SortBy').AsString                := 'PostDate;DocNo';


     lRptVar.CalculateReport;
     //For No GST
    lDtl.Append;
    lDtl.FindField('DTLKEY').Value      := -1;
    lDtl.FindField('DOCKEY').Value      := -1;
    lDtl.FindField('SEQ').Value          := 3;
    lDtl.FindField('CODE').Value        := '610-002';
    lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 3';
    lDtl.FindField('TAX').Value          := '';
    lDtl.FindField('TAXINCLUSIVE').Value  := 0;
    lDtl.FindField('LocalCR').AsFloat    := 200;
    lDtl.FindField('CHANGED').Value      := 'F';
    lDtl.Post;


     cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;     //Master Data
     lBizObj.Save;
     cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDetail').XMLData; //Detail Data - To link Master Data use Dockey field
     MessageDlg('GL_JE-DocNo : ''--JE Test--'' Posted...', mtInformation, [mbOK],0);
    cdsTax.XMLData  := lRptVar.DataSets.Find('cdsTax').XMLData; //Tax List
  finally
    lBizObj.Close;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>


     cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
====GL_PV====
     cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
{| class="mw-collapsible mw-collapsed wikitable"
     cdsTax.SaveToFile('C:\Temp\_ListT.xml'); //Export To XML file
! GL_PV Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_GLPVClick(Sender: TObject);
var lMain, lDtl, lBizObj, BizApp : Variant;
    lTime : TDateTime;
begin
  lTime := Now;
  BizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lBizObj := BizApp.BizObjects.Find('GL_PV');
     lMain  := lBizObj.DataSets.Find('MainDataSet');
    lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
     lBizObj.New;
    lMain.FindField('DOCKEY').Value          := -1;
    lMain.FindField('DocNo').AsString        := '--CB PV Test1--';
    lMain.FindField('DocDate').Value          := '18 Aug 2015';
    lMain.FindField('PostDate').Value        := '18 Aug 2015';
    lMain.FindField('TAXDATE').Value          := '18 Aug 2015';
    lMain.FindField('Description').AsString  := 'Compacc System';
    lMain.FindField('PAYMENTMETHOD').AsString := '310-001';
    lMain.FindField('CHEQUENUMBER').AsString := 'MBB 213245';
    lMain.FindField('DocAmt').AsFloat        := 2019;
     lMain.FindField('Cancelled').AsString    := 'F';
    lMain.FindField('CHANGED').AsString      := 'F';
    lMain.Post;


    lDtl.Append;
    lDtl.FindField('DTLKEY').Value        := -1;
    lDtl.FindField('DOCKEY').Value        := -1;
    lDtl.FindField('Code').AsString        := '200-300';
    lDtl.FindField('DESCRIPTION').AsString := 'Maybank - Asus A555LD-xx313H';
    lDtl.FindField('TAX').AsString        := 'TX';
    lDtl.FindField('TAXAMT').AsFloat      := 114.28;
    lDtl.FindField('TAXINCLUSIVE').Value  := 1;
    lDtl.FindField('AMOUNT').AsFloat      := 2019;
    lDtl.FindField('CHANGED').AsString    := 'F';
    lDtl.Post;
    lBizObj.Save;
     lTime := Now - lTime;
     lTime := Now - lTime;
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
               mtInformation, [mbOk], 0);
   finally
   finally
     lRptVar := null;
     lBizObj.Close;
    cdsMain.Free;
    cdsDtl.Free;
   end;
   end;
end;
end;
Line 11,151: Line 11,599:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_DP====
====AR_Customer====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit Script   
! AR_Customer Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="delphi">
procedure TForm1.Button1Click(Sender: TObject);
procedure TfmMain.dxbb_CustomerClick(Sender: TObject);
var lMain, lBizObj, lBizApp : Variant;
var lMain, lDtl, lBizObj, lBizApp, lDockey : Variant;
    lTime : TDateTime;
begin
begin
  lTime := Now;
   lBizApp := CreateOleObject('SQLAcc.BizApp');
   lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');


   lBizObj := lBizApp.BizObjects.Find('AR_DP');
   lBizObj := lBizApp.BizObjects.Find('AR_Customer');
   lMain  := lBizObj.DataSets.Find('MainDataSet');
   lMain  := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsBranch');


  lDocKey := lBizObj.FindKeyByRef('CODE', 'FAIRY');
   try
   try
     lBizObj.New;
     if VarIsNull(lDocKey) then begin
    lMain.FindField('DOCKEY').Value        := -1;
      lBizObj.New;
    lMain.FindField('DocNo').AsString      := '--DP Test--';
      lMain.FindField('Code').value        := 'FAIRY';
     lMain.FindField('CODE').AsString       := '300-C0001';
      lMain.FindField('CompanyName').value := 'FAIRY TAIL';
    lMain.FindField('DocDate').Value        := '28 Oct 2019';
 
    lMain.FindField('PostDate').Value       := '28 Oct 2019';
      lDtl.Edit; //For 1st Branch
     lMain.FindField('TAXDATE').Value        := '28 Oct 2019';
      lDtl.FindField('BranchName').AsString := 'BILLING';
    lMain.FindField('DEPOSITACCOUNT').AsString := 'PREPAYMENT';
      lDtl.FindField('Address1').AsString   := 'Address1';
     lMain.FindField('PaymentMethod').AsString := '320-000'; //Bank or Cash account
       lDtl.FindField('Address2').AsString  := 'Address2';
     lMain.FindField('Description').AsString   := 'Deposit For Account';
      lDtl.FindField('Address3').AsString  := 'Address3';
    lMain.FindField('ChequeNumber').AsString  := '';
      lDtl.FindField('Address4').AsString  := 'Address4';
    lMain.FindField('BankCharge').AsFloat      := 0;
      lDtl.FindField('Attention').AsString  := 'Attention';
    lMain.FindField('DocAmt').AsFloat          := 1000.00;
      lDtl.FindField('Phone1').AsString     := 'Phone1';
     lMain.FindField('Cancelled').AsString      := 'F';
      lDtl.FindField('Fax1').AsString      := 'Fax1';
      lDtl.FindField('Email').AsString      := 'EmailAddress';
      lDtl.Post;
 
      lDtl.Append; //For 2nd Branch
      lDtl.FindField('BranchName').AsString := 'Branch1';
      lDtl.FindField('Address1').AsString  := 'DAddress1';
      lDtl.FindField('Address2').AsString   := 'DAddress2';
      lDtl.FindField('Address3').AsString  := 'DAddress3';
      lDtl.FindField('Address4').AsString  := 'DAddress4';
       lDtl.FindField('Attention').AsString  := 'DAttention';
      lDtl.FindField('Phone1').AsString     := 'DPhone1';
      lDtl.FindField('Fax1').AsString      := 'DFax1';
      lDtl.FindField('Email').AsString     := 'DEmailAddress';
      lDtl.Post;
     end else begin
      lBizObj.Params.Find('Code').AsString := 'FAIRY';
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('CompanyName').AsString := 'FAIRY TAIL WIZARD';
 
      while lDtl.RecordCount > 0 do begin
        lDtl.First;
        lDtl.Delete;
      end;
 
      lDtl.Append; //For 1st Branch
      lDtl.FindField('BranchType').AsString := 'B';
      lDtl.FindField('BranchName').AsString := 'BILLING';
      lDtl.FindField('Address1').AsString  := 'New Address1';
      lDtl.FindField('Address2').AsString  := 'New Address2';
      lDtl.FindField('Address3').AsString  := 'New Address3';
      lDtl.FindField('Address4').AsString  := 'New Address4';
      lDtl.FindField('Attention').AsString  := 'New Attention';
      lDtl.FindField('Phone1').AsString     := 'New Phone1';
      lDtl.FindField('Fax1').AsString      := 'New Fax1';
      lDtl.FindField('Email').AsString     := 'New EmailAddress';
      lDtl.Post;
 
      lDtl.Append; //For 2nd Branch
      lDtl.FindField('BranchType').AsString := 'D';
      lDtl.FindField('BranchName').AsString := 'New Branch1';
      lDtl.FindField('Address1').AsString  := 'New DAddress1';
      lDtl.FindField('Address2').AsString  := 'New DAddress2';
      lDtl.FindField('Address3').AsString  := 'New DAddress3';
      lDtl.FindField('Address4').AsString  := 'New DAddress4';
      lDtl.FindField('Attention').AsString  := 'New DAttention';
      lDtl.FindField('Phone1').AsString     := 'New DPhone1';
      lDtl.FindField('Fax1').AsString      := 'New DFax1';
      lDtl.FindField('Email').AsString      := 'New DEmailAddress';
      lDtl.Post;


    try
      lBizObj.Save;
    except
      on E: Exception do
        Memo1.Lines.Append(E.Message);
     end;
     end;
    lBizObj.Close;
    lBizObj.Save;
    Memo1.Lines.Append('Done');
 
//     MessageDlg('Done', mtInformation, [mbOk], 0);
    lTime := Now - lTime;
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
   finally
   finally
    lMain := Null;
     lBizObj.Close;
     lBizObj := Null;
     lBizApp := null;
    lBizApp.Logout;
     lBizApp := Null;
   end;
   end;
end;
end;
Line 11,203: Line 11,699:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====Customer Deposit to Customer Payment====
====AR_PM====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit to Customer Payment Script   
! AR_PM Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="delphi">
procedure TForm1.Button2Click(Sender: TObject);
procedure TfmMain.dxbb_ARPMClick(Sender: TObject);
var lMain, lKO, lBizApp, lBizObj, V : Variant;
var lMain, lKO, lBizApp, lBizObj, V : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
begin
  cdsTmp  := TClientDataset.Create(nil);
   lBizApp := CreateOleObject('SQLAcc.BizApp');
   lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
   try
   try
     lSQL := 'SELECT DOCKEY FROM AR_DP ' +
     lBizObj := lBizApp.BizObjects.Find('AR_PM');
            'WHERE DOCNO=''--DP Test--'' ';
    lMain  := lBizObj.DataSets.Find('MainDataSet');
     cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);
     lKO    := lBizObj.DataSets.Find('cdsKnockOff');


     if cdsTmp.RecordCount > 0 then begin
     lBizObj.New;
      lBizObj := lBizApp.BizObjects.Find('AR_PM');
    lMain.FindField('DOCKEY').Value          := -1;
      lMain   := lBizObj.DataSets.Find('MainDataSet');
    lMain.FindField('DocNo').AsString        := '--PM Test--'; //Payment Document Number
      lKO     := lBizObj.DataSets.Find('cdsKnockOff');
    lMain.FindField('CODE').AsString          := '300-A0001';
    lMain.FindField('DocDate').Value          := '28 Aug 2016';
    lMain.FindField('PostDate').Value        := '28 Aug 2016';
    lMain.FindField('Description').AsString  := 'Payment for A/c';
     lMain.FindField('PaymentMethod').AsString := '320-000';
    lMain.FindField('DocAmt').AsFloat        := 1060;
    lMain.FindField('Cancelled').AsString    := 'F';


      lBizObj.New;
    V := lBizApp.CreateOleVariantArray(2);
      lMain.FindField('DOCKEY').Value          := -1;
    V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
      lMain.FindField('DocNo').AsString        := '--PM Test--'; //Payment Document Number
    V.SetItem(1, '--IV Test--'); //Invoice Document Number
      lMain.FindField('CODE').AsString          := '300-C0001';
      lMain.FindField('DocDate').Value          := '29 Oct 2019';
      lMain.FindField('PostDate').Value        := '29 Oct 2019';
      lMain.FindField('Description').AsString  := 'Payment for A/c';
      lMain.FindField('PaymentMethod').AsString := 'PREPAYMENT';
      lMain.FindField('DocAmt').AsFloat        := 200;
      lMain.FindField('FROMDOCTYPE').AsString  := 'DP'; //Transfer from Deposit
      lMain.FindField('FROMDOCKEY').Value      := cdsTmp.FindField('Dockey').AsFloat; //Transfer from Deposit
      lMain.FindField('Cancelled').AsString    := 'F';
      lMain.FindField('CHANGED').AsString      := 'F';


      V := lBizApp.CreateOleVariantArray(2);
    if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
      V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
      begin
      V.SetItem(1, 'IV-00003'); //Invoice Document Number
        lKO.Edit;
        lKO.FindField('KOAmt').ASFloat    := 500;
        lKO.FindField('KnockOff').AsString := 'T';
        lKO.Post;
      end;


      if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
     lBizObj.Save;
        begin
    MessageDlg('AR_PM-DocNo : ''--PM Test--'' Posted...', mtInformation, [mbOK],0);
          lKO.Edit;
          lKO.FindField('KOAmt').ASFloat     := 200;
          lKO.FindField('KnockOff').AsString := 'T';
          lKO.Post;
        end;
 
      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
        lBizObj.Close;
        Memo1.Lines.Append('Done');
      //MessageDlg('AR_PM-DocNo : ''--PM Test--'' Posted...', mtInformation, [mbOK],0);
    end else
      Memo1.Lines.Append('Deposit No. Not found');
   finally
   finally
     cdsTmp.Free;
     lBizObj.Close;
    lBizApp.Logout;
    lMain := Null;
    lBizObj := Null;
    lBizApp := Null;
   end;
   end;
end;
end;
Line 11,278: Line 11,748:
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_DPDTL_REFUND====
====AR_PM-Edit====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit Refund Script   
! AR_PM Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="delphi">
procedure TForm1.Button3Click(Sender: TObject);
procedure TfmMain.dxbb_ARPMClick(Sender: TObject);
var lMain, lBizApp, lBizObj : Variant;
var lMain, lKO, lBizApp, lBizObj, V : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
begin
  cdsTmp  := TClientDataset.Create(nil);
   lBizApp := CreateOleObject('SQLAcc.BizApp');
   lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
   try
   try
     lSQL := 'SELECT DOCKEY FROM AR_DP ' +
     lBizObj := lBizApp.BizObjects.Find('AR_PM');
            'WHERE DOCNO=''--DP Test--'' ';
    lMain  := lBizObj.DataSets.Find('MainDataSet');
     cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);
     lKO    := lBizObj.DataSets.Find('cdsKnockOff');


     if cdsTmp.RecordCount > 0 then begin
     lDocKey := lBizObj.FindKeyByRef('DocNo', '--PM Test--');
      lBizObj := lBizApp.BizObjects.Find('AR_DPDTL_REFUND');
    lBizObj.Params.Find('DocKey').Value := VarToStr(lDocKey);
      lMain  := lBizObj.DataSets.Find('MainDataSet');


       lBizObj.New;
    If not VarIsNull(lDocKey) Then begin
       lMain.FindField('DOCKEY').Value         := cdsTmp.FindField('Dockey').AsFloat;
       lBizObj.Open;
       lMain.FindField('Account').AsString      := '320-000'; //Bank or Cash account
      lBizObj.Edit;
       lMain.FindField('DocDate').Value        := '28 Oct 2019';
       lMain.FindField('DOCKEY').Value           := -1;
       lMain.FindField('PostDate').Value        := '28 Oct 2019';
       lMain.FindField('DocDate').Value          := '28 Aug 2016';
       lMain.FindField('Description').AsString := 'Deposit Refund';
       lMain.FindField('PostDate').Value        := '28 Aug 2016';
       lMain.FindField('ChequeNumber').AsString := '';
       lMain.FindField('Description').AsString  := 'Payment for A/c';
       lMain.FindField('BankCharge').AsFloat    := 0;
       lMain.FindField('PaymentMethod').AsString := '310-000';
       lMain.FindField('PAYMENTAMOUNT').AsFloat := 500.00;
       lMain.FindField('DocAmt').AsFloat        := 800.28;
      lMain.FindField('UnappliedAmt').AsFloat  := 100.28;
       lMain.FindField('Cancelled').AsString    := 'F';
       lMain.FindField('CHANGED').AsString      := 'F';


       try
       V := lBizApp.CreateOleVariantArray(2);
        lBizObj.Save;
       V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
       except
       V.SetItem(1, '--IV Test--'); //Document Number
        on E: Exception do
 
          Memo1.Lines.Append(E.Message);
      if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
       end;
        begin
      lBizObj.Close;
          lKO.Edit;
      Memo1.Lines.Append('Done');
          lKO.FindField('KOAmt').AsFloat     := 700.28; // IV Knock Off/Offset Amount
  //     MessageDlg('Done', mtInformation, [mbOk], 0);
          lKO.FindField('KnockOff').AsString := 'T';
     end else
          lKO.Post;
      Memo1.Lines.Append('Deposit No. Not Found');
        end;
  finally
 
    cdsTmp.Free;
      lBizObj.Save;
    lMain := Null;
      MessageDlg('AR_PM-DocNo : ''--PM Test--'' Updated...', mtInformation, [mbOK],0);
    lBizObj := Null;
     end;
     lBizApp.Logout;
  finally
     lBizApp := Null;
     lBizObj.Close;
   end;
   end;
end;
end;
</syntaxhighlight>
</syntaxhighlight>
|}
|}


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


====AR_DPDTL_FORFEIT====
====ST_Item====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit Forfeit Script   
! ST_Item Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
<syntaxhighlight lang="delphi">
procedure TForm1.Button4Click(Sender: TObject);
procedure TfmMain.dxbb_ST_ItemClick(Sender: TObject);
var lMain, lBizApp, lBizObj : Variant;
var lMain, lDtl, lBar, lBizObj, lDockey: Variant;
     cdsTmp : TClientDataset;
     lTime : TDateTime;
    lSQL : String;
begin
begin
   cdsTmp  := TClientDataset.Create(nil);
   lTime := Now;
   lBizApp := CreateOleObject('SQLAcc.BizApp');
   lBizApp := CreateOleObject('SQLAcc.BizApp');
   lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
   lBizObj := lBizApp.BizObjects.Find('ST_ITEM');
  lMain  := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsUOM');
  lBar    := lBizObj.DataSets.Find('cdsBarcode');


  lDocKey := lBizObj.FindKeyByRef('Code', 'FAIRY');
   try
   try
     lSQL := 'SELECT DOCKEY FROM AR_DP ' +
     if VarIsNull(lDocKey) then begin
            'WHERE DOCNO=''--DP Test--'' ';
      lBizObj.New;
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);
      lMain.FindField('CODE').value := 'FAIRY';
      lMain.FindField('DESCRIPTION').value := 'FAIRY TAIL';
      lMain.FindField('STOCKGROUP').value := 'DEFAULT';
      lMain.FindField('STOCKCONTROL').value := 'T';
      lMain.FindField('ISACTIVE').value := 'T';
 
      lDtl.Edit; //For 1St UOM
      lDtl.FindField('UOM').AsString := 'PCS';
      lDtl.FindField('Rate').AsFloat := 1;
      lDtl.FindField('RefCost').AsFloat := 10.2;
      lDtl.FindField('RefPrice').AsFloat := 25;
      lDtl.Post;
 
      lDtl.Append; //For 2nd UOM
      lDtl.FindField('UOM').AsString := 'CTN';
      lDtl.FindField('Rate').AsFloat := 12;
      lDtl.FindField('RefCost').AsFloat := 102;
      lDtl.FindField('RefPrice').AsFloat := 240;
      lDtl.Post;


    if cdsTmp.RecordCount > 0 then begin
      lBar.Append; //For 1St UOM Barcode
       lBizObj := lBizApp.BizObjects.Find('AR_DPDTL_FORFEIT');
       lBar.FindField('Barcode').AsString := '123456';
       lMain  := lBizObj.DataSets.Find('MainDataSet');
       lBar.FindField('UOM').AsString := 'PCS';
      lBar.Post;


       lBizObj.New;
       lBar.Append; //For 2nd UOM Barcode
       lMain.FindField('DOCKEY').Value          := cdsTmp.FindField('Dockey').AsFloat;
       lBar.FindField('Barcode').AsString := '7890123';
       lMain.FindField('Account').AsString     := '532-000'; //Forfeit account
       lBar.FindField('UOM').AsString := 'CTN';
       lMain.FindField('DocDate').Value        := '28 Oct 2019';
       lBar.Post;
       lMain.FindField('PostDate').Value       := '28 Oct 2019';
    end else begin
       lMain.FindField('Description').AsString  := 'Deposit Forfeit';
       lBizObj.Params.Find('Dockey').Value := lDocKey;
       lMain.FindField('Amount').AsFloat        := 150.00;
       lBizObj.Open;
      lBizObj.Edit;
       lMain.FindField('DESCRIPTION').value := 'FAIRY TAIL WIZARD';


       try
       while lDtl.RecordCount > 0 do begin
         lBizObj.Save;
         lDtl.First;
      except
         lDtl.Delete;
         on E: Exception do
          Memo1.Lines.Append(E.Message);
       end;
       end;
      lBizObj.Close;
      //Insert back with new Price
      Memo1.Lines.Append('Done');
      lDtl.Append; //For 1St UOM
  //     MessageDlg('Done', mtInformation, [mbOk], 0);
      lDtl.FindField('UOM').AsString := 'PCS'; //Make sure this always same as b4 delete data
     end else
      lDtl.FindField('Rate').AsFloat := 1;    //Make sure this always same as b4 delete data
       Memo1.Lines.Append('Deposit No. Not Found');
       lDtl.FindField('RefCost').AsFloat := 22.3;
  finally
      lDtl.FindField('RefPrice').AsFloat := 52;
    cdsTmp.Free;
      lDtl.FindField('ISBASE').AsFloat := 1;
    lMain := Null;
      lDtl.Post;;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;
</syntaxhighlight>
|}


<div style="float: right;">  [[#top|[top]]]</div>
      lDtl.Append;  //For 2nd UOM
      lDtl.FindField('UOM').AsString := 'CTN'; //Make sure this always same as b4 delete data
      lDtl.FindField('Rate').AsFloat := 12;   //Make sure this always same as b4 delete data
      lDtl.FindField('RefCost').AsFloat := 102.5;
      lDtl.FindField('RefPrice').AsFloat := 260.45;
      lDtl.FindField('ISBASE').AsFloat := 0;
      lDtl.Post;


==FAQ==
      while lBar.RecordCount > 0 do begin
===Problem with opening CHM Help files?===
        lBar.First;
# Right click the chm file & select Properties
        lBar.Delete;
# At General tab Click Unblock button.
      end;
# Click Apply | Ok.


<div style="float: right;">  [[#top|[top]]]</div>
      lBar.Append; //For 1St UOM Barcode
      lBar.FindField('Barcode').AsString := '888888';
      lBar.FindField('UOM').AsString := 'PCS';
      lBar.Post;


===Still can't open CHM file?===
      lBar.Append; //For 2nd UOM Barcode
# Login SQL Accounting
      lBar.FindField('Barcode').AsString := '999999';
# Click Tools | Options
      lBar.FindField('UOM').AsString := 'CTN';
# Click Register & follow wizard
      lBar.Post;
# Exit SQL Accounting
    end;
# Login SQL Accounting
    lBizObj.Save;
# Run CHM File


<div style="float: right;">  [[#top|[top]]]</div>
    lTime := Now - lTime;
 
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
===Why when I compile my program with stated unknown method or unknown identifier?===
              mtInformation, [mbOk], 0);
:If you compiler had error may try add the '''esfw10.dll''' file under the SQL Accounting\bin folder
  finally
    lBizObj.Close;
    lMain := null;
    lDtl := null;
    lBar := null;
    lBizObj := null;
    lBizApp := null;
  end;
end;
</syntaxhighlight>
|}


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


===How to make sure I login to correct database?===
====ST_Item-Edit====
* Can use the '''Common.Agent.RO''' Report Objects to get the Profile info.
* Then use the cdsProfile Dataset
: - CompanyName Field
: - Remark Field
* Refer to [https://wiki.sql.com.my/wiki/SDK_Live#Get_Company_Profile Get Company Profile]
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===Why after post to SQL Accounting the Description3 (More Description)/Notes field it show like this "M y  D e s c r i p t i o n" instead of "My Description"?===
:Make sure you use '''.AsString''' in your code (see example below)
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Description3 Field Script/Code  
! ST_Item Script   
|-
|-
|  
|  
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_ST_ItemClick(Sender: TObject);
var lMain, lDtl, lBizObj, lBizApp, lDocKey, V : Variant;
begin
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizObj := lBizApp.BizObjects.Find('ST_ITEM');
  lMain  := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsUOM');


...
   lDocKey := lBizObj.FindKeyByRef('Code', '--Stock Item Test--');
   lDtl.FindField('DESCRIPTION3').'''AsString'''  := 'Sales Item A More Description'+ #13 + 'I in 2nd line';
  lBizObj.Params.Find('DocKey').Value := VarToStr(lDocKey);
...
  try
|}


<div style="float: right;">  [[#top|[top]]]</div>
    If not VarIsNull(lDocKey) Then begin
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('Description').value := 'Testing - Description';


===Can I Ignore Doc No Field & let SQL Accounting to Auto Assign?===
      V := lBizApp.CreateOleVariantArray(2);
:Yes but we not recommended as you will lost track when user wanted to know which Doc No in SQL Acc is posted.  
      V.SetItem(0, 'CTN'); //UOM
: To Set Auto Assign set it as below
      V.SetItem(1, '12');  //Rate
{| class="mw-collapsible mw-collapsed wikitable"
 
! DocNo Field Script/Code 
      if lDtl.Locate('UOM;Rate', V.AsOleVariant, False, False) then
|-
        begin
|
          lDtl.Edit;
          lDtl.FindField('RefCost').AsFloat  := 10.20;
          lDtl.FindField('RefPrice').AsFloat := 25.00;
          lDtl.Post;
        end;
      lBizObj.Save;


...
      MessageDlg('ST_Item-ItemCode : ''--Stock Item Test--'' Updated...', mtInformation, [mbOK],0);
  lMain.FindField('DocNo').'''AsString'''  := '<<New>>';
    end;
...
  finally
lDocNo := lMain.FindField('DocNo').AsString; //To Get docno after post
    lBizObj.Close;
  end;
end;
</syntaxhighlight>
|}
|}


<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>


===Can I Auto Login & Logout SQL Accounting when doing & after Posting?===
====SL_IV====
: Yes can below is example script
: Only work if that PC is no once is using SQL Accounting
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! C Sharp  
! SL_IV Script  
|-
|-
|  
|  
<syntaxhighlight lang="C#">
<syntaxhighlight lang="delphi">
Int32 lBuildNo;
procedure TfmMain.dxbb_SL_IVClick(Sender: TObject);
dynamic ComServer;
var lMain, lDtl, lSN, lBizObj, lBizApp, lDockey, V: Variant;
    lTime : TDateTime;
public void CheckLogin()
begin
{           
  lTime := Now;
    lBizType = Type.GetTypeFromProgID("SQLAcc.BizApp");
  lBizApp := CreateOleObject('SQLAcc.BizApp');
    ComServer = Activator.CreateInstance(lBizType);
  lBizObj := lBizApp.BizObjects.Find('SL_IV');
           
  lMain  := lBizObj.DataSets.Find('MainDataSet');
    if (!ComServer.IsLogin)
  lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
     {
  lSN     := lBizObj.DataSets.Find('cdsSerialNumber');
        try
 
        {
  V      := lBizApp.CreateOleVariantArray(1);
            ComServer.Login(edUN.Text, edPW.Text, edDCF.Text, edDB.Text);
  V.SetItem(0, '--IV Test--');  //DocNo
            ComServer.Minimize();
  V.SetItem(1, '300-A0001'); //CompanyCode
        }
  lDocKey := lBizObj.FindKeyByRef('DocNo;Code', V.AsOleVariant);
        catch(Exception ex)
 
        {
  try
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    if VarIsNull(lDocKey) then begin
            FreeBiz(ComServer);
      lBizObj.New;
        }
      lMain.FindField('DocNo').AsString      := '--IV Test--';
    }
      lMain.FindField('CODE').AsString        := '300-A0001';
    if (ComServer.IsLogin)
      lMain.FindField('DocDate').Value        := '28 Aug 2024';
     {
      lMain.FindField('PostDate').Value      := '28 Aug 2024';
        lBuildNo = ComServer.BuildNo;
      lMain.FindField('TAXDATE').Value        := '28 Aug 2024';
    }
      lMain.FindField('Description').AsString := 'Sales'; //Information to shown in Statement
}
      lMain.FindField('Cancelled').AsString  := 'F';
      lMain.Post;
public void FreeBiz(object AbizObj)
 
{
      lDtl.Append; // For Tax Inclusive = True with override Tax Amount
    System.Runtime.InteropServices.Marshal.ReleaseComObject(AbizObj);
      lDtl.FindField('SEQ').Value            := 1;
}
      lDtl.FindField('ItemCode').AsString    := 'ANT';
      //lDtl.FindField('ACCOUNT').AsString     := '500-000'; //GL Sales Account if wanted override
private void btnExport_Click(object sender, EventArgs e)
      lDtl.FindField('DESCRIPTION').AsString := 'ANTENA';
{
      lDtl.FindField('QTY').AsFloat          := 1;
    dynamic BizObject, lMain, lDocKey;
      lDtl.FindField('UOM').AsString        := 'UNIT';
      lDtl.FindField('Disc').AsString        := ''; //'5%+3; //Optional(eg 5% plus 3 Discount)
      lDtl.FindField('TAX').AsString        := 'SV6';
      lDtl.FindField('TAXINCLUSIVE').Value  := 1;
      lDtl.FindField('UNITPRICE').AsFloat    := 435; //Including GST UnitPrice
      lDtl.FindField('AMOUNT').AsFloat      := 410.37; //Must Excluding GST (Qty * UnitPrice) // Less 0.01
      lDtl.FindField('TAXAMT').AsFloat      := 24.63; //Extra 0.01
 
      lDtl.DisableControls; //For Tax Inclusive Only where TaxAmt is not as Calc
      try
        lDtl.FindField('TAXINCLUSIVE').Value := 1;
      finally
        lDtl.EnableControls;
      end;
      lDtl.Post;


    CheckLogin();
      lDtl.Append; // For Tax Inclusive = False with override Tax Amount
     //'Step 2: Find and Create the Biz Objects
      lDtl.FindField('SEQ').Value            := 2;
    BizObject = ComServer.BizObjects.Find("Agent");
      lDtl.FindField('ItemCode').AsString    := 'ANT';
      //lDtl.FindField('ACCOUNT').AsString     := '500-000'; //GL Sales Account if wanted override
      lDtl.FindField('DESCRIPTION').AsString := 'ANTENA B';
      lDtl.FindField('QTY').AsFloat          := 1;
      lDtl.FindField('TAX').AsString        := 'SV6';
      lDtl.FindField('UOM').AsString        := 'UNIT';
      lDtl.FindField('TAXINCLUSIVE').Value  := 0;
      lDtl.FindField('UNITPRICE').AsFloat    := 94.43;
      lDtl.FindField('AMOUNT').AsFloat      := 94.43;
      lDtl.FindField('TAXAMT').AsFloat      := 5.66; //Less 0.01
      lDtl.Post;


    //Step 3: Set Dataset
      lDtl.Append; // For Serial Number
     lMain = BizObject.DataSets.Find("MainDataSet");   //lMain contains master data
      lDtl.FindField('SEQ').Value            := 3;
      lDtl.FindField('ItemCode').AsString    := 'SN1';
      lDtl.FindField('ACCOUNT').AsString     := '500-000';
      lDtl.FindField('DESCRIPTION').AsString := 'Sales Serial Number Item';


    //Step 4: Search
      lSN.Append;
    lDocKey = BizObject.FindKeyByRef("CODE", edCode.Text);
      lSN.FindField('SERIALNUMBER').AsString  := 'SN-00001';
    try
      lSN.Post;
    {
        try
        {
            //Step 5 : Insert or Update
            if (Convert.IsDBNull(lDocKey))
            {
                BizObject.New();
                lMain.FindField("CODE").value = edCode.Text;
                lMain.FindField("DESCRIPTION").value = edDesc.Text;
            }
            else
            {//Edit Data if found
                BizObject.Params.Find("CODE").Value = lDocKey;
                BizObject.Open();
                BizObject.Edit();
                lMain.FindField("DESCRIPTION").value = edDesc.Text;
            }
            //Step 6: Save & Close
            BizObject.Save();
            MessageBox.Show("Done", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
    finally
    {
        BizObject.Close();


        //Step 7 : Logout after done           
      lSN.Append;
        FreeBiz(BizObject);
      lSN.FindField('SERIALNUMBER').AsString  := 'SN-00002';
        ComServer.Logout();
      lSN.Post;
        FreeBiz(ComServer);
    }           
}
</syntaxhighlight>
|}


{| class="mw-collapsible mw-collapsed wikitable"
      lDtl.FindField('QTY').AsFloat        := 2;
! Delphi 
      lDtl.FindField('UOM').AsString      := 'UNIT';
|-
      lDtl.FindField('TAX').AsString      := 'SV6';
|
      lDtl.FindField('TAXINCLUSIVE').Value := 0;
<syntaxhighlight lang="delphi">
      lDtl.FindField('UNITPRICE').AsFloat  := 94.43;
....
      lDtl.FindField('TAXAMT').AsFloat    := 11.33;
  public
      lDtl.Post;
     { Public declarations }
     end else begin
    lBizApp : variant;
      lBizObj.Params.Find('Dockey').Value := lDockey;
  end;
      lBizObj.Open;
....
      lBizObj.Edit;
      lMain.FindField('Description').AsString := 'Edited Sales';


procedure TForm1.CheckLogin;
      while lDtl.RecordCount > 0 do begin
begin
        lDtl.First;
  lBizApp := null;
        lDtl.Delete;
  lBizApp := CreateOleObject('SQLAcc.BizApp');
      end;


  if not lBizApp.IsLogin then begin
      lDtl.Append;
    lBizApp.Login(edUN.Text, edPW.Text, edDCF.Text, edDB.Text); //Login with preset setting
      lDtl.FindField('SEQ').Value            := 1;
    lBizApp.Minimize; //Mininise the SQLAccounting
      lDtl.FindField('ItemCode').AsString    := 'ANT';
  end;
      //lDtl.FindField('ACCOUNT').AsString    := '500-000'; //GL Sales Account if wanted override
end;
      lDtl.FindField('DESCRIPTION').AsString := 'ANTENA';
      lDtl.FindField('QTY').AsFloat          := 1;
      lDtl.FindField('UOM').AsString        := 'CTN';
      lDtl.FindField('TAX').AsString        := 'SV6';
      lDtl.FindField('TAXINCLUSIVE').Value  := 0;
      lDtl.FindField('UNITPRICE').AsFloat    := 200;
      lDtl.FindField('AMOUNT').AsFloat      := 200;
      lDtl.FindField('TAXAMT').AsFloat      := 12; //Less 0.01
      lDtl.Post;
    end;
    lBizObj.Save;


procedure TForm1.Button2Click(Sender: TObject);
     lTime := Now - lTime;
var BizObject, lMain : Variant;
     MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
begin
              mtInformation, [mbOk], 0);
  try
    //Begin Loop your data
     try
      CheckLogin;
      BizObject := lBizApp.BizObjects.Find('Agent');
      lMain     := BizObject.DataSets.Find('MainDataSet');
      BizObject.New;
      lMain.FindField('CODE').AsString := 'HALIM';
      lMain.FindField('Description').AsString := 'HALIM 123';
      BizObject.save;
    except
      on E: Exception do
        MmLog.Lines.Append(E.Message);
    end;
    //
   finally
   finally
     BizObject.close;
     lBizObj.Close;
     BizObject := null;
     lMain := null;
     lBizApp.Logout;
     lDtl := null;
    lSN := null;
    lBizObj := null;
     lBizApp := null;
     lBizApp := null;
   end;
   end;
Line 11,598: Line 12,094:
|}
|}


<div style="float: right;">  [[#top|[top]]]</div>
====Customer.IV.RO====
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! VB Script   
! Customer.IV.RO Report Object Script   
|-
|-
|  
|  
<syntaxhighlight lang="vb">
<syntaxhighlight lang="delphi">
'Copy below script & paste to notepad & name it as eg Agent.vbs
procedure TfmMain.dxbb_RptObjClick(Sender: TObject);
Call PostData
var lBizApp, lRptVar : Variant;
   
    lTime : TDateTime;
Function CreateSQLAccServer
    cdsMain, cdsDtl : TClientDataset;
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
begin
End Function
  lTime := Now;
   
  cdsMain := TClientDataset.Create(nil);
Function PostData
  cdsDtl  := TClientDataset.Create(nil);
Dim ComServer, BizObject
  lBizApp := CreateOleObject('SQLAcc.BizApp');
   
  try
   'Step 1: Create Com Server object
    lRptVar := null;
   Set ComServer = CreateSQLAccServer 'Create Com Server
    lRptVar := lBizApp.RptObjects.Find('Customer.IV.RO');
    
    lRptVar.Params.Find('SelectDate').AsBoolean          := True;
   Set WScr = CreateObject("WScript.Shell")
    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2015';
   WScript.Sleep 1000 '//Wait 1 second for system loading before proceed
    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2015';
    lRptVar.Params.Find('AllAgent').AsBoolean            := False;
    lRptVar.Params.Find('AgentData').AsBlob              := '----'#13#10'HALIM'; //Filter by Agent code ---- & HALIM
    lRptVar.Params.Find('AllArea').AsBoolean              := True;
//    lRptVar.Params.Find('AreaData').AsBlob                := ; //Not use if AllArea is True
    lRptVar.Params.Find('AllCompany').AsBoolean          := True;
//    lRptVar.Params.Find('CompanyData').AsBlob            := ; //Not use if AllCompany is True
    lRptVar.Params.Find('AllCurrency').AsBoolean          := True;
//    lRptVar.Params.Find('CurrencyData').AsBlob            := ; //Not use if AllCurrenty is True
    lRptVar.Params.Find('AllDocProject').AsBoolean        := True;
//    lRptVar.Params.Find('DocProjectData').AsBlob          := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean  := True;
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob    := ; //Not use if AllCompanyCategory is True
    lRptVar.Params.Find('AllDocument').AsBoolean          := True;
//    lRptVar.Params.Find('DocumentData').AsBlob            := ; //Not use if AllDocument is True
    lRptVar.Params.Find('IncludeCancelled').AsBoolean  := True;
    lRptVar.Params.Find('PrintDocumentStyle').AsBoolean := False;
    lRptVar.Params.Find('AllItemProject').AsBoolean    := True;
    lRptVar.Params.Find('AllPaymentMethod').AsBoolean  := True;
    lRptVar.CalculateReport;
 
    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocDetail').XMLData; //Detail Data - To link Master Data use Dockey field
 
    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
 
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====Stock.Item.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! Stock.Item.RO Report Object Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_ST_ITEM_ROClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl, cdsCat : TClientDataset;
    lSQL : string;
begin
  lTime    := Now;
  cdsMain  := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  cdsCat  := TClientDataset.Create(nil);
 
  lBizApp := CreateOleObject('SQLAcc.BizApp');
 
  lSQL := 'SELECT * FROM ST_ITEM_CATEGORY ' +
          'WHERE Category IN (''B-MOTOLORA'',''B-MAXIS'')';
  cdsCat.Data := lBizApp.DBManager.Execute(lSQL); //For filtering Category only
 
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Stock.Item.RO');
    lRptVar.Params.Find('AllItem').AsBoolean              := True;
    lRptVar.Params.Find('AllStockGroup').AsBoolean        := True;
    lRptVar.Params.Find('AllCustomerPriceTag').AsBoolean  := True;
    lRptVar.Params.Find('AllSupplierPriceTag').AsBoolean  := True;
//    lRptVar.Params.Find('CategoryData').AsBlob            := ; //Not use
//    lRptVar.Params.Find('CategoryTpl').AsBlob            := ; //Not use
//    lRptVar.Params.Find('CustomerPriceTagData').AsBlob    := ; //Not use if AllCustomerPriceTag is True
//    lRptVar.Params.Find('SupplierPriceTagData').AsBlob    := ; //Not use if AllSupplierPriceTag is True
//    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2015'; //Not use if SelectDate is False
//    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2015';
    lRptVar.Params.Find('HasAltStockItem').AsBoolean      := False;
    lRptVar.Params.Find('HasBarcode').AsBoolean          := False;
    lRptVar.Params.Find('HasBOM').AsBoolean              := False;
    lRptVar.Params.Find('HasCategory').AsBoolean          := False;
    lRptVar.Params.Find('HasCustomerItem').AsBoolean      := False;
    lRptVar.Params.Find('HasOpeningBalance').AsBoolean    := False;
    lRptVar.Params.Find('HasPurchasePrice').AsBoolean    := False;
    lRptVar.Params.Find('HasSellingPrice').AsBoolean      := False;
    lRptVar.Params.Find('HasSupplierItem').AsBoolean      := False;
//    lRptVar.Params.Find('ItemData').AsBlob                := 'ANT 1.0'#13#10'COVER'; //Filter by Item code ANT 1.0 & COVER
//    lRptVar.Params.Find('ItemCategoryData').AsBlob        := cdsCat.XMLData; //Not use if SelectCategory is False
    lRptVar.Params.Find('PrintActive').AsBoolean          := True;
    lRptVar.Params.Find('PrintInActive').AsBoolean        := True;
    lRptVar.Params.Find('PrintNonStockControl').AsBoolean := True;
    lRptVar.Params.Find('PrintStockControl').AsBoolean    := True;
    lRptVar.Params.Find('SelectCategory').AsBoolean      := False;
    lRptVar.Params.Find('SelectDate').AsBoolean          := False;
    lRptVar.Params.Find('SortBy').AsString                  := 'Code';
//    lRptVar.Params.Find('StockGroupData').AsBlob        := ; //Not use if AllStockGroup is True
    lRptVar.CalculateReport;
 
    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData; //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsUOM').XMLData;  //Detail Data - To link Master Data use Code field
 
    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
 
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
    cdsCat.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer.Statement.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer.Statement.RO Report Object Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_StatementClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl : TClientDataset;
    s : string;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  s := '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>'+
      '<FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>'+
      '<FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>'+
      '<FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>'+
      '</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>'+
      '<ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>'+
      '<ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>'+
      '</ROWDATA></DATAPACKET>';
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.Statement.RO');
//  lRptVar.Params.Find('AgentData').AsBlob              := ; //Not use if AllAgent is True
    lRptVar.Params.Find('AgingData').AsString          := s; //Fixed
    lRptVar.Params.Find('AgingOn').AsString            := 'I'; //Fixed
    lRptVar.Params.Find('AllAgent').AsBoolean          := True;
    lRptVar.Params.Find('AllArea').AsBoolean            := True;
    lRptVar.Params.Find('AllCompany').AsBoolean        := False;
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean := True;
    lRptVar.Params.Find('AllControlAccount').AsBoolean  := True;
    lRptVar.Params.Find('AllCurrency').AsBoolean        := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean      := True;
//    lRptVar.Params.Find('AreaData').AsBlob              := ; //Not use if AllArea is True
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob  := ; //Not use if AllCompanyCategory is True
    lRptVar.Params.Find('CompanyData').AsBlob          := '300-A0001'#13#10'300-C0001'; //Filter by Customer Code 300-A0001 & 300-C0001
//    lRptVar.Params.Find('ControlAccountData').AsBlob    := ; //Not use if AllControlAccount is True
//    lRptVar.Params.Find('CurrencyData').AsBlob          := ; //Not use if AllCurrency is True
    lRptVar.Params.Find('DateFrom').AsDate              := '01 Aug 2016';
    lRptVar.Params.Find('DateTo').AsDate                := '31 Aug 2016';
//    lRptVar.Params.Find('DocProjectData').AsBlob        := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('IncludeZeroBalance').AsBoolean := False;
    lRptVar.Params.Find('SelectDate').AsBoolean        := True;
    lRptVar.Params.Find('SortBy').AsString              := 'CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount';
    lRptVar.Params.Find('StatementDate').AsDate        := '31 Aug 2016'; // Norm same as DateTo
    lRptVar.Params.Find('StatementType').AsString      := 'O'; //O := Open Item, B := B/F
 
    lRptVar.CalculateReport;
 
    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocument').XMLData; //Detail Data - To link Master Data use Code field
 
    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
 
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====GL Account List For Sales & Purchase 1====
{| class="mw-collapsible mw-collapsed wikitable"
! GL_Acc Object Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_GLAccClick(Sender: TObject);
var BizApp : Variant;
    lDataSet : TClientDataSet;
    ASQL : String;
begin
  //For Debtor List => SpecialAccType = DR
  //For Creditor List => SpecialAccType = CR
  BizApp := CreateOleObject('SQLAcc.BizApp');
  lDataSet := TClientDataSet.Create(Self);
  try
    ASQL := 'SELECT A.Code, A.Description FROM GL_ACC A '+
            'LEFT OUTER JOIN GL_ACC B ON (A.Dockey=B.Parent) '+
            'WHERE A.Parent<>-1 ' +
            'AND B.Dockey IS NULL ' +
            'AND A.SpecialAccType = '''' '+
            'ORDER BY A.CODE ';
    lDataSet.Data := BizApp.DBManager.Execute(ASQL);
    lDataset.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file
  finally
    lDataSet.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====GL Account List For Sales & Purchase 2====
{| class="mw-collapsible mw-collapsed wikitable"
! GL_Acc Object Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_GLAccClick(Sender: TObject);
var BizApp, BizObj : Variant;
    lDataSet1, lDataSet2 : TClientDataSet;
    ASQL : String;
begin
  //For Debtor List => SpecialAccType = DR
  //For Creditor List => SpecialAccType = CR
  BizApp := CreateOleObject('SQLAcc.BizApp');
  BizObj := BizApp.BizObjects.Find('GL_Acc');
 
  lDataSet1 := TClientDataSet.Create(Self);
  lDataSet2 := TClientDataSet.Create(Self);
  try
    ASQL :='Parent<>-1 ' +
          'AND (SpecialAccType IS NULL OR SpecialAccType = '''' ' +
          'OR SpecialAccType = '''') ';
    lDataSet1.XMLData:= BizObj.Select('Dockey,Code,Description', ASQL, 'Code', 'SX', '', '');
 
    lDataSet2.XMLData:= BizObj.Select('Parent', '', 'Code', 'SX', '', '');
 
    lDataset2.First; // Remove Parent Account
    while not lDataset2.Eof do begin
      if lDataset1.Locate('Dockey', lDataSet2.FindField('Parent').AsString, []) then
        lDataset1.Delete;
      lDataset2.Next;
    end;
    lDataset1.MergeChangeLog;
    lDataset1.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file
  finally
    lDataSet1.Free;
    lDataSet2.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer.Aging.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Aging Report Object Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxbb_AgingClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl : TClientDataset;
    s : string;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
 
  s := '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>'+
      '<FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>'+
      '<FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>'+
      '<FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>'+
      '</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>'+
      '<ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>'+
      '<ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>'+
      '<ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>'+
      '</ROWDATA></DATAPACKET>';
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.Aging.RO');
    lRptVar.Params.Find('ActualGroupBy').AsString      := 'Code;CompanyName'; //Fixed
//    lRptVar.Params.Find('AgentData').AsBlob              := ; //Not use if AllAgent is True
    lRptVar.Params.Find('AgingData').AsString          := s;
    lRptVar.Params.Find('AgingDate').AsDate            := '31 Aug 2016';
    lRptVar.Params.Find('AgingOn').AsString            := 'I'; //Fixed
    lRptVar.Params.Find('AllAgent').AsBoolean          := True;
    lRptVar.Params.Find('AllArea').AsBoolean            := True;
    lRptVar.Params.Find('AllCompany').AsBoolean        := True;
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean := True;
    lRptVar.Params.Find('AllControlAccount').AsBoolean  := True;
    lRptVar.Params.Find('AllCurrency').AsBoolean        := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean      := True;
//    lRptVar.Params.Find('AreaData').AsBlob            := ; //Not use if AllArea is True
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob := ; //Not use if AllCompanyCategory is True
//    lRptVar.Params.Find('CompanyData').AsBlob        := ; //Not use if AllCompany is True
//    lRptVar.Params.Find('ControlAccountData').AsBlob  := ; //Not use if AllControlAccount is True
//    lRptVar.Params.Find('CurrencyData').AsBlob        := ; //Not use if AllCurrency is True
//    lRptVar.Params.Find('DocProjectData').AsBlob      := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('FilterPostDate').AsBoolean      := True;
//    lRptVar.Params.Find('GroupBy
    lRptVar.Params.Find('IncludePDC').AsBoolean        := False;
    lRptVar.Params.Find('IncludeZeroBalance').AsBoolean := False;
    lRptVar.Params.Find('SortBy').AsString              := 'Code;CompanyName';
    lRptVar.Params.Find('DateTo').AsDate                := '31 Aug 2016';
    lRptVar.Params.Find('IncludeKnockedOffDetail').AsBoolean := False;
 
    lRptVar.CalculateReport;
 
    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocument').XMLData; //Detail Data - To link Master Data use Code field
 
    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
 
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====GL.CB.RO====
{| class="mw-collapsible mw-collapsed wikitable"
! GL Cash Book Report Object Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TfmMain.dxBB_CBClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl, cdsTax : TClientDataset;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  cdsTax  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('GL.CB.RO');
    lRptVar.Params.Find('AllCurrency').AsBoolean          := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean        := True;
    lRptVar.Params.Find('AllDocument').AsBoolean          := True;
    lRptVar.Params.Find('AllItemProject').AsBoolean      := True;
    lRptVar.Params.Find('AllItemArea').AsBoolean          := True;
    lRptVar.Params.Find('AllItemAgent').AsBoolean        := True;
    lRptVar.Params.Find('AllDocAgent').AsBoolean          := True;
    lRptVar.Params.Find('AllDocArea').AsBoolean          := True;
    lRptVar.Params.Find('AllPaymentMethod').AsBoolean    := False;
//    lRptVar.Params.Find('CurrencyData').AsBlob            := 'Not use if AllCurrency is true
 
//  For Post Date From & Date To'
    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2017';
    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2017';
 
//    lRptVar.Params.Find('DocProjectData').AsBlob          := //'Not use if AllDocProject is true
//    lRptVar.Params.Find('DocAreaData').AsBlob            := //Not use if AllDocArea is true
//    lRptVar.Params.Find('DocAgentData').AsBlob            := //Not use if AllDocAgent is true
//    lRptVar.Params.Find('ItemAgentData').AsBlob          := //Not use if AllItemAgent is true
    lRptVar.Params.Find('DocType').AsString              := 'PV'; //'PV for Payment Voucher & OR for Official Receipt
//    lRptVar.Params.Find('DocumentData').AsBlob            := //Not use if AllDocument is true
//    lRptVar.Params.Find('GroupBy').AsBlob                := //If you wanted to grouping the data
    lRptVar.Params.Find('IncludeCancelled').AsBoolean    := False;
//    lRptVar.Params.Find('ItemAreaData').AsBlob            := //Not use if AllItemArea is true
//    lRptVar.Params.Find('ItemProjectData').AsBlob        := //Not use if AllItemProject is true
    lRptVar.Params.Find('PaymentMethodData').AsBlob      := '310-001';
    lRptVar.Params.Find('PrintDocumentStyle').AsBoolean  := True;
    lRptVar.Params.Find('SelectDate').AsBoolean          := True; //For Post Date
//  lRptVar.Params.Find('SelectDocDate').AsBoolean  := True; 'For Doc Date
    lRptVar.Params.Find('SortBy').AsString                := 'PostDate;DocNo';
 
    lRptVar.CalculateReport;
 
    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDetail').XMLData; //Detail Data - To link Master Data use Dockey field
    cdsTax.XMLData  := lRptVar.DataSets.Find('cdsTax').XMLData; //Tax List
 
    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
    cdsTax.SaveToFile('C:\Temp\_ListT.xml');  //Export To XML file
 
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
              mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====AR_DP====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TForm1.Button1Click(Sender: TObject);
var lMain, lBizObj, lBizApp : Variant;
begin
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
 
  lBizObj := lBizApp.BizObjects.Find('AR_DP');
  lMain  := lBizObj.DataSets.Find('MainDataSet');
 
  try
    lBizObj.New;
    lMain.FindField('DOCKEY').Value        := -1;
    lMain.FindField('DocNo').AsString      := '--DP Test--';
    lMain.FindField('CODE').AsString        := '300-C0001';
    lMain.FindField('DocDate').Value        := '28 Oct 2019';
    lMain.FindField('PostDate').Value      := '28 Oct 2019';
    lMain.FindField('TAXDATE').Value        := '28 Oct 2019';
    lMain.FindField('DEPOSITACCOUNT').AsString := 'PREPAYMENT';
    lMain.FindField('PaymentMethod').AsString  := '320-000'; //Bank or Cash account
    lMain.FindField('Description').AsString    := 'Deposit For Account';
    lMain.FindField('ChequeNumber').AsString  := '';
    lMain.FindField('BankCharge').AsFloat      := 0;
    lMain.FindField('DocAmt').AsFloat          := 1000.00;
    lMain.FindField('Cancelled').AsString      := 'F';
 
    try
      lBizObj.Save;
    except
      on E: Exception do
        Memo1.Lines.Append(E.Message);
    end;
    lBizObj.Close;
    Memo1.Lines.Append('Done');
//    MessageDlg('Done', mtInformation, [mbOk], 0);
  finally
    lMain := Null;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====Customer Deposit to Customer Payment====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit to Customer Payment Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TForm1.Button2Click(Sender: TObject);
var lMain, lKO, lBizApp, lBizObj, V : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
  cdsTmp  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
 
  try
    lSQL := 'SELECT DOCKEY FROM AR_DP ' +
            'WHERE DOCNO=''--DP Test--'' ';
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);
 
    if cdsTmp.RecordCount > 0 then begin
      lBizObj := lBizApp.BizObjects.Find('AR_PM');
      lMain  := lBizObj.DataSets.Find('MainDataSet');
      lKO    := lBizObj.DataSets.Find('cdsKnockOff');
 
      lBizObj.New;
      lMain.FindField('DOCKEY').Value          := -1;
      lMain.FindField('DocNo').AsString        := '--PM Test--'; //Payment Document Number
      lMain.FindField('CODE').AsString          := '300-C0001';
      lMain.FindField('DocDate').Value          := '29 Oct 2019';
      lMain.FindField('PostDate').Value        := '29 Oct 2019';
      lMain.FindField('Description').AsString  := 'Payment for A/c';
      lMain.FindField('PaymentMethod').AsString := 'PREPAYMENT';
      lMain.FindField('DocAmt').AsFloat        := 200;
      lMain.FindField('FROMDOCTYPE').AsString  := 'DP'; //Transfer from Deposit
      lMain.FindField('FROMDOCKEY').Value      := cdsTmp.FindField('Dockey').AsFloat; //Transfer from Deposit
      lMain.FindField('Cancelled').AsString    := 'F';
      lMain.FindField('CHANGED').AsString      := 'F';
 
      V := lBizApp.CreateOleVariantArray(2);
      V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
      V.SetItem(1, 'IV-00003');  //Invoice Document Number
 
      if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
        begin
          lKO.Edit;
          lKO.FindField('KOAmt').ASFloat    := 200;
          lKO.FindField('KnockOff').AsString := 'T';
          lKO.Post;
        end;
 
      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
        lBizObj.Close;
        Memo1.Lines.Append('Done');
      //MessageDlg('AR_PM-DocNo : ''--PM Test--'' Posted...', mtInformation, [mbOK],0);
    end else
      Memo1.Lines.Append('Deposit No. Not found');
  finally
    cdsTmp.Free;
    lBizApp.Logout;
    lMain := Null;
    lBizObj := Null;
    lBizApp := Null;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====AR_DPDTL_REFUND====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit Refund Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TForm1.Button3Click(Sender: TObject);
var lMain, lBizApp, lBizObj : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
  cdsTmp  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
 
  try
    lSQL := 'SELECT DOCKEY FROM AR_DP ' +
            'WHERE DOCNO=''--DP Test--'' ';
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);
 
    if cdsTmp.RecordCount > 0 then begin
      lBizObj := lBizApp.BizObjects.Find('AR_DPDTL_REFUND');
      lMain  := lBizObj.DataSets.Find('MainDataSet');
 
      lBizObj.New;
      lMain.FindField('DOCKEY').Value          := cdsTmp.FindField('Dockey').AsFloat;
      lMain.FindField('Account').AsString      := '320-000'; //Bank or Cash account
      lMain.FindField('DocDate').Value        := '28 Oct 2019';
      lMain.FindField('PostDate').Value        := '28 Oct 2019';
      lMain.FindField('Description').AsString  := 'Deposit Refund';
      lMain.FindField('ChequeNumber').AsString := '';
      lMain.FindField('BankCharge').AsFloat    := 0;
      lMain.FindField('PAYMENTAMOUNT').AsFloat := 500.00;
 
      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
      lBizObj.Close;
      Memo1.Lines.Append('Done');
  //    MessageDlg('Done', mtInformation, [mbOk], 0);
    end else
      Memo1.Lines.Append('Deposit No. Not Found');
  finally
    cdsTmp.Free;
    lMain := Null;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
====AR_DPDTL_FORFEIT====
{| class="mw-collapsible mw-collapsed wikitable"
! Customer Deposit Forfeit Script 
|-
|
<syntaxhighlight lang="delphi">
procedure TForm1.Button4Click(Sender: TObject);
var lMain, lBizApp, lBizObj : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
  cdsTmp  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');
 
  try
    lSQL := 'SELECT DOCKEY FROM AR_DP ' +
            'WHERE DOCNO=''--DP Test--'' ';
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);
 
    if cdsTmp.RecordCount > 0 then begin
      lBizObj := lBizApp.BizObjects.Find('AR_DPDTL_FORFEIT');
      lMain  := lBizObj.DataSets.Find('MainDataSet');
 
      lBizObj.New;
      lMain.FindField('DOCKEY').Value          := cdsTmp.FindField('Dockey').AsFloat;
      lMain.FindField('Account').AsString      := '532-000'; //Forfeit account
      lMain.FindField('DocDate').Value        := '28 Oct 2019';
      lMain.FindField('PostDate').Value        := '28 Oct 2019';
      lMain.FindField('Description').AsString  := 'Deposit Forfeit';
      lMain.FindField('Amount').AsFloat        := 150.00;
 
      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
      lBizObj.Close;
      Memo1.Lines.Append('Done');
  //    MessageDlg('Done', mtInformation, [mbOk], 0);
    end else
      Memo1.Lines.Append('Deposit No. Not Found');
  finally
    cdsTmp.Free;
    lMain := Null;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;
</syntaxhighlight>
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
==FAQ==
===Problem with opening CHM Help files?===
# Right click the chm file & select Properties
# At General tab Click Unblock button.
# Click Apply | Ok.
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===Still can't open CHM file?===
# Login SQL Accounting
# Click Tools | Options | General
# Click Register & follow wizard
# Exit SQL Accounting
# Login SQL Accounting
# Run CHM File
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===Why when I compile my program with stated unknown method or unknown identifier?===
:If you compiler had error may try add the '''esfw10.dll''' file under the SQL Accounting\bin folder
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===How to make sure I login to correct database?===
* Can use the '''Common.Agent.RO''' Report Objects to get the Profile info.
* Then use the cdsProfile Dataset
: - CompanyName Field
: - Remark Field
* Refer to [https://wiki.sql.com.my/wiki/SDK_Live#Get_Company_Profile Get Company Profile]
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===Why after post to SQL Accounting the Description3 (More Description)/Notes field it show like this "M y  D e s c r i p t i o n" instead of "My Description"?===
:Make sure you use '''.AsString''' in your code (see example below)
{| class="mw-collapsible mw-collapsed wikitable"
! Description3 Field Script/Code 
|-
|
 
...
  lDtl.FindField('DESCRIPTION3').'''AsString'''  := 'Sales Item A More Description'+ #13 + 'I in 2nd line';
...
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===Can I Ignore Doc No Field & let SQL Accounting to Auto Assign?===
:Yes but we not recommended as you will lost track when user wanted to know which Doc No in SQL Acc is posted.
: To Set Auto Assign set it as below
{| class="mw-collapsible mw-collapsed wikitable"
! DocNo Field Script/Code 
|-
|
 
...
  lMain.FindField('DocNo').'''AsString'''  := '<<New>>';
...
lDocNo := lMain.FindField('DocNo').AsString; //To Get docno after post
|}
 
<div style="float: right;">  [[#top|[top]]]</div>
 
===Can I Auto Login & Logout SQL Accounting when doing & after Posting?===
: Yes can below is example script
: Only work if that PC is no once is using SQL Accounting
{| class="mw-collapsible mw-collapsed wikitable"
! C Sharp 
|-
|
<syntaxhighlight lang="C#">
Int32 lBuildNo;
dynamic ComServer;
public void CheckLogin()
{           
    lBizType = Type.GetTypeFromProgID("SQLAcc.BizApp");
    ComServer = Activator.CreateInstance(lBizType);
           
    if (!ComServer.IsLogin)
    {
        try
        {
            ComServer.Login(edUN.Text, edPW.Text, edDCF.Text, edDB.Text);
            ComServer.Minimize();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            FreeBiz(ComServer);
        }
    }
    if (ComServer.IsLogin)
    {
        lBuildNo = ComServer.BuildNo;
    }
}
public void FreeBiz(object AbizObj)
{
    System.Runtime.InteropServices.Marshal.ReleaseComObject(AbizObj);
}
private void btnExport_Click(object sender, EventArgs e)
{
    dynamic BizObject, lMain, lDocKey;
 
    CheckLogin();
    //'Step 2: Find and Create the Biz Objects
    BizObject = ComServer.BizObjects.Find("Agent");
 
    //Step 3: Set Dataset
    lMain = BizObject.DataSets.Find("MainDataSet");    //lMain contains master data
 
    //Step 4: Search
    lDocKey = BizObject.FindKeyByRef("CODE", edCode.Text);
    try
    {
        try
        {
            //Step 5 : Insert or Update
            if (Convert.IsDBNull(lDocKey))
            {
                BizObject.New();
                lMain.FindField("CODE").value = edCode.Text;
                lMain.FindField("DESCRIPTION").value = edDesc.Text;
            }
            else
            {//Edit Data if found
                BizObject.Params.Find("CODE").Value = lDocKey;
                BizObject.Open();
                BizObject.Edit();
                lMain.FindField("DESCRIPTION").value = edDesc.Text;
            }
            //Step 6: Save & Close
            BizObject.Save();
            MessageBox.Show("Done", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
    finally
    {
        BizObject.Close();
 
        //Step 7 : Logout after done           
        FreeBiz(BizObject);
        ComServer.Logout();
        FreeBiz(ComServer);
    }           
}
</syntaxhighlight>
|}
 
{| class="mw-collapsible mw-collapsed wikitable"
! Delphi 
|-
|
<syntaxhighlight lang="delphi">
....
  public
    { Public declarations }
    lBizApp : variant;
  end;
....
 
procedure TForm1.CheckLogin;
begin
  lBizApp := null;
  lBizApp := CreateOleObject('SQLAcc.BizApp');
 
  if not lBizApp.IsLogin then begin
    lBizApp.Login(edUN.Text, edPW.Text, edDCF.Text, edDB.Text); //Login with preset setting
    lBizApp.Minimize; //Mininise the SQLAccounting
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var BizObject, lMain : Variant;
begin
  try
    //Begin Loop your data
    try
      CheckLogin;
      BizObject := lBizApp.BizObjects.Find('Agent');
      lMain    := BizObject.DataSets.Find('MainDataSet');
      BizObject.New;
      lMain.FindField('CODE').AsString := 'HALIM';
      lMain.FindField('Description').AsString := 'HALIM 123';
      BizObject.save;
    except
      on E: Exception do
        MmLog.Lines.Append(E.Message);
    end;
    //
  finally
    BizObject.close;
    BizObject := null;
    lBizApp.Logout;
    lBizApp := null;
  end;
end;
</syntaxhighlight>
|}
 
{| class="mw-collapsible mw-collapsed wikitable"
! VB Script 
|-
|
<syntaxhighlight lang="vb">
'Copy below script & paste to notepad & name it as eg Agent.vbs
Call PostData
   
Function CreateSQLAccServer
   Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
   
Function PostData
Dim ComServer, BizObject
   
   'Step 1: Create Com Server object
   Set ComServer = CreateSQLAccServer 'Create Com Server
    
   Set WScr = CreateObject("WScript.Shell")
   WScript.Sleep 1000 '//Wait 1 second for system loading before proceed


   'Step 2: Force Logout to make sure login correct database
   'Step 2: Force Logout to make sure login correct database
   If ComServer.IsLogin Then 'if user hasn't logon to SQL application
   If ComServer.IsLogin Then 'if user hasn't logon to SQL application
     ComServer.Logout
     ComServer.Logout
   END IF
   END IF
   'Step 3: Login  
   'Step 3: Login  
   ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0015.FDB"  
   ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0015.FDB"  
 
 
   'Step 4: Find and Create the Biz Objects
   'Step 4: Find and Create the Biz Objects
   Set BizObject = ComServer.BizObjects.Find("Agent")  
   Set BizObject = ComServer.BizObjects.Find("Agent")  
   
   
   'Step 5: Set Dataset
   'Step 5: Set Dataset
   Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
   Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
 
 
    
    
   'Step 6 : Posting
   'Step 6 : Posting
     BizObject.New
     BizObject.New
     lMain.FindField("CODE").AsString          = "_Test_"
     lMain.FindField("CODE").AsString          = "_Test_"
     lMain.FindField("Description").AsString  = "Testing 123"
     lMain.FindField("Description").AsString  = "Testing 123"
 
 
   'Step 7: Save Document
   'Step 7: Save Document
     BizObject.Save
     BizObject.Save
     BizObject.Close
     BizObject.Close
   'Step 8: Logout
   'Step 8: Logout
     ComServer.Logout
     ComServer.Logout
MsgBox "Done"
MsgBox "Done"
End Function
End Function
</syntaxhighlight>
</syntaxhighlight>
|}
|}
 
 
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
 
 
===When Post System Prompt Operation aborted Error===
===When Post System Prompt Operation aborted Error===
: This happen when the Login User ID don't had the to '''Override Sales Min/Max Price''' &  
: This happen when the Login User ID don't had the to '''Override Sales Min/Max Price''' &  
: Use '''Last Price XXX''' (In Tools | Options | Unit Price) &  
: Use '''Last Price XXX''' (In Tools | Options | Unit Price) &  
: 1 of record is below Min Price.
: 1 of record is below Min Price.
'''Solution'''
'''Solution'''
: Can try change the Posting Seq like below (UOM then Qty)
: Can try change the Posting Seq like below (UOM then Qty)
{| class="mw-collapsible mw-collapsed wikitable"
{| class="mw-collapsible mw-collapsed wikitable"
! Sequence Field Script/Code   
! Sequence Field Script/Code   
|-
|-
|  
|  
 
 
...
...
     lDetail.Append();
     lDetail.Append();
     lDetail.FindField("DtlKey").value = -1;
     lDetail.FindField("DtlKey").value = -1;
     lDetail.FindField("DocKey").value = -1;
     lDetail.FindField("DocKey").value = -1;
     lDetail.FindField("Seq").value = 3;
     lDetail.FindField("Seq").value = 3;
     lDetail.FindField("ItemCode").AsString = "ANT";
     lDetail.FindField("ItemCode").AsString = "ANT";
     lDetail.FindField("Description").AsString = "Sales Item B";
     lDetail.FindField("Description").AsString = "Sales Item B";
     //lDetail.FindField("Account").AsString = "500-000"; To override the Sales Account Code
     //lDetail.FindField("Account").AsString = "500-000"; To override the Sales Account Code
     '''lDetail.FindField("UOM").AsString = "UNIT";'''
     '''lDetail.FindField("UOM").AsString = "UNIT";'''
     '''lDetail.FindField("Qty").AsFloat = 2;'''
     '''lDetail.FindField("Qty").AsFloat = 2;'''
     //lDetail.FindField("DISC").AsString = "5%+3"; //Optional(eg 5% plus 3 Discount)
     //lDetail.FindField("DISC").AsString = "5%+3"; //Optional(eg 5% plus 3 Discount)
     lDetail.FindField("Tax").AsString = "SR";
     lDetail.FindField("Tax").AsString = "SR";
     lDetail.FindField("TaxRate").AsString = "6%";
     lDetail.FindField("TaxRate").AsString = "6%";
     lDetail.FindField("TaxInclusive").value = 0;
     lDetail.FindField("TaxInclusive").value = 0;
     lDetail.FindField("UnitPrice").AsFloat = 100;
     lDetail.FindField("UnitPrice").AsFloat = 100;
     lDetail.FindField("Amount").AsFloat = 200;
     lDetail.FindField("Amount").AsFloat = 200;
     lDetail.FindField("TaxAmt").AsFloat = 12;
     lDetail.FindField("TaxAmt").AsFloat = 12;
     lDetail.Post();
     lDetail.Post();
...
...
|}
|}
<div style="float: right;">  [[#top|[top]]]</div>
<div style="float: right;">  [[#top|[top]]]</div>
 
===How do my system know there is a changes or update in SQLAccounting?===
'''Data Entry'''<br>
: In all Document it had a field call <span style="color:#0000ff">UPDATECOUNT</span>.
: Default is null & each changes will +1.
: So if you see 2 meaning it had being update 2 times


===How do my system know there is a changes or update in SQLAccounting?===
: Only available in  
'''Data Entry'''<br>
:* Version 1001.858 & above
: In all Document it had a field call <span style="color:#0000ff">UPDATECOUNT</span>.
: In Each table it had a field call <span style="color:#0000ff">LASTMODIFIED</span>.
: Default is null & each changes will +1.
: The value is '''Epoch Time''' or '''Unix Time'''
: So if you see 2 meaning it had being update 2 times


'''Master Data'''
'''Master Data'''

Latest revision as of 01:19, 16 November 2024

Introduction

This is the "Bridge" direct live linking between External Program with SQL Accounting

Pros

  1. Can Live or Batch Update.
  2. Can do action such as New, Edit & Delete.
  3. About 95% of modules is covered.
  4. Can direct Retrieve/Get Information From Connected Database.
  5. Able to do Automation (i.e. auto login & update data).
  6. Support GST & SST.
  7. Free of Charge (Freeware) for End User on SDK Linking.

Cons

  1. Must had programming knowledge.
  2. Must had SQL Accounting installed & running.
  3. Must self do checking else error prompt will unable to “capture”.
  4. Only supported in IE for JScript

Requirement

  • Microsoft Windows 8.1 and above (recommended with 64 bits windows)
  • Intel i5, i7 and above computer.
  • 8 GB of RAM (recommended 12 GB and above).
  • Firebird (For Automatic Login & Logout Only)
  • SQL Accounting
  • Windows Scheduler (For Automatic Login & Logout Only)

Documentation

Linking Flow

  • Highlight in Yellow Color is the Windows base Application/Function you need to Develop/Create.

Example 1 - POS System

LinkFlow-Example01.jpg

Example 2 - Cloud/Mobile System

LinkFlow-Example02.jpg
  • The SDK can be build in in your system or a Standalone windows Application(Middle Application).
  • If you build in your system then it can be sync anytime either by a special interface with parameter (eg Date From, Date To & etc) or each transaction after post(not recommended)
  • If you create a Standalone windows Application(Middle Application) you can make use the Windows Schedule to sync or call from you system to execute/run the Standalone windows Application(Middle Application).

Steps

CHM File

  1. Install SQL Accounting Click here
  2. Create Sample Data
  3. Login (username & password is Admin)
  4. Double click the SQLSDK.chm file
  5. Click Application Object | Business Objects
  6. Click the word "here"
  7. Click Yes
  8. In the list Look for (example)
- AR_IV -> Customer Invoice
- AR_CN -> Customer Credit Note
- AP_PI -> Supplier Invoice
- SL_IV -> Sales Invoice
- PH_PI -> Purchase Invoice
- ST_AJ -> Stock Adjustment

External Application Linking

  1. Login SQL Accounting
  2. Login External Application
  3. Click Post to SQL Accounting button or Click Save button from External Application.
----------------------------------------------------------------------------------------------------------------------------------------------------
Template.Tips-01.jpg
Can try start with Add Agent under the SDK file to make sure you
Application can communicate with SQL Accounting
----------------------------------------------------------------------------------------------------------------------------------------------------

Available Programming Language

Summary Document Flow by Programming Language

Example External Program

VB. Net

C Sharp

Steps (C Sharp & VB.Net Only)

The example video is how to

01. Open DCF in D:\Happy\DB\Default.DCF
02. Datatabase is ACC-0008.FDB
03. Click Complete Post button
04. Where to check in SQL accounting after Post (Steps-2.gif)

Available Function

- Complete Post - SL_CS, SL_CN, AR_PM, AR_CN & AR_CF
- Batch Post - Cash Sales - SL_CS
- Batch Post...2 DB
- Batch Post...2 DCF
- Add Stock Assembly with Override Raw Materials - ST_AS
- Add Stock Job Order to Stock Assembly with Override Raw Materials - PD_JO & ST_AS
- Add Agent - Agent
- Get Agent Description
- Add Journal Voucher - Add GL JE
- Edit GL Journal Voucher - Edit GL_JE
- Edit Sales Cash Sales - SL_CS
- Delete Cash Sales - Del SL CS - SL_CS
- Customer Aging - Customer.Aging.RO
- Get Sales Invoice Listing - Sales.IV.RO
- Stock Item List
- Add SKU with Edit SKU - ST_ITEM
- Del SKU - ST_ITEM
- Get DCF Database List
- Month End - FIFO
- Month End - WA (Weighted Average)
- Get Options...(Perform Tax / Local Amount Rounding, 5 Cents Rounding (Sales Invoice) & 5 Cents Rounding (Cash Sales)
- Get Next Invoice No.
- Is Valid ST_Item
- Is Valid GL_Acc
- Outstanding SO - Sales.OutstandingSO.RO
- Read RTF n Picture Data...
- Get Customer List - AR_Customer
- Add Customer with Edit Customer - AR_Customer
- Del Customer - AR_Customer
- Add GL Payment Voucher - Add GL_PV
- Transfer Document - DO to SL_IV
- Get Transfer Info. 1 - At Invoice Find DO Number & Date
- Get Transfer Info. 2 - At DO Find Invoice Number & Date
- GL Ledger
- Add Stock Transfer - Add ST XF
- Add Stock Adjustment - Add ST AJ
- Get Serial Number Balance - Serial No. Bal.
- Add Customer Deposit - Deposit
- Transfer Customer Deposit to Payment - Deposit to PM
- Refund Deposit - Deposit Refund
- Forfeit Deposit - Deposit Forfeit
- Enable Support DocNo Format with Month & Year Format
- Add AR IV
- Add AR CN
- Add AR PM Bounce Chq
- Add GL Ledger RO
- AR Statement
- Add Add/Edit AR PM
- Add LogInOut (For Testing purpose)

History - C Sharp & VB.Net

19 Aug 2023...
- Add Add/Edit AR PM
- Add LogInOut (For Testing purpose)
14 Jun 2022
- Add AR Statement
- Fix Error when click 2nd time for Report.
27 Apr 2022
- Add/Edit Location
- Rename Caption for Add Customer to Add/Edit Cust
- Rename Caption for Add Agent to Add/Edit Agent
- Add Reconnect
- Add/Edit ST_Batch
- Fix bug on KillApp should Sleep 2 seconds after run the KillApp
18 Mar 2021
- Enable Support DocNo Format with Month & Year Format
- Add AR IV
- Add AR CN
- Add AR PM Bounce Chq
- Add GL Ledger RO
22 May 2020
- Fix Complete Post Action cause SQLAcc still not exit after logout
- Add/Edit Customer Contra
28 Mar 2020
- SL DO to SL IV button - Check Transfer Status should excluded Cancelled
- Add Get Transfer Info. 1 - At Invoice Find DO Number & Date
- Add Get Transfer Info. 2 - At DO Find Invoice Number & Date
04 Mar 2020
- Add Post with Serial Number for Complete Post
- Fix Posting Seq Error on Complete Post
- Add GL JE
- Add GL_PV
- Add Additional Note for Outstanding SO button
05 Feb 2020
- Add Customer Deposit
- Add Customer Deposit to PM
- Add Customer Deposit Refund
- Add Customer Deposit Forfeit
- Add SL DO to SL IV
- Add 12 Months Aging Parameter for Customer.Aging.RO
- Add Add ST AJ - Stock Adjustment
- Add Add ST XF - Stock Transfer
22 Oct 2019
- Add GL Ledger function
- Add Cust. IV Listing function
- Add Serial No. Bal function
- Fixed Error on Auto Logout Error when using ComServer.DBManager.NewDataSet(lSQL)
23 Aug 2019
- Add Del SKU function
- Add Customer List... function
- Add Add Customer function
- Add Del Customer function
- Add Del SL CS function
31 Jul 2019
- Add Read RTF n Picture Data... function.
10 Jul 2019
- Fixed KillApp function not working in some situation.
11 Jun 2019
- Fixed Auto Logout Prompt Error.
- Fixed SQLAcc not Fully Exit when Call Auto Logout.
- Fixed Batch Post 2 DB error for CSharp
06 Jun 2019
- Fixed unable to Update Stock Item for Add SKU.
- Add Update UOM for Add SKU.
- Add C Sharp Coding
23 May 2019
- Update Complete Post - Add Description3 (More Description)
- Fixed Batch Post.. keep login when looping
- Add Get Outstanding SO - Sales.OutstandingSO.RO
05 May 2019
- Add Condition for Stock Item List only filter if edCode is not empty
- Add Prompt Message If Login Fail
- Add SQLAcc Build No Condition for Get Sales Invoice Listing to support version 776 & above
- Add SKU - ST_ITEM



ASP.Net C Sharp

01. Make sure Enabled the following function in IIS Manager - Sites - YourSiteName - Authentication

- Anonymous Authentication
- ASP.Net Impersonation (Make sure set Specific user (Windows Login User & Password))

02 Make sure the Windows user set in ASP.Net Impersonation is Login

Available Function

- Get Agent Description
- New & Update Customer/Supplier Info.
- Edit Cash Sales
- Edit Purchase Invoice
- Complete Post
- GL PV
- Add Add/Edit Agent
- Add Add/Edit Terms
- Add Add/Edit ST Item
- Delete Cash Sales
- Add SL SO

History

16 Aug 2021
- Add SL SO
19 Feb 2021
- Delete Cash Sales
16 Sep 2020
- Add Add/Edit ST Item
- Fix some comment note error
23 Jun 2020
- Add Add/Edit Agent
- Add Add/Edit Terms
22 May 2020
- Add Edit Purchase Invoice
- Add Complete Post
- Add GL PV
06 Dec 2019
- Add Edit Cash Sales
- Enable Run Time Set User Name, Password, DCF & FDB


Python

Module Require in Python
- pypiwin32 (Mandatory) -> pip install pypiwin32
- Pillow (Optional for Picture) -> pip install Pillow

Common

  • Common.py file for example code
Common Function
#Updated 03 Oct 2023
import win32com.client
import Common
import os
from time import sleep

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def KillApp():
    os.system('cmd /c "taskkill /IM "SQLACC.exe" /F"')
    sleep(2) #sleep 2 sec


def CheckLogin():
    global ComServer
    ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
        KillApp()
 
    ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
    try:    
        ComServer.Login("ADMIN", "ADMIN", #UserName, Password
                        "D:\\Happy\\DB\\Default.DCF",
                        #"C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                        "ACC-0015.FDB") #Database Name
    except Exception as e:
        print("Oops !", e)


def ShowResult(ADataset):
    if ADataset.RecordCount > 0:
        while not ADataset.eof:
            fc = ADataset.Fields.Count
            for x in range(fc):
                fn = ADataset.Fields.Items(x).FieldName
                fv = ADataset.FindField(fn).AsString
                lresult = "Index : "+ str(x) + " FieldName : " + fn + " Value : " + fv
                print (lresult)
            print("====")
            ADataset.Next()
    else:
        print ("Record Not Found")
        
        
def QuotedStr(ACode):
    return "'" + ACode.replace("'", "''") + "'"

Agent

Agent Script
#Updated 22 Jul 2023
import Common
       
def GetListData():
    lSQL = "SELECT * FROM AGENT "
    lSQL = lSQL + "WHERE ISACTIVE='T' "
    lSQL = lSQL + "ORDER BY CODE "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("Agent")
    lMain = BizObject.DataSets.Find("MainDataSet")    
    
    lDocKey = BizObject.FindKeyByRef("CODE", "FAIRY")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("CODE").value = "FAIRY"
        lMain.FindField("DESCRIPTION").value = "FAIRY TAIL"

    else:
        BizObject.Params.Find("Code").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.FindField("DESCRIPTION").value = "FAIRY TAIL WIZARD"
            
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never use in other document
    BizObject = ComServer.BizObjects.Find("Agent")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "FAIRY")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("CODE").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")

    ComServer.Logout()
finally:
    ComServer = None
    Common.KillApp()

Get Company Profile

Get Company Profile
#Updated 22 Jul 2023
import Common

def GetData():
    lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, "
    lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, "
    lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    
    Common.ShowResult(lDataSet)
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer       
    GetData()
    ComServer.Logout()
finally:
    ComServer = None
    Common.KillApp()

Complete Post

SL_CS, AR_PM, SL_CN & AR_CN Script
#Updated 19 Jul 2023
#This will doing following posting
#01. Cash Sales
#02. Sales Credit Note
#03. Customer Payment With Knock off
#04. Edit Credit Note Posted in Step 02 & Knock Off
#05. Customer Refund to Knock off Credit Note
import Common
import datetime

def PostDataCS():    
    BizObject = ComServer.BizObjects.Find("SL_CS")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    BizObject.New();
    lMain.FindField("DocNo").AsString = "--IV Test--"
    lMain.FindField("DocDate").value = lDate
    lMain.FindField("PostDate").value = lDate
    lMain.FindField("Code").AsString = "300-C0001" #Customer Account
    lMain.FindField("CompanyName").AsString = "Cash Sales"
    lMain.FindField("Address1").AsString = "" #Optional
    lMain.FindField("Address2").AsString = "" #Optional
    lMain.FindField("Address3").AsString = "" #Optional
    lMain.FindField("Address4").AsString = "" #Optional
    lMain.FindField("Phone1").AsString = ""   #Optional
    lMain.FindField("Description").AsString = "Sales"

    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    lDetail.Append()
    lDetail.FindField("Seq").value = 1
    lDetail.FindField("Account").AsString = "500-000" #Sales Account
    lDetail.FindField("Description").AsString = "Sales Item A"
    lDetail.FindField("Description3").AsString = ("Item A Line 1" + ("\r" + "Item A Line 2"))
    lDetail.FindField("Qty").AsFloat = 1
    lDetail.FindField("Tax").AsString = "SV"
    lDetail.FindField("TaxRate").AsString = "6%"
    lDetail.FindField("TaxInclusive").value = 0
    lDetail.FindField("UnitPrice").AsFloat = 435
    lDetail.FindField("Amount").AsFloat = 410.37 #Exclding GST Amt
    lDetail.FindField("TaxAmt").AsFloat = 24.63

    lDetail.DisableControls()
    lDetail.FindField("TaxInclusive").value = 1
    lDetail.EnableControls()
    
    lDetail.Post()

    #For Tax Inclusive = False with override Tax Amount
    lDetail.Append()
    lDetail.FindField("Seq").value = 2
    lDetail.FindField("Account").AsString = "500-000"
    lDetail.FindField("Description").AsString = "Sales Item B"
    lDetail.FindField("Qty").AsFloat = 1
    lDetail.FindField("Tax").AsString = "SV"
    lDetail.FindField("TaxRate").AsString = "6%"
    lDetail.FindField("TaxInclusive").value = 0
    lDetail.FindField("UnitPrice").AsFloat = 94.43
    lDetail.FindField("Amount").AsFloat = 94.43
    lDetail.FindField("TaxAmt").AsFloat = 5.66
    lDetail.Post()
    
    #For With Item Code
    lDetail.Append()
    lDetail.FindField("Seq").value = 3
    lDetail.FindField("ItemCode").AsString = "ANT"
    lDetail.FindField("Description").AsString = "Sales Item B"
    #lDetail.FindField("Account").AsString     = "500-000" #If you wanted override the Sales Account Code
    lDetail.FindField("Qty").AsFloat = 2
    lDetail.FindField("UOM").AsString = "UNIT"
    #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
    lDetail.FindField("Tax").AsString = "SV"
    lDetail.FindField("TaxRate").AsString = "6%"
    lDetail.FindField("TaxInclusive").value = 0
    lDetail.FindField("UnitPrice").AsFloat = 100
    lDetail.FindField("Amount").AsFloat = 200
    lDetail.FindField("TaxAmt").AsFloat = 12
    lDetail.Post()    
    
    BizObject.Save()
    BizObject.Close()

def PostDataPM():       
    BizObject = ComServer.BizObjects.Find("AR_PM")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsKnockOff") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    BizObject.New()
    lMain.FindField("DocNo").AsString = "--PM Test--"
    lMain.FindField("CODE").AsString = "300-C0001" #Customer Account
    lMain.FindField("DocDate").Value = lDate
    lMain.FindField("PostDate").Value = lDate
    lMain.FindField("Description").AsString = "Payment for A/c"
    lMain.FindField("PaymentMethod").AsString = "320-000" #Bank or Cash Account
    lMain.FindField("ChequeNumber").AsString = ""
    lMain.FindField("BankCharge").AsFloat = 0
    lMain.FindField("DocAmt").AsFloat = 200.00
    lMain.FindField("Cancelled").AsString = "F"    
    
    #Knock Off IV  
    V = ["IV", "--IV Test--"]  #DocType, DocNo
    
    if (lDetail.Locate("DocType;DocNo", V, False, False)) :
        lDetail.Edit()
        lDetail.FindField("KOAmt").AsFloat = 147.09 #Partial Knock off
        lDetail.FindField("KnockOff").AsString = "T"
        lDetail.Post()
        
    BizObject.Save()
    BizObject.Close()
    
def PostDataCN():   
    BizObject = ComServer.BizObjects.Find("SL_CN")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    BizObject.New()
    lMain.FindField("DocNo").AsString = "--CN Test--"
    lMain.FindField("DocDate").value = lDate
    lMain.FindField("PostDate").value = lDate
    lMain.FindField("Code").AsString = "300-C0001"
    lMain.FindField("CompanyName").AsString = "Cash Sales"
    lMain.FindField("Address1").AsString = ""
    lMain.FindField("Address2").AsString = ""
    lMain.FindField("Address3").AsString = ""
    lMain.FindField("Address4").AsString = ""
    lMain.FindField("Phone1").AsString = ""
    lMain.FindField("Description").AsString = "Sales Returned"

    #For With Item Code
    lDetail.Append()
    lDetail.FindField("ItemCode").AsString = "ANT"
    lDetail.FindField("Description").AsString = "Sales Item B"
    lDetail.FindField("Description2").AsString = "Product Spoil" #Reason
    lDetail.FindField("Remark1").AsString = "--IV Test--"   #Invoice No
    lDetail.FindField("Remark2").AsString = "01 Jan 2017"   #Invoice Date
    lDetail.FindField("Qty").AsFloat = 1
    lDetail.FindField("Tax").AsString = "SV"
    lDetail.FindField("TaxRate").AsString = "6%"
    lDetail.FindField("TaxInclusive").value = 0
    lDetail.FindField("UnitPrice").AsFloat = 100
    lDetail.FindField("Amount").AsFloat = 100
    lDetail.FindField("TaxAmt").AsFloat = 6
    lDetail.Post()

    #Save Document
    BizObject.Save()
    BizObject.Close()    
    
def PostKnockIVCN():
    BizObject = ComServer.BizObjects.Find("AR_CN")
    lMain = BizObject.DataSets.Find("MainDataSet")
    lDetail = BizObject.DataSets.Find("cdsKnockOff")
    
    #Find CN Number
    lDocNo = "--CN Test--"
    lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
    BizObject.Params.Find("DocKey").Value = lDocKey
    
    if lDocKey is not None:
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        
        #Knock Off IV        
        V = ["IV", "--IV Test--"]  #DocType, DocNo
        
        if (lDetail.Locate("DocType;DocNo", V, False, False)) :
            lDetail.Edit()
            lDetail.FindField("KOAmt").AsFloat = 100 #Partial Knock off
            lDetail.FindField("KnockOff").AsString = "T"
            lDetail.Post()
        
    BizObject.Save()
    BizObject.Close()        

def PostDataCF():       
    BizObject = ComServer.BizObjects.Find("AR_CF")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsKnockOff") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    BizObject.New()
    lMain.FindField("DocNo").AsString = "--CF Test--"
    lMain.FindField("CODE").AsString = "300-C0001" #Customer Account
    lMain.FindField("DocDate").Value = lDate
    lMain.FindField("PostDate").Value = lDate
    lMain.FindField("Description").AsString = "Payment for A/c"
    lMain.FindField("PaymentMethod").AsString = "320-000" #Bank or Cash Account
    lMain.FindField("ChequeNumber").AsString = ""
    lMain.FindField("BankCharge").AsFloat = 0
    lMain.FindField("DocAmt").AsFloat = 6
    lMain.FindField("Cancelled").AsString = "F"    
    
    #Knock Off Credit Note  
    V = ["CN", "--CN Test--"]  #DocType, DocNo
    
    if (lDetail.Locate("DocType;DocNo", V, False, False)) :
        lDetail.Edit()
        lDetail.FindField("KOAmt").AsFloat = 4 #Partial Knock off
        lDetail.FindField("KnockOff").AsString = "T"
        lDetail.Post()
        
    BizObject.Save()
    BizObject.Close()

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    print ("Posting Cash Sales")
    PostDataCS()
    print ("Posting Payment")
    PostDataPM()
    print ("Posting Sales CN")
    PostDataCN()
    print ("Posting Knock Off CN")
    PostKnockIVCN()
    print ("Posting Customer Refund")
    PostDataCF()
    print ("Done")
    ComServer.Logout()
finally:
    ComServer = None
    Common.KillApp()

Get Picture & Description3(Rich Text)

Get Picture & Description3(Rich Text) Script
#Updated 02 Aug 2023
import os, sys
import Common
from io import BytesIO
from PIL import Image

def GetData():
    lSQL = "SELECT Description3, Picture FROM ST_ITEM "
    lSQL = lSQL + "WHERE Code='ANT' "
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)

    imgdata = BytesIO(lDataSet.FindField('Picture').Value)
    dt = Image.open(imgdata)
    dt.save("test.jpg")
    print ("Done Export Picture file...")
    #print (lDataSet.FindField('Picture').Value)
    
    rtf = lDataSet.FindField('Description3').AsString
    print (rtf)
    
    with open('out.rtf', 'w') as output:
        output.write(rtf)
        output.close()
    print ("Done Export RTF file...")
    
    txt = ComServer.Utility.RichTextToPlainText(rtf)
    print (txt)
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer    
    GetData()
    ComServer.Logout()
finally:    
    ComServer = None
    Common.KillApp()

Get Invoice Next Number

Get Invoice Next Number Script
#Updated 19 Jul 2023
import Common

def GetData():
    lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A "
    lSQL = lSQL + "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) "
    lSQL = lSQL + "WHERE A.DOCTYPE='IV' "
    lSQL = lSQL + "AND A.DESCRIPTION='Customer Invoice' "
    lSQL = lSQL + "AND A.STATESET=1 "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    
    fmt = lDataSet.FindField('Format').AsString
    NextNo = lDataSet.FindField('NEXTNUMBER').AsFloat
    print (fmt % NextNo)
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer       
    GetData()
    ComServer.Logout()
finally:
    ComServer = None
    Common.KillApp()

Stock Item

Stock Item Script
#Updated 21 Dec 2023
import Common
       
def GetListData():
    lSQL = "SELECT A.*, B.UOM, B.RATE, B.REFCOST, B.REFPRICE, B.ISBASE FROM ST_ITEM A "
    lSQL = lSQL + "INNER JOIN ST_ITEM_UOM B ON (A.CODE=B.CODE) "
    lSQL = lSQL + "WHERE A.ISACTIVE='T' "
    lSQL = lSQL + "ORDER BY A.CODE, B.RATE" 
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("ST_ITEM")
    lMain = BizObject.DataSets.Find("MainDataSet")
    lDtl = BizObject.DataSets.Find("cdsUOM")
    LBar = BizObject.DataSets.Find("cdsBarcode")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "FAIRY")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("CODE").value = "FAIRY"
        lMain.FindField("DESCRIPTION").value = "FAIRY TAIL"
        lMain.FindField("STOCKGROUP").value = "DEFAULT";
        lMain.FindField("STOCKCONTROL").value = "T";
        lMain.FindField("ISACTIVE").value = "T";

        lDtl.Edit() #For 1St UOM
        lDtl.FindField("UOM").AsString = "PCS"
        lDtl.FindField("Rate").AsFloat = 1
        lDtl.FindField("RefCost").AsFloat = 10.2
        lDtl.FindField("RefPrice").AsFloat = 25
        lDtl.Post()

        lDtl.Append() #For 2nd UOM
        lDtl.FindField("UOM").AsString = "CTN"
        lDtl.FindField("Rate").AsFloat = 12
        lDtl.FindField("RefCost").AsFloat = 102
        lDtl.FindField("RefPrice").AsFloat = 240
        lDtl.Post()
        
        LBar.Append() #For 1St UOM Barcode
        LBar.FindField("Barcode").AsString = "123456"
        LBar.FindField("UOM").AsString = "PCS"
        LBar.Post()

        LBar.Append() #For 2nd UOM Barcode
        LBar.FindField("Barcode").AsString = "7890123"
        LBar.FindField("UOM").AsString = "CTN"
        LBar.Post()
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.FindField("DESCRIPTION").value = "FAIRY TAIL WIZARD"
        
        while lDtl.RecordCount > 0:
            lDtl.First()
            lDtl.Delete()

        #Insert back with new Price
        lDtl.Append() #For 1St UOM
        lDtl.FindField("UOM").AsString = "PCS" #Make sure this always same as b4 delete data
        lDtl.FindField("Rate").AsFloat = 1     #Make sure this always same as b4 delete data
        lDtl.FindField("RefCost").AsFloat = 22.3
        lDtl.FindField("RefPrice").AsFloat = 52
        lDtl.FindField("ISBASE").AsFloat = 1 
        lDtl.Post();

        lDtl.Append()  #For 2nd UOM
        lDtl.FindField("UOM").AsString = "CTN" #Make sure this always same as b4 delete data
        lDtl.FindField("Rate").AsFloat = 12    #Make sure this always same as b4 delete data
        lDtl.FindField("RefCost").AsFloat = 102.5
        lDtl.FindField("RefPrice").AsFloat = 260.45
        lDtl.FindField("ISBASE").AsFloat = 0 
        lDtl.Post()
    
        while LBar.RecordCount > 0:
            LBar.First()
            LBar.Delete()    

        LBar.Append() #For 1St UOM Barcode
        LBar.FindField("Barcode").AsString = "888888"
        LBar.FindField("UOM").AsString = "PCS"
        LBar.Post()

        LBar.Append() #For 2nd UOM Barcode
        LBar.FindField("Barcode").AsString = "999999"
        LBar.FindField("UOM").AsString = "CTN"
        LBar.Post()
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never use in other document
    BizObject = ComServer.BizObjects.Find("ST_ITEM")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "FAIRY")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
    ComServer.Logout()
finally:
    ComServer = None
    Common.KillApp()

AR_Customer

AR_Customer Script
#Updated 22 Jul 2023
import Common
       
def GetListData():
    lSQL = "SELECT A.*, B.BRANCHTYPE, B.BRANCHNAME, B.ADDRESS1, B.ADDRESS2, B.ADDRESS3, B.ADDRESS4, "
    lSQL = lSQL + "B.GEOLAT, B.GEOLONG, B.ATTENTION, B.PHONE1, B.PHONE2, B.MOBILE, B.FAX1, B.FAX2, B.EMAIL "
    lSQL = lSQL + "FROM AR_CUSTOMER A "
    lSQL = lSQL + "INNER JOIN AR_CUSTOMERBRANCH B ON (A.CODE=B.CODE) "
    lSQL = lSQL + "WHERE A.STATUS='A' "
    lSQL = lSQL + "ORDER BY A.CODE, B.BRANCHTYPE "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("AR_CUSTOMER")
    lMain = BizObject.DataSets.Find("MainDataSet")
    lDtl = BizObject.DataSets.Find("cdsBranch")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "FAIRY")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("CODE").value = "FAIRY"
        lMain.FindField("CompanyName").value = "FAIRY TAIL"

        lDtl.Edit() #For 1St Branch
        lDtl.FindField("BranchName").AsString  = "BILLING"
        lDtl.FindField("Address1").AsString    = "Address1"
        lDtl.FindField("Address2").AsString    = "Address2"
        lDtl.FindField("Address3").AsString    = "Address3"
        lDtl.FindField("Address4").AsString    = "Address4"  
        lDtl.FindField("Attention").AsString   = "Attention"  
        lDtl.FindField("Phone1").AsString      = "Phone1"
        lDtl.FindField("Fax1").AsString        = "Fax1"
        lDtl.FindField("Email").AsString       = "EmailAddress"
        lDtl.Post()

        lDtl.Append() #For 2nd Branch
        lDtl.FindField("BranchName").AsString  = "Branch1"
        lDtl.FindField("Address1").AsString    = "DAddress1"
        lDtl.FindField("Address2").AsString    = "DAddress2"
        lDtl.FindField("Address3").AsString    = "DAddress3"
        lDtl.FindField("Address4").AsString    = "DAddress4"  
        lDtl.FindField("Attention").AsString   = "DAttention"  
        lDtl.FindField("Phone1").AsString      = "DPhone1"
        lDtl.FindField("Fax1").AsString        = "DFax1"
        lDtl.FindField("Email").AsString       = "DEmailAddress"
        lDtl.Post()
    else:
        BizObject.Params.Find("Code").Value = "FAIRY"
        BizObject.Open()
        BizObject.Edit()
        lMain.FindField("CompanyName").value = "FAIRY TAIL WIZARD"
        
        while lDtl.RecordCount > 0:
            lDtl.First()
            lDtl.Delete()

        #Insert back with new Information
        lDtl.Append() #For 1St Branch
        lDtl.FindField("BranchType").AsString  = "B" 
        lDtl.FindField("BranchName").AsString  = "BILLING" #Make sure this always same as b4 delete data
        lDtl.FindField("Address1").AsString    = "New Address1"
        lDtl.FindField("Address2").AsString    = "New Address2"
        lDtl.FindField("Address3").AsString    = "New Address3"
        lDtl.FindField("Address4").AsString    = "New Address4"  
        lDtl.FindField("Attention").AsString   = "New Attention"  
        lDtl.FindField("Phone1").AsString      = "New Phone1"
        lDtl.FindField("Fax1").AsString        = "New Fax1"
        lDtl.FindField("Email").AsString       = "New EmailAddress"
        lDtl.Post()

        lDtl.Append() #For 2nd Branch
        lDtl.FindField("BranchType").AsString  = "D" 
        lDtl.FindField("BranchName").AsString  = "Branch1" #Make sure this always same as b4 delete data
        lDtl.FindField("Address1").AsString    = "New DAddress1"
        lDtl.FindField("Address2").AsString    = "New DAddress2"
        lDtl.FindField("Address3").AsString    = "New DAddress3"
        lDtl.FindField("Address4").AsString    = "New DAddress4"  
        lDtl.FindField("Attention").AsString   = "New DAttention"  
        lDtl.FindField("Phone1").AsString      = "New DPhone1"
        lDtl.FindField("Fax1").AsString        = "New DFax1"
        lDtl.FindField("Email").AsString       = "New DEmailAddress"
        lDtl.Post()
    
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never use in other document
    BizObject = ComServer.BizObjects.Find("AR_CUSTOMER")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "FAIRY")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("CODE").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input") 
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Sales Invoice

SL_IV
#Updated 08 Jan 2024
import Common
import datetime
       
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.CODE, A.COMPANYNAME, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AGENT, A.AREA, "
    lSQL = lSQL + "B.ITEMCODE, B.DESCRIPTION ITEMDESC, B.QTY, B.UOM, B.UNITPRICE, B.DISC,  "
    lSQL = lSQL + "B.TAX, B.TAXRATE, B.TAXAMT, B.TAXINCLUSIVE, B.AMOUNT "
    lSQL = lSQL + "FROM SL_IV A "
    lSQL = lSQL + "INNER JOIN SL_IVDTL B ON (A.DOCKEY=B.DOCKEY) "
    lSQL = lSQL + "WHERE A.CODE='300-A0002' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("SL_IV")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    lDocKey = BizObject.FindKeyByRef("DocNo", "--IV Test--")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("DocNo").AsString = "--IV Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Code").AsString = "300-C0001" #Customer Account
        lMain.FindField("CompanyName").AsString = "Cash Sales"
        lMain.FindField("Address1").AsString = "" #Optional
        lMain.FindField("Address2").AsString = "" #Optional
        lMain.FindField("Address3").AsString = "" #Optional
        lMain.FindField("Address4").AsString = "" #Optional
        lMain.FindField("Phone1").AsString = ""   #Optional
        lMain.FindField("Description").AsString = "Sales"

        #Insert Data - Detail
        #For Tax Inclusive = True with override Tax Amount
        lDetail.Append()
        lDetail.FindField("Seq").value = 1
        lDetail.FindField("Account").AsString = "500-000" #Sales Account
        lDetail.FindField("Description").AsString = "Sales Item A"
        lDetail.FindField("Description3").AsString = ("Item A Line 1" + ("\r" + "Item A Line 2"))
        lDetail.FindField("Qty").AsFloat = 1
        lDetail.FindField("Tax").AsString = "SV"
        lDetail.FindField("TaxRate").AsString = "6%"
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 435
        lDetail.FindField("Amount").AsFloat = 410.37 #Exclding GST Amt
        lDetail.FindField("TaxAmt").AsFloat = 24.63

        lDetail.DisableControls()
        lDetail.FindField("TaxInclusive").value = 1
        lDetail.EnableControls()
    
        lDetail.Post()

        #For Tax Inclusive = False with override Tax Amount
        lDetail.Append()
        lDetail.FindField("Seq").value = 2
        lDetail.FindField("Account").AsString = "500-000"
        lDetail.FindField("Description").AsString = "Sales Item B"
        lDetail.FindField("Qty").AsFloat = 1
        lDetail.FindField("Tax").AsString = "SV"
        lDetail.FindField("TaxRate").AsString = "6%"
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 94.43
        lDetail.FindField("Amount").AsFloat = 94.43
        lDetail.FindField("TaxAmt").AsFloat = 5.66
        lDetail.Post()
    
        #For With Item Code
        lDetail.Append()
        lDetail.FindField("Seq").value = 3
        lDetail.FindField("ItemCode").AsString = "ANT"
        lDetail.FindField("Description").AsString = "Sales Item B"
        #lDetail.FindField("Account").AsString     = "500-000" #If you wanted override the Sales Account Code
        lDetail.FindField("Qty").AsFloat = 2
        lDetail.FindField("UOM").AsString = "UNIT"
        #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
        lDetail.FindField("Tax").AsString = "SV"
        lDetail.FindField("TaxRate").AsString = "6%"
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 100
        lDetail.FindField("Amount").AsFloat = 200
        lDetail.FindField("TaxAmt").AsFloat = 12
        lDetail.Post()
    
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Description 123 的第一 🐱"

        #Delete all Detail
        while lDetail.RecordCount != 0:
            lDetail.Last()
            lDetail.Delete()
            
        #Append Detail
        lDetail.Append()
        #lDetail.FindField("Account").value = "500-000"
        lDetail.FindField("Description").AsString = "Item A  的第一"
        lDetail.FindField("Description3").AsString = ComServer.Utility.PlainTextToRichText("More description  的第一 🐱")
        lDetail.FindField("Tax").value = ""
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("Amount").value = 410.37
        lDetail.FindField("TaxAmt").value = 0
        lDetail.Post()
        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never not knock off by Payment or Credit Note
    BizObject = ComServer.BizObjects.Find("SL_IV")
    
    lDocKey = BizObject.FindKeyByRef("DocNo", "--IV Test--")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Purchase Invoice

PH_PI
#Updated 08 Jan 2024
import Common
import datetime
       
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.CODE, A.COMPANYNAME, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AGENT, A.AREA, "
    lSQL = lSQL + "B.ITEMCODE, B.DESCRIPTION ITEMDESC, B.QTY, B.UOM, B.UNITPRICE, B.DISC,  "
    lSQL = lSQL + "B.TAX, B.TAXRATE, B.TAXAMT, B.TAXINCLUSIVE, B.AMOUNT "
    lSQL = lSQL + "FROM PH_PI A "
    lSQL = lSQL + "INNER JOIN PH_PIDTL B ON (A.DOCKEY=B.DOCKEY) "
    lSQL = lSQL + "WHERE A.CODE='400-L0001' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("PH_PI")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    V = ["--PI Test--", "400-W0001"]  #DocNo, Code
    
    lDocKey = BizObject.FindKeyByRef("DocNo;Code", V)
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("DocNo").AsString = "--PI Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Code").AsString = "400-W0001" #Supplier Account
        lMain.FindField("CompanyName").AsString = "WORLDLINE COMMUNICATION SDN BHD"
        #lMain.FindField("Address1").AsString = "" #Optional
        #lMain.FindField("Address2").AsString = "" #Optional
        #lMain.FindField("Address3").AsString = "" #Optional
        #lMain.FindField("Address4").AsString = "" #Optional
        #lMain.FindField("Phone1").AsString = ""   #Optional
        lMain.FindField("Description").AsString = "Purchase Invoice"

        #Insert Data - Detail    
        lDetail.Append()
        lDetail.FindField("Seq").value = 1
        lDetail.FindField("ItemCode").AsString = "ANT"
        lDetail.FindField("Description").AsString = "Item B"
        #lDetail.FindField("Account").AsString     = "600-000" #If you wanted override the Purchase Account Code
        lDetail.FindField("Qty").AsFloat = 2
        lDetail.FindField("UOM").AsString = "UNIT"
        #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
        lDetail.FindField("Tax").AsString = ""
        lDetail.FindField("TaxRate").AsString = ""
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 80
        lDetail.FindField("Amount").AsFloat = 160
        lDetail.FindField("TaxAmt").AsFloat = 0
        lDetail.Post()
        
        lDetail.Append()
        lDetail.FindField("Seq").value = 2
        lDetail.FindField("ItemCode").AsString = "HFK"
        lDetail.FindField("Description").AsString = "HANDS FREE KITS"
        #lDetail.FindField("Account").AsString     = "600-000" #If you wanted override the Purchase Account Code
        lDetail.FindField("Qty").AsFloat = 3
        lDetail.FindField("UOM").AsString = "UNIT"
        #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
        lDetail.FindField("Tax").AsString = ""
        lDetail.FindField("TaxRate").AsString = ""
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 50
        lDetail.FindField("Amount").AsFloat = 150
        lDetail.FindField("TaxAmt").AsFloat = 0
        lDetail.Post()        
    
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Description 123 的第一 🐱"

        #Delete all Detail
        while lDetail.RecordCount != 0:
            lDetail.Last()
            lDetail.Delete()
            
        #Append Detail
        lDetail.Append()
        #lDetail.FindField("Account").value = "600-000"
        lDetail.FindField("Description").AsString = "Item A  的第一"
        lDetail.FindField("Description3").AsString = ComServer.Utility.PlainTextToRichText("More description  的第一 🐱")
        lDetail.FindField("Tax").value = ""
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("Amount").value = 410.37
        lDetail.FindField("TaxAmt").value = 0
        lDetail.Post()
        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never not knock off by Payment or Credit Note
    BizObject = ComServer.BizObjects.Find("PH_PI")
    
    V = ["--PI Test--", "400-W0001"]  #DocNo, Code
    
    lDocKey = BizObject.FindKeyByRef("DocNo;Code", V)    
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

GL Ledger

GL Ledger Script
#Updated 24 Jul 2023
import Common

def GetData():
    lSQL = "SELECT A.CODE, B.DESCRIPTION ACCDESC, A.DOCDATE, A.POSTDATE, A.DESCRIPTION, A.DESCRIPTION2,  "
    lSQL = lSQL + "A.LOCALDR, A.LOCALCR, A.REF1, A.REF2 FROM GL_TRANS A "
    lSQL = lSQL + "INNER JOIN GL_ACC B ON (A.CODE=B.CODE) "
    lSQL = lSQL + "WHERE A.CANCELLED='F' "
    lSQL = lSQL + "AND A.POSTDATE BETWEEN '01 JAN 2023'  "
    lSQL = lSQL + "AND '31 DEC 2023' "
    lSQL = lSQL + "AND A.CODE='310-000' "
    lSQL = lSQL + "ORDER BY A.CODE, A.POSTDATE "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    
    Common.ShowResult(lDataSet)
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer       
    GetData()
    ComServer.Logout()
finally:    
    ComServer = None
    Common.KillApp()

GL Trial Balance

GL Trial Balance Script
#Updated 25 Jul 2023
import Common
import datetime

def GetData():
    RptObject = ComServer.RptObjects.Find('GL.TrialBalance.RO')
    
    RptObject.Params.Find("AllProject").Value      = True
    RptObject.Params.Find("AllAgent").Value        = True
    RptObject.Params.Find("AllArea").Value         = True
    RptObject.Params.Find("LedgerType").Value      = "G" #G = Legder, S = Debtor, P = Supplier
    #RptObject.Params.Find("ProjectData").Value    = #Not use if AllArea is true
    RptObject.Params.Find("ShowZeroBalance").Value = False
    RptObject.Params.Find("SortBy").Value          = "PostDate;DocNo" 
    RptObject.Params.Find("UseDescription2").Value = False
    
    lDateFrom = datetime.datetime(2018, 1, 1, 13, 0)
    lDateFrom.strftime('%m/%d/%Y')
    lDateTo = datetime.datetime(2018, 12, 31, 13, 0)
    lDateTo.strftime('%m/%d/%Y')
    
    RptObject.Params.Find("DateFrom").Value       = lDateFrom
    RptObject.Params.Find("DateTo").Value         = lDateTo

    #RptObject.Params.Find("AgentData").Value      = 'Not use if AllAgent is true
    #RptObject.Params.Find("AreaData").Value       = 'Not use if AllArea is true
  
    RptObject.Params.Find("SortBy").Value          = "Code;Description"
    RptObject.CalculateReport()

    lDataSet = RptObject.DataSets.Find("cdsMain")
    lDataSet2 = RptObject.DataSets.Find("cdsGLAccount") #For Account List
    
    if lDataSet2.RecordCount > 0:
        while not lDataSet2.eof:
            print(lDataSet2.FindField('CODE').AsString)
            print(lDataSet2.FindField('DESCRIPTION').AsString)
            print("===")
            lDataSet2.Next()
            
    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            print("Month To Date")
            print(lDataSet.FindField('CODE').AsString)
            print(lDataSet.FindField('MTDDR').AsString)            
            print(lDataSet.FindField('MTDCR').AsString)
            print("Year To Date")
            print(lDataSet.FindField('CODE').AsString)
            print(lDataSet.FindField('YTDDR').AsString)
            print(lDataSet.FindField('YTDCR').AsString)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer       
    GetData()
    ComServer.Logout()
finally:    
    ComServer = None
    Common.KillApp()

Terms

Terms
#Updated 25 Jul 2023
import Common
       
def GetListData():
    lSQL = "SELECT * FROM TERMS "
    lSQL = lSQL + "WHERE ISACTIVE='T' "
    lSQL = lSQL + "ORDER BY CODE "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("Terms")
    lMain = BizObject.DataSets.Find("MainDataSet")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "90 Days")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("CODE").value = "90 Days"
        lMain.FindField("DESCRIPTION").value = "Net 90 Days"
        lMain.FindField("TermDay").value = 90
        lMain.FindField("ISACTIVE").value = "T"
    else:
        BizObject.Params.Find("CODE").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.FindField("DESCRIPTION").value = "Net 90 Days - Edited"
        lMain.FindField("ISACTIVE").value = "F"
        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never use in other document
    BizObject = ComServer.BizObjects.Find("Terms")
    
    lDocKey = BizObject.FindKeyByRef("CODE", "90 Days")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("CODE").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Stock Adjustment

ST_AJ
#Updated 08 Jan 2024
import Common
import datetime
       
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AUTHBY, A.REASON, A.REMARK, "
    lSQL = lSQL + "B.ITEMCODE, B.DESCRIPTION ITEMDESC, B.QTY, B.UOM, B.UNITCOST, "
    lSQL = lSQL + "B.AMOUNT, B.REMARK1, B.REMARK2 "
    lSQL = lSQL + "FROM ST_AJ A "
    lSQL = lSQL + "INNER JOIN ST_AJDTL B ON (A.DOCKEY=B.DOCKEY) "
    lSQL = lSQL + "WHERE A.DocDate='20 Apr 2013' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("ST_AJ")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
        
    lDocKey = BizObject.FindKeyByRef("DocNo", "--AJ Test--")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("DocNo").AsString = "--AJ Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Description").AsString = "Stock Adjustment"

        #Insert Data - Detail - Increase Stock Qty   
        lDetail.Append()
        lDetail.FindField("Seq").value = 1
        lDetail.FindField("ItemCode").AsString = "ANT"
        lDetail.FindField("Description").AsString = "ANTENA"
        lDetail.FindField("Qty").AsFloat = 2
        lDetail.FindField("UOM").AsString = "PCS"
        lDetail.FindField("UnitCOST").AsFloat = 80
        lDetail.FindField("Amount").AsFloat = 160
        lDetail.Post()
        
        #Insert Data - Detail - Reduce Stock Qty
        lDetail.Append()
        lDetail.FindField("Seq").value = 2
        lDetail.FindField("ItemCode").AsString = "HFK"
        lDetail.FindField("Description").AsString = "HANDS FREE KITS"
        lDetail.FindField("Qty").AsFloat = -3
        lDetail.FindField("UOM").AsString = "UNIT"
        lDetail.Post()        
    
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Description 123 的第一 🐱"

        #Delete all Detail
        while lDetail.RecordCount != 0:
            lDetail.Last()
            lDetail.Delete()
            
        #Append Detail
        lDetail.Append()
        lDetail.FindField("Seq").value = 1
        lDetail.FindField("ItemCode").AsString = "BOM"
        lDetail.FindField("Description").AsString = "Bill Of Material"        
        lDetail.FindField("Qty").AsFloat = -1
        lDetail.FindField("UOM").AsString = "UNIT"
        lDetail.Post()
        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    BizObject = ComServer.BizObjects.Find("ST_AJ")
        
    lDocKey = BizObject.FindKeyByRef("DocNo", "--AJ Test--")    
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Sales Order

Sales Order
#Updated 08 Jan 2024
import Common
import datetime
       
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.CODE, A.COMPANYNAME, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AGENT, A.AREA, "
    lSQL = lSQL + "B.ITEMCODE, B.DESCRIPTION ITEMDESC, B.QTY, B.UOM, B.UNITPRICE, B.DISC,  "
    lSQL = lSQL + "B.TAX, B.TAXRATE, B.TAXAMT, B.TAXINCLUSIVE, B.AMOUNT "
    lSQL = lSQL + "FROM SL_SO A "
    lSQL = lSQL + "INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY) "
    lSQL = lSQL + "WHERE A.CODE='300-A0002' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("SL_SO")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    lDocKey = BizObject.FindKeyByRef("DocNo", "--SO Test--")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("DocNo").AsString = "--SO Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Code").AsString = "300-C0001" #Customer Account
        lMain.FindField("CompanyName").AsString = "Cash Sales"
        #lMain.FindField("Address1").AsString = "" #Optional
        #lMain.FindField("Address2").AsString = "" #Optional
        #lMain.FindField("Address3").AsString = "" #Optional
        #lMain.FindField("Address4").AsString = "" #Optional
        #lMain.FindField("Phone1").AsString = ""   #Optional
        lMain.FindField("Description").AsString = "Sales Order"

        #Insert Data - Detail    
        lDetail.Append()
        lDetail.FindField("Seq").value = 1
        lDetail.FindField("ItemCode").AsString = "ANT"
        lDetail.FindField("Description").AsString = "Sales Item B"
        lDetail.FindField("Qty").AsFloat = 2
        lDetail.FindField("UOM").AsString = "UNIT"
        #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
        lDetail.FindField("Tax").AsString = "SV"
        lDetail.FindField("TaxRate").AsString = "6%"
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 100
        lDetail.FindField("Amount").AsFloat = 200
        lDetail.FindField("TaxAmt").AsFloat = 12
        lDetail.Post()
    
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Description 123 的第一 🐱"

        #Delete all Detail
        while lDetail.RecordCount != 0:
            lDetail.Last()
            lDetail.Delete()
            
        #Append Detail
        lDetail.Append()
        lDetail.FindField("Seq").value = 1
        lDetail.FindField("ItemCode").AsString = "BOM"
        lDetail.FindField("Description").AsString = "Sales Item BOM"
        lDetail.FindField("Qty").AsFloat = 1
        lDetail.FindField("UOM").AsString = "UNIT"
        #lDetail.FindField("DISC").AsString        = "5%+3" #Optional(eg 5% plus 3 Discount)
        lDetail.FindField("Tax").AsString = "SV"
        lDetail.FindField("TaxRate").AsString = "6%"
        lDetail.FindField("TaxInclusive").value = 0
        lDetail.FindField("UnitPrice").AsFloat = 100
        lDetail.FindField("Amount").AsFloat = 100
        lDetail.FindField("TaxAmt").AsFloat = 6
        lDetail.Post()
        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    BizObject = ComServer.BizObjects.Find("SL_SO")
    
    lDocKey = BizObject.FindKeyByRef("DocNo", "--SO Test--")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Sales.PriceHistory.RO

Sales.PriceHistory.RO Script
#Updated 01 Apr 2021
import win32com.client
import datetime

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("ADMIN", "ADMIN", #UserName, Password
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0081.FDB") #Database Name

def GetData():
    RptObject = ComServer.RptObjects.Find('Sales.PriceHistory.RO')
    
    #RptObject.Params.Find("AgentData").Value            = #Not use if AllAgent is true
    #RptObject.Params.Find("TaxData").Value              = #Not use if AllTax is true
    #RptObject.Params.Find("CompanyCategoryData").Value  = #Not use if AllCompanyCategory is true
    RptObject.Params.Find("AllAgent").Value              = True
    RptObject.Params.Find("AllTax").Value                = True
    RptObject.Params.Find("AllShipper").Value            = True
    RptObject.Params.Find("AllArea").Value               = True
    RptObject.Params.Find("AllCompany").Value            = True
    RptObject.Params.Find("AllDocProject").Value         = True
    RptObject.Params.Find("AllItem").Value               = False
    RptObject.Params.Find("AllItemProject").Value        = True
    RptObject.Params.Find("AllLocation").Value           = True
    RptObject.Params.Find("AllCompanyCategory").Value    = True
    RptObject.Params.Find("AllBatch").Value              = True
    RptObject.Params.Find("AllTariff").Value             = True
    RptObject.Params.Find("AllStockGroup").Value         = True
    #RptObject.Params.Find("AreaData").Value             = #Not use if AllArea is true
    #RptObject.Params.Find("CategoryData").Value         = #Not use if AllTax is true
    #RptObject.Params.Find("CategoryTpl").Value          = #Not use if AllTax is true
    #RptObject.Params.Find("CompanyData").Value          = #Not use if AllTax is true
       
    lDateFrom = datetime.datetime(2021, 3, 1, 13, 0)
    lDateFrom.strftime('%m/%d/%Y')
    lDateTo = datetime.datetime(2021, 3, 31, 13, 0)
    lDateTo.strftime('%m/%d/%Y')
    
    RptObject.Params.Find("DateFrom").Value         = lDateFrom
    RptObject.Params.Find("DateTo").Value           = lDateTo

    RptObject.Params.Find("DoCN_SC").Value          = False #Include Credit Note
    #RptObject.Params.Find("DocProjectData").Value  = #Not use if AllDocProject is true
    RptObject.Params.Find("DoCS_CP").Value          = True #Include Cash Sales
    RptObject.Params.Find("DoDN_SD").Value          = False #Include Debit Note
    RptObject.Params.Find("DoDO_GR").Value          = False #Include Delivery Order
    RptObject.Params.Find("DoED_EG").Value          = False #Include Extra Delivery Order
    RptObject.Params.Find("DoIV_PI").Value          = False #Include Invoice
    RptObject.Params.Find("DoQT_PQ").Value          = False #Include Quotation
    RptObject.Params.Find("DoSO_PO").Value          = False #Include Sales Order
    #RptObject.Params.Find("ItemCode").Value        = #For Internal use only
    RptObject.Params.Find("ItemData").Value         = "ANT" + "\r" + "BOM"
    #RptObject.Params.Find("ItemProjectData").Value  = #Not use if AllItemProject is true
    #RptObject.Params.Find("LocationData").Value     = #Not use if AllLocation is true
    #RptObject.Params.Find("MaxRecords").Value       = #Not use if SelectMaxRecords is False
    RptObject.Params.Find("SelectDate").Value        = True
    RptObject.Params.Find("SelectMaxRecords").Value  = False
    #RptObject.Params.Find("GroupBy").Value          = #Only use if wanted to grouping
    RptObject.Params.Find("HasCategory").Value       = False
    #RptObject.Params.Find("ItemCategoryData").Value = #Not use if HasCategory is False
    #RptObject.Params.Find("BatchData").Value        = #Not use if AllBatch is true
    #RptObject.Params.Find("TariffData").Value       = #Not use if AllTariff is true
    #RptObject.Params.Find("ShipperData").Value      = #Not use if AllShipper is true
    RptObject.Params.Find("SortBy").Value            = "DocDate;DocNo"
    #RptObject.Params.Find("StockGroupData").Value   = #Not use if AllStockGroup is true
    #RptObject.Params.Find("SummaryInterval  
    
    RptObject.CalculateReport()

    lDataSet = RptObject.DataSets.Find("cdsMain")
        
    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            for idx in range(lDataSet.Fields.Count):
                LFld = lDataSet.Fields.Items(idx).FieldName 
                print(LFld + " :"+ lDataSet.FindField(LFld).AsString)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")
    
try:
    CheckLogin()      
    GetData()
finally:
    ComServer.Logout()
    ComServer = None

Get Edited Sales Invoice List

Get Edited Sales Invoice List Script
#Updated 19 Jul 2021
import win32com.client

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("ADMIN", "ADMIN", #UserName, Password
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0081.FDB") #Database Name

def GetData():
    lSQL = "SELECT REFERENCE FROM AUDIT "
    lSQL = lSQL + "WHERE REF LIKE 'SL_IV%' "
    lSQL = lSQL + "AND UPDATEKIND='E' "
    lSQL = lSQL + "AND CAST(DOCDATETIME AS DATE) = '10 JUN 2021' "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)

    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            DocNo = lDataSet.FindField('REFERENCE').AsString
            DocNo = DocNo.split(',')[0]
            DocNo = DocNo.split(':')[1]
    
            print(DocNo)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")


    
try:
    CheckLogin()      
    GetData()
finally:
    ComServer.Logout()
    ComServer = None

SO to DO

Get Outstanding SO by SO Number transfer to DO Script
#Updated 29 Nov 2021
import win32com.client
import datetime

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("FAUNG", "ADMIN", #UserName, Password
                    "D:\\Happy\\DB\\Default.DCF",
                   # "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                    "ACC-0011.FDB") #Database Name

def PostData():
    lSQL = "SELECT Dockey, DocNo,Code, CompanyName, DocProject, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount, DtlProject, "
    lSQL = lSQL + "Tax, TaxRate, TaxInclusive, TaxAmt, COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM ( "
    lSQL = lSQL + "SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName, A.Project DocProject, "
    lSQL = lSQL + "B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount, "
    lSQL = lSQL + "B.Tax, B.TaxRate, B.TaxInclusive, B.TaxAmt, B.Project DtlProject, C.Qty XFQty FROM SL_SO A "
    lSQL = lSQL + "INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY) "
    lSQL = lSQL + "LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY "
    lSQL = lSQL + "                          AND C.FROMDOCTYPE='SO') "
    lSQL = lSQL + "WHERE A.DOCNO='SO-00044') "
    lSQL = lSQL + "GROUP BY Dockey, DocNo, Code, CompanyName, DocProject, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, "
    lSQL = lSQL +" Amount, DtlProject, Tax, TaxRate, TaxInclusive, TaxAmt "
    lSQL = lSQL + "HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0 "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL) #Get Outstanding Qty for each itemcode
    #print("==="+ str(lDataSet.RecordCount))
    if lDataSet.RecordCount > 0:
        BizObject = ComServer.BizObjects.Find("SL_DO")
        lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
        lDetail = BizObject.DataSets.Find("cdsDocDetail") #lDetail contains detail data
    
        lDate = datetime.datetime(2021, 11, 29, 13, 0)
        lDate.strftime('%m/%d/%Y')
    
        BizObject.New();
        lMain.FindField("DocKey").value = -1
        lMain.FindField("DocNo").AsString = "--DO Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Code").AsString = lDataSet.FindField("Code").AsString #Customer Account
        lMain.FindField("CompanyName").AsString = lDataSet.FindField("CompanyName").AsString
        #lMain.FindField("Address1").AsString = "" #Optional
        #lMain.FindField("Address2").AsString = "" #Optional
        #lMain.FindField("Address3").AsString = "" #Optional
        #lMain.FindField("Address4").AsString = "" #Optional
        #lMain.FindField("Phone1").AsString = ""   #Optional
        lMain.FindField("Project").AsString = lDataSet.FindField("DocProject").AsString
        lMain.FindField("Description").AsString = "Delivery Order"

        #Insert Data - Detail
        while not lDataSet.eof:
            lDetail.Append()
            lDetail.FindField("DtlKey").value = -1
            lDetail.FindField("DocKey").value = -1
            lDetail.FindField("Seq").value = lDataSet.FindField("Seq").Value
            lDetail.FindField("ItemCode").AsString = lDataSet.FindField("ItemCode").AsString
            lDetail.FindField("UOM").AsString = lDataSet.FindField("UOM").AsString
            lDetail.FindField("Qty").AsFloat = lDataSet.FindField("OSQty").AsFloat # Transfer all balance Qty
            lDetail.FindField("DISC").AsString = lDataSet.FindField("DISC").AsString
            lDetail.FindField("Tax").AsString = lDataSet.FindField("Tax").AsString
            lDetail.FindField("TaxRate").AsString = lDataSet.FindField("TaxRate").AsString
            lDetail.FindField("TaxInclusive").value = lDataSet.FindField("TaxInclusive").value 
            lDetail.FindField("UnitPrice").AsFloat = lDataSet.FindField("UnitPrice").AsFloat 
            lDetail.FindField("Amount").AsFloat = lDataSet.FindField("Amount").AsFloat 
            lDetail.FindField("TaxAmt").AsFloat = lDataSet.FindField("TaxAmt").AsFloat
            lDetail.FindField("Project").AsString = lDataSet.FindField("DtlProject").AsString
            lDetail.FindField("FromDocType").AsString = "SO"; #From Document Type
            lDetail.FindField("FromDockey").AsFloat = lDataSet.FindField("Dockey").AsFloat;
            lDetail.FindField("FromDtlkey").AsFloat = lDataSet.FindField("DtlKey").AsFloat;
            lDetail.Post()
            lDataSet.Next()
    
        BizObject.Save()
        BizObject.Close()
    else :
        print ("Record Not Found")
try:
    CheckLogin()
    print ("Posting SO to DO")
    PostData()
    print ("Done")
finally:
    ComServer.Logout()
    ComServer = None

Stock Month End - Weighted Average

Stock Month End - Weighted Average Script
#Updated 30 Nov 2021
import win32com.client
import datetime

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("FAUNG", "ADMIN", #UserName, Password
                    "D:\\Happy\\DB\\Default.DCF",
                   # "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                    "ACC-0011.FDB") #Database Name

def GetData():
    #Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
    lSQL = "SELECT A.ItemCode, A.Location, A.Batch,  MAX(B.Seq) AS Seq, 2 AS CostingMethod "
    lSQL = lSQL + "FROM ST_TR A INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO) "
    lSQL = lSQL + "WHERE A.PostDate<='31 Jul 2020' "
    lSQL = lSQL + "GROUP BY A.ItemCode, A.Location, A.Batch "
    
    lDataSet1 = ComServer.DBManager.NewDataSet(lSQL) 

    if lDataSet1.RecordCount > 0:
        lDataSet1.First()
        while not lDataSet1.eof:
            lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.UTDQty, B.UTDCost FROM ST_TR A "
            lSQL = lSQL + "INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO) "
            lSQL = lSQL + "WHERE A.ITEMCODE= '" + lDataSet1.FindField("ItemCode").AsString + "' "
            lSQL = lSQL + "AND B.SEQ= " + lDataSet1.FindField("Seq").AsString
            lSQL = lSQL + " AND A.LOCATION='" + lDataSet1.FindField("Location").AsString + "' "
            lSQL = lSQL + " AND A.BATCH='" + lDataSet1.FindField("Batch").AsString + "' "
            lSQL = lSQL + "AND B.UTDQty<>0 "
            lSQL = lSQL + "ORDER BY A.ItemCode, A.Location, A.Batch "
            
            #print(lSQL)
            lDataSet2 = ComServer.DBManager.NewDataSet(lSQL)
            if lDataSet2.RecordCount > 0:
                lDataSet2.First()
                print("ITEMCODE = "+lDataSet2.FindField("ITEMCODE").AsString)
                print("LOCATION = "+lDataSet2.FindField("LOCATION").AsString)
                print("BATCH = "+lDataSet2.FindField("BATCH").AsString)
                print("UTDQTY = "+lDataSet2.FindField("UTDQTY").AsString)
                print("UTDCOST = "+lDataSet2.FindField("UTDCOST").AsString)
                print("=====")
            else :
                print ("Detail Record Not Found")
            lDataSet1.Next()
            
    else :
        print ("Record Not Found")
try:
    CheckLogin()
    print ("Month End - WA")
    GetData()
    print ("Done")
finally:
    ComServer.Logout()
    ComServer = None

Stock Month End - FIFO

Stock Month End - FIFO Script
#Updated 15 Feb 2022
import win32com.client
import datetime

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def CheckLogin():
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("FAUNG", "ADMIN", #UserName, Password
                    "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                    "ACC-0011.FDB") #Database Name

def GetData():
    #Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting        

    lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.QTY, B.COST FROM ST_TR A "
    lSQL = lSQL + "INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO) "
    lSQL = lSQL + "WHERE B.COSTTYPE='U' "
    lSQL = lSQL + "AND A.PostDate<='31 Jul 2022' "
    lSQL = lSQL + "AND A.ITEMCODE ='ANT' "
    lSQL = lSQL + "AND B.Qty<>0 "
    lSQL = lSQL + "AND EXISTS (SELECT MAX(D.Seq) FROM ST_TR C "
    lSQL = lSQL + "            INNER JOIN ST_TR_FIFO D ON (C.TRANSNO=D.TRANSNO) "
    lSQL = lSQL + "            WHERE C.PostDate<='31 Jul 2022' "
    lSQL = lSQL + "            AND C.ItemCode ='ANT' "
    lSQL = lSQL + "            GROUP BY C.ItemCode, C.Location, C.Batch "
    lSQL = lSQL + "            HAVING B.SEQ=MAX(D.Seq) "
    lSQL = lSQL + "            ) "
    lSQL = lSQL + "ORDER BY A.ItemCode, A.Location, A.BATCH, A.TRANSNO "
    print(lSQL)
    lDataSet2 = ComServer.DBManager.NewDataSet(lSQL)
            
    if lDataSet2.RecordCount > 0: #Total Qty & Cost
        lDataSet2.First()
        while not lDataSet2.eof:
            print(" ")
            print("TRANSNO = "+lDataSet2.FindField("TRANSNO").AsString)
            print("ITEMCODE = "+lDataSet2.FindField("ITEMCODE").AsString)
            print("LOCATION = "+lDataSet2.FindField("LOCATION").AsString)
            print("BATCH = "+lDataSet2.FindField("BATCH").AsString)
            print("QTY = "+lDataSet2.FindField("QTY").AsString)
            print("COST = "+lDataSet2.FindField("COST").AsString)
            print("=====")
            print(" ")
            print("===Detail Cost===")
            lSQL = "SELECT TRANSNO, ITEMCODE, COSTSEQ, QTY, COST FROM ST_TR_FIFO "
            lSQL = lSQL + "WHERE ITEMCODE = '" + lDataSet2.FindField("ITEMCODE").AsString
            lSQL = lSQL + "' AND COSTTYPE='B' "
            lSQL = lSQL + "AND TRANSNO="+lDataSet2.FindField("TRANSNO").AsString
            lSQL = lSQL + " ORDER BY COSTSEQ"
                    
            lDataSet3 = ComServer.DBManager.NewDataSet(lSQL)

            if lDataSet3.RecordCount > 0: #Detail Cost
                lDataSet3.First()
                while not lDataSet3.eof:
                    print("TRANSNO = "+lDataSet3.FindField("TRANSNO").AsString)
                    print("ITEMCODE = "+lDataSet3.FindField("ITEMCODE").AsString)
                    print("COSTSEQ = "+lDataSet3.FindField("COSTSEQ").AsString)
                    print("QTY = "+lDataSet3.FindField("QTY").AsString)
                    print("COST = "+lDataSet3.FindField("COST").AsString)
                    print("D=====")
                    lDataSet3.Next()
            lDataSet2.Next()
    else :
        print("Detail Record Not Found")
                
try:
    CheckLogin()
    print ("Month End - FIFO")
    GetData()
    print ("Done")
finally:
    #ComServer.Logout()
    ComServer = None

Login 2 Database

Login 2 Database
#Updated 17 Mar 2022
import win32com.client
import datetime

ComServer = win32com.client.Dispatch("SQLAcc.BizApp")

def CheckLogin1():
    ComServer = None
    ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("FAUNG", "ADMIN", #UserName, Password
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0024.FDB") #Database Name


def CheckLogin2():
    ComServer = None
    ComServer = win32com.client.Dispatch("SQLAcc.BizApp")
    B = ComServer.IsLogin
    if B == True:
        ComServer.Logout()
    ComServer.Login("FAUNG", "ADMIN", #UserName, Password
                    "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                    "ACC-0015.FDB") #Database Name
        
def GetData():    
    lSQL = "SELECT COUNT(*) Nos FROM AR_CUSTOMER A WHERE A.CODE LIKE '%300%' "
    
    try:
        lDataSet1 = ComServer.DBManager.NewDataSet(lSQL) 
        Seq = 0
        if lDataSet1.RecordCount > 0:
            lDataSet1.First()
            Seq = lDataSet1.FindField("Nos").Value
            print(Seq)
        else :
            print ("Record Not Found")
        
    finally:
        lDataSet1 = None

    
try:
    print ("Login 1st DB")
    CheckLogin1()
    GetData()
    print ("Done 1st DB")
    print ("Login 2nd DB")
    CheckLogin2()
    GetData()
    print ("Done 2nd DB")    
finally:
    ComServer.Logout()
    ComServer = None
    print ("Done...")

Get Stock Qty Balance

Get Stock Qty Balance
#Updated 18 Jan 2024
import Common

def GetData():
    lSQL = "SELECT  ItemCode, Location, Batch, Sum(Qty) Qty  FROM ST_TR   "
    lSQL = lSQL + "WHERE PostDate<='31 Dec 2019' "
    lSQL = lSQL + "AND ITEMCODE ='ANT' "
    lSQL = lSQL + "GROUP BY ItemCode, Location, Batch "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    
    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            print(lDataSet.FindField('ItemCode').AsString)
            print(lDataSet.FindField('Location').AsString)
            print(lDataSet.FindField('Batch').AsString)
            print(lDataSet.FindField('Qty').AsString)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer      
    GetData()
finally:
    ComServer = None
    Common.KillApp()

Maintain Asset Item

Maintain Asset Item
#Updated 03 Oct 2023
import Common
import datetime
       
def GetListData():
    lSQL = "SELECT A.DOCNOEX, A.ACQUIREDATE, A.CODE, A.DESCRIPTION, A.ASSETGROUP, "
    lSQL = lSQL + "A.AGENT, A.AREA, A.COST, A.USEFULLIFE, A.DEPRRATE, A.RESIDUAL, "
    lSQL = lSQL + "B.POSTDATE, B.DESCRIPTION HISTORYDESC "
    lSQL = lSQL + "FROM FA_ITEM A "
    lSQL = lSQL + "INNER JOIN FA_ITEM_HISTORY B ON (A.Code=B.Code) "
    lSQL = lSQL + "WHERE A.STATUS=1 " #1 = Active 2 = InActive    
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def GetAutoKey(ACode):
    lSQL = "SELECT AUTOKEY FROM FA_ITEM "
    lSQL = lSQL + "WHERE Code= ' + Common.QuotedStr(ACode)
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
    return lDataSet.FindField("AutoKey").AsFloat

def PostData():
    BizObject = ComServer.BizObjects.Find("FA.Item.OPF")
    lMain = BizObject.DataSets.Find("Main") #lMain contains master data
    lProj = BizObject.DataSets.Find("Project") #lProj contains Project data
    lDepr = BizObject.DataSets.Find("DeprSche") #lDepr contains Depreciation Scheduler data
    lHist = BizObject.DataSets.Find("History") #lHist contains History data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    lDocKey = GetAutoKey("--FA Test--")
        
    if lDocKey == 0:
        BizObject.New()
        lMain.FindField("Code").AsString = "--FA Test--"
        lMain.FindField("Description").AsString = "5ft Banquet Table"
        lMain.FindField("AcquireDate").value = lDate
        lMain.FindField("AssetGroup").AsString = "Default"
        lMain.FindField("Cost").AsFloat = 6190.50
        lMain.FindField("UsefulLife").AsFloat = 3
        lMain.FindField("Residual").AsFloat = 1
        lMain.FindField("DocNoEx").AsString = "IV-321578"
        lMain.FindField("Qty").AsFloat = 100

        #Insert Data - Depreciation Schedule
        lDate = datetime.datetime(2024, 9, 3, 13, 0)
        lDate.strftime('%m/%d/%Y')
        
        lDepr.Append()
        lDepr.FindField("SCHEDATE").value       = lDate
        lDepr.FindField("Description").AsString = "Depreciation 1/3"
        lDepr.FindField("AMOUNT").AsFloat       = 2063.17
        lDepr.Post()

        lDate = datetime.datetime(2025, 9, 3, 13, 0)
        lDate.strftime('%m/%d/%Y')
        
        lDepr.Append()
        lDepr.FindField("SCHEDATE").value       = lDate
        lDepr.FindField("Description").AsString = "Depreciation 2/3"
        lDepr.FindField("AMOUNT").AsFloat       = 2063.17
        lDepr.Post()

        lDate = datetime.datetime(2026, 9, 3, 13, 0)
        lDate.strftime('%m/%d/%Y')

        lDepr.Append()
        lDepr.FindField("SCHEDATE").value       = lDate
        lDepr.FindField("Description").AsString = "Depreciation 3/3"
        lDepr.FindField("AMOUNT").AsFloat       = 2063.16
        lDepr.Post()        

        #Insert Data - Hisory   
        lDate = datetime.datetime(2023, 1, 20, 13, 0)
        lDate.strftime('%m/%d/%Y')
        
        lHist.Append()
        lHist.FindField("PostDate").value = lDate
        lHist.FindField("Description").AsString = "Supplier ABC 4 Units"
        lHist.Post()
        
        lDate = datetime.datetime(2023, 2, 22, 13, 0)
        lDate.strftime('%m/%d/%Y')
        
        lHist.Append()
        lHist.FindField("PostDate").value = lDate
        lHist.FindField("Description").AsString = "Supplier XYZ Sdn Bhd 6 Units"
        lHist.Post()
        
        #Insert Data - Project
        lProj.Edit()
        lProj.FindField("Project").AsString = "KL"
        lProj.FindField("Rate").AsFloat = 40.00
        lProj.Post()
        
        lProj.Append()
        lProj.FindField("Project").AsString = "JB"
        lProj.FindField("Rate").AsFloat = 60.00
        lProj.Post()           
    else:
        BizObject.Params.Find("Autokey").AsString = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited 5ft Banquet Tables"

        #Delete all Project
        while lProj.RecordCount != 0:
            lProj.First()
            lProj.Delete()
            
        lProj.Append()
        lProj.FindField("Project").AsString = "----"
        lProj.FindField("Rate").AsFloat = 10.00
        lProj.Post()
        
        lProj.Append()
        lProj.FindField("Project").AsString = "KL"
        lProj.FindField("Rate").AsFloat = 40.00
        lProj.Post()

        lProj.Append()
        lProj.FindField("Project").AsString = "JB"
        lProj.FindField("Rate").AsFloat = 50.00
        lProj.Post()      
        
        #Insert Data - Hisory   
        lDate = datetime.datetime(2023, 2, 10, 13, 0)
        lDate.strftime('%m/%d/%Y')
        
        lHist.Append()
        lHist.FindField("PostDate").value = lDate
        lHist.FindField("Description").AsString = "1 of table leg broken"
        lHist.Post()        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    BizObject = ComServer.BizObjects.Find("FA.Item.OPF")
    
    lDocKey = GetAutoKey("--FA Test--")
        
    if lDocKey == 0:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Autokey").AsString = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Customer Payment

AR_PM
#Updated 04 Dec 2023
import Common
import datetime
       
def GetListData():
    lSQL = "SELECT A.DOCNO, A.DOCDATE, A.CODE, B.COMPANYNAME, A.DESCRIPTION, A.DOCAMT, "
    lSQL = lSQL + "A.AGENT, A.AREA, A.PAYMENTMETHOD "
    lSQL = lSQL + "FROM AR_PM A "
    lSQL = lSQL + "INNER JOIN AR_CUSTOMER B ON (A.CODE=B.CODE) "
    lSQL = lSQL + "WHERE A.CODE='300-A0002' "
    lSQL = lSQL + "AND A.CANCELLED='F' "
    
    lDataSet = ComServer.DBManager.NewDataSet(lSQL)
        
    Common.ShowResult(lDataSet)

def PostData():
    BizObject = ComServer.BizObjects.Find("AR_PM")
    lMain = BizObject.DataSets.Find("MainDataSet") #lMain contains master data
    lDetail = BizObject.DataSets.Find("cdsKnockOff") #lDetail contains detail data
    
    lDate = datetime.datetime(2023, 2, 22, 13, 0)
    lDate.strftime('%m/%d/%Y')
    
    lDocKey = BizObject.FindKeyByRef("DocNo", "--PM Test--")
        
    if lDocKey is None:
        BizObject.New()
        lMain.FindField("DocNo").AsString = "--PM Test--"
        lMain.FindField("DocDate").value = lDate
        lMain.FindField("PostDate").value = lDate
        lMain.FindField("Code").AsString = "300-C0001" #Customer Account
        lMain.FindField("Description").AsString = "Payment for A/c"
        lMain.FindField("PaymentMethod").AsString = "325-000" #Bank or Cash Account
        lMain.FindField("ChequeNumber").AsString = ""
        lMain.FindField("BankCharge").AsFloat = 0
        lMain.FindField("DocAmt").AsFloat = 10000.00
        lMain.FindField("Cancelled").AsString = "F"    

        #Knock Off IV  
        V = ["IV", "--IV Test--"]  #DocType, DocNo
        if (lDetail.Locate("DocType;DocNo", V, False, False)) :
            lDetail.Edit()
            lDetail.FindField("KOAmt").AsFloat = 147.09 #Partial Knock off
            lDetail.FindField("KnockOff").AsString = "T"
            lDetail.Post()
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Edit()
        lMain.Edit()
        lMain.FindField("Description").AsString = "Edited Payment for A/c 的第一 🐱"

        #Knock Off IV  
        V = ["IV", "--IV Test--"]  #DocType, DocNo
        if (lDetail.Locate("DocType;DocNo", V, False, False)) :
            lDetail.Edit()
            lDetail.FindField("KOAmt").AsFloat = 200.09 #Partial Knock off
            lDetail.FindField("KnockOff").AsString = "T"
            lDetail.Post()
        
    try:
        BizObject.Save()          
    except Exception as e:
        print("Oops!", e)    
    BizObject.Close()
    print ("Posting/Update Done")

def DelData():
    #Deleting only work if the record never not knock off by Refund
    BizObject = ComServer.BizObjects.Find("AR_PM")
    
    lDocKey = BizObject.FindKeyByRef("DocNo", "--PM Test--")
        
    if lDocKey is None:
        print ("Record Not Found")
    else:
        BizObject.Params.Find("Dockey").Value = lDocKey
        BizObject.Open()
        BizObject.Delete()        
        print ("Deleting Done")

try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer
    GetListData()
    PostData()
    
    answer = input("Continue To delete?")
    if answer.lower() in ["y","yes"]:
        DelData()
    elif answer.lower() in ["n","no"]:
        print ("Deleting Aborted")
    else:
       print ("Invalid Input")
       
    ComServer.Logout()   
finally:
    ComServer = None
    Common.KillApp()

Customer Due Listing

Customer Due Listing
#Updated 08 Oct 2024
import Common
import datetime

def GetData():
    RptObject = ComServer.RptObjects.Find('Customer.DueDocument.RO')
	
    #RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is true
    RptObject.Params.Find("AllAgent").Value             = True
    RptObject.Params.Find("AllArea").Value              = True
    RptObject.Params.Find("AllCompany").Value           = False
    RptObject.Params.Find("AllCompanyCategory").Value   = True
    RptObject.Params.Find("AllCurrency").Value          = True
    RptObject.Params.Find("AllDocProject").Value        = True
    RptObject.Params.Find("AllItemProject").Value       = True
    #RptObject.Params.Find("AreaData").Value            = 'Not use if AllArea is true
    #RptObject.Params.Find("CompanyCategoryData").Value = 'Not use if AllCompanyCategory is true
    RptObject.Params.Find("CompanyData").Value          = "300-C0001"
    #RptObject.Params.Find("CurrencyData").Value        = 'Not use if AllCurrency is true
    #RptObject.Params.Find("DocProjectData").Value      = 'Not use if AllDocProject is true
    #RptObject.Params.Find("GroupBy").Value             = #
    #RptObject.Params.Find("ItemProjectData").Value     = #
    RptObject.Params.Find("PrintContra").Value         = True
    RptObject.Params.Find("PrintCreditNote").Value     = True
    RptObject.Params.Find("PrintDebitNote").Value      = True
    RptObject.Params.Find("PrintInvoice").Value        = True
    RptObject.Params.Find("PrintOverDue").Value        = True
    RptObject.Params.Find("PrintUnDue").Value          = False
    RptObject.Params.Find("ShowForeignCurrency").Value = True
    RptObject.Params.Find("ShowLocalCurrency").Value   = True
    RptObject.Params.Find("SortBy").Value              = "DocDate;DueDate;DocNo" 

    lDateTo = datetime.datetime(2024, 9, 30, 13, 0)
    lDateTo.strftime('%m/%d/%Y')
    
    RptObject.Params.Find("DateTo").Value              = lDateTo
    RptObject.Params.Find("IncludePDCheque").Value     = True

    RptObject.CalculateReport()

    lDataSet = RptObject.DataSets.Find("cdsMain")
    print("Record count : ", lDataSet.RecordCount)           
    if lDataSet.RecordCount > 0:
        while not lDataSet.eof:
            print(lDataSet.FindField('CODE').AsString)
            print(lDataSet.FindField('DOCTYPE').AsString)
            print(lDataSet.FindField('DOCDATE').AsString)            
            print(lDataSet.FindField('DOCNO').AsString)
            print(lDataSet.FindField('DUEDATE').AsString)
            print(lDataSet.FindField('DOCAMT').AsString)
            print(lDataSet.FindField('OUTSTANDING').AsString)
            print(lDataSet.FindField('AGE').AsString)
            print("===")
            lDataSet.Next()
    else:
        print ("Record Not Found")
    
try:
    Common.CheckLogin()
    global ComServer
    ComServer = Common.ComServer       
    GetData()
    ComServer.Logout()
finally:    
    ComServer = None
    Common.KillApp()


PHP

  • Tested PHP Version : 7.4.3/8.1.10
  • Add this in ..\xampp\php\php.ini
 [PHP_COM_DOTNET]
 extension=php_com_dotnet.dll
  • Grid.css file for example code
Grid.css file
body 
{
  margin: 10;
}
table {
  font-family: arial, sans-serif;
  border: 1px solid black;
  border-collapse: collapse;
  table-layout: auto;
}

td, th {
  border: 1px solid black;
  text-align: left;
  padding: 8px;
  white-space: nowrap;
}

tr:nth-child(even) {
  background-color: #dddddd;
}

Get Agent

Get Agent Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 22 Oct 2024<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function GetData()
{
    global $ComServer;

    $lSQL = "SELECT * FROM AGENT 
	         WHERE CODE='HALIM'";

    $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0)
    {
        echo "Result : ";
        echo $lDataSet->FindField('Description')->AsString() . "<br>";
    }
    else
    {
        echo "Record Not Found";
    }
	$lDataSet = null;
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?>
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Agent"/> 
    </form> 
</body>
</html>

Add & Edit Agent

Add & Edit Agent Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 01 May 2020<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("Agent");
    $lMain = $BizObject->DataSets->Find("MainDataSet");
    
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
	
	if ($lDocKey == null){
        $BizObject->New();
        $lMain->FindField("CODE")->value = "FAIRY";
        $lMain->FindField("DESCRIPTION")->value = "FAIRY TAIL";
	} else{
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->FindField("DESCRIPTION")->value = "FAIRY TAIL WIZARD";
	}
	try{
		$BizObject->Save();
		echo "Posting Done <br>";
	}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        PostData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?>
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Add/Edit Agent"/> 
    </form> 
</body>
</html>

Delete Agent

Delete Agent Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 01 May 2020<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("Agent");
    $lMain = $BizObject->DataSets->Find("MainDataSet");
    
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
	
	if ($lDocKey == null){
        echo "Record Not Found";
	} else{
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
        $BizObject->Open();
        $BizObject->Delete();
        echo "Delete Done<br>";
	}	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        PostData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?>
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Delete Agent"/> 
    </form> 
</body>
</html>

Complete Post

SL_CS, AR_PM, SL_CN & AR_CN Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
#This will doing following posting
#01. Cash Sales - SL_CS
#02. Sales Credit Note - SL_CN
#03. Customer Payment With Knock off - AR_PM
#04. Edit Credit Note Posted in Step 02 & Knock Off - AR_CN
#05. Customer Refund to Knock off Credit Note - AR_CF

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function PostDataCS(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("SL_CS");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--CS Test--";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
    $lMain->FindField("Address1")->AsString = ""; #Optional
    $lMain->FindField("Address2")->AsString = ""; #Optional
    $lMain->FindField("Address3")->AsString = ""; #Optional
    $lMain->FindField("Address4")->AsString = ""; #Optional
    $lMain->FindField("Phone1")->AsString = "";   #Optional
    $lMain->FindField("Description")->AsString = "Sales";
	
    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "500-000"; #Sales Account
    $lDetail->FindField("Description")->AsString = "Sales Item A";
	
	$txt = <<<EOT
           Item A Line 1
           Item A Line 2
           EOT;
	
    $lDetail->FindField("Description3")->AsString = $txt;
    $lDetail->FindField("Qty")->AsFloat = 1;
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 435;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 24.63;

    $lDetail->DisableControls();
    $lDetail->FindField("TaxInclusive")->value = 1;
    $lDetail->EnableControls();    
    $lDetail->Post();
	
    #For Tax Inclusive = False with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("Account")->AsString = "500-000";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Qty")->AsFloat = 1;
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 94.43;
    $lDetail->FindField("Amount")->AsFloat = 94.43;
    $lDetail->FindField("TaxAmt")->AsFloat = 5.66;
    $lDetail->Post();
	
    #For With Item Code
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 3;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    #$lDetail->FindField("Account")->AsString = "500-000"; #If you wanted override the Sales Account Code
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->FindField("Qty")->AsFloat = 2;
    #$lDetail->FindField("DISC")->AsString = "5%+3"; #Optional(eg 5% plus 3 Discount)
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 100;
    $lDetail->FindField("Amount")->AsFloat = 200;
    $lDetail->FindField("TaxAmt")->AsFloat = 12;
    $lDetail->Post();
	
    $BizObject->Save();
    $BizObject->Close();	
}

function PostDataPM(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("AR_PM");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--PM Test--";
    $lMain->FindField("CODE")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("DocDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
    $lMain->FindField("Description")->AsString = "Payment for A/c";
    $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
    $lMain->FindField("ChequeNumber")->AsString = "";
    $lMain->FindField("BankCharge")->AsFloat = 0;
    $lMain->FindField("DocAmt")->AsFloat = 200.00;
    $lMain->FindField("Cancelled")->AsString = "F";

    #Knock Off IV  
    $V = array("IV", "--CS Test--");  #DocType, DocNo
    
    if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
        $lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 147.09; #Partial Knock off
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
	}	
    $BizObject->Save();
    $BizObject->Close();
}

function PostDataCN(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("SL_CN");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--CN Test--";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
    $lMain->FindField("Code")->AsString = "300-C0001";
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
    $lMain->FindField("Address1")->AsString = "";
    $lMain->FindField("Address2")->AsString = "";
    $lMain->FindField("Address3")->AsString = "";
    $lMain->FindField("Address4")->AsString = "";
    $lMain->FindField("Phone1")->AsString = "";
    $lMain->FindField("Description")->AsString = "Sales Returned";
	
    #For With Item Code
    $lDetail->Append();
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Description2")->AsString = "Product Spoil"; #Reason
    $lDetail->FindField("Remark1")->AsString = "--CS Test--";   #Invoice No
    $lDetail->FindField("Remark2")->AsString = "20 Apr 2020";   #Invoice Date
    $lDetail->FindField("Qty")->AsFloat = 1;
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("UnitPrice")->AsFloat = 100;
    $lDetail->FindField("Amount")->AsFloat = 100;
    $lDetail->FindField("TaxAmt")->AsFloat = 6;
    $lDetail->Post();
	
    $BizObject->Save();
    $BizObject->Close();	
}

function PostKnockIVCN(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("AR_CN");
    $lMain = $BizObject->DataSets->Find("MainDataSet");
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff");
	
    #Find CN Number
    $lDocNo = "--CN Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
    $BizObject->Params->Find("DocKey")->AsString = $lDocKey;
	
	if ($lDocKey != null){
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
        
        #Knock Off IV        
        $V = array("IV", "--CS Test--");  #DocType, DocNo
        
        if ($lDetail->Locate("DocType;DocNo", $V, False, False)){
            $lDetail->Edit();
            $lDetail->FindField("KOAmt")->AsFloat = 100; #Partial Knock off
            $lDetail->FindField("KnockOff")->AsString = "T";
            $lDetail->Post();
		}
        $BizObject->Save();
        $BizObject->Close();		
	}
}

function PostDataCF(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("AR_CF");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--CF Test--";
    $lMain->FindField("CODE")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("DocDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->Value = date("d-m-Y", strtotime("2020-04-23")); #YYYY-MM-DD
    $lMain->FindField("Description")->AsString = "Payment for A/c";
    $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
    $lMain->FindField("ChequeNumber")->AsString = "";
    $lMain->FindField("BankCharge")->AsFloat = 0;
    $lMain->FindField("DocAmt")->AsFloat = 6;
    $lMain->FindField("Cancelled")->AsString = "F";

    #Knock Off CN 
    $V = array("CN", "--CN Test--");  #DocType, DocNo
    
    if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
        $lDetail->Edit();
        $lDetail->FindField("KOAmt")->AsFloat = 4; #Partial Knock off
        $lDetail->FindField("KnockOff")->AsString = "T";
        $lDetail->Post();
	}	
    $BizObject->Save();
    $BizObject->Close();
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Posting Cash Sales<br>";
        PostDataCS();
        echo date("d M Y h:i:s A")." - Posting Customer Payment<br>";
        PostDataPM();
        echo date("d M Y h:i:s A")." - Posting Sales Credit Note<br>";
        PostDataCN();
        echo date("d M Y h:i:s A")." - Posting Knock Off Sales Credit Note<br>";
        PostKnockIVCN();
        echo date("d M Y h:i:s A")." - Posting Customer Refund<br>";
        PostDataCF();
        echo date("d M Y h:i:s A")." - Posting Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Complete Post"/> 
    </form> 
</body>
</html>

Get Invoice Next Number

Get Invoice Next Number Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 01 May 2020<br>";
#This action to Get Next Number for Customer Invoice

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function GetData(){
	global $ComServer;
	
    $lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A 
	         INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY)
			 WHERE A.DOCTYPE='IV'
			 AND A.DESCRIPTION='Customer Invoice'
			 AND A.STATESET=1
			 ";
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
		$lDataSet->First();
        $fmt = $lDataSet->FindField('Format')->AsString();
        $NextNo = $lDataSet->FindField('NEXTNUMBER')->AsFloat();
		
        echo date("d M Y h:i:s A")." Format in SQLAcc : " . str_ireplace("d","s", $fmt)."<br>";
        $fmt= str_ireplace(".","'0", $fmt);
        echo date("d M Y h:i:s A")." Format in PHP : " . str_ireplace("d","s", $fmt)."<br>";
		echo date("d M Y h:i:s A")." Output in PHP : " .sprintf($fmt,$NextNo)."<br>";
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Doc Number"/> 
    </form> 
</body>
</html>

Add & Edit AR_Customer

Add & Edit AR_Customer Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 11 Jun 2020<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF", #DCF File 
                      "ACC-0035.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("AR_Customer");
    $lMain = $BizObject->DataSets->Find("MainDataSet");
	$lDtl  = $BizObject->DataSets->Find("cdsBranch");
    
    $lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY");
	
	if ($lDocKey == null){
        $BizObject->New();
        $lMain->FindField("CODE")->value = "FAIRY";
        $lMain->FindField("CompanyName")->value = "FAIRY TAIL";
		
        $lDtl->Edit(); #For 1St Branch
        $lDtl->FindField("BranchName")->AsString  = "BILLING";
        $lDtl->FindField("Address1")->AsString    = "Address1";
        $lDtl->FindField("Address2")->AsString    = "Address2";
        $lDtl->FindField("Address3")->AsString    = "Address3";
        $lDtl->FindField("Address4")->AsString    = "Address4"; 
        $lDtl->FindField("Attention")->AsString   = "Attention"; 
        $lDtl->FindField("Phone1")->AsString      = "Phone1";
        $lDtl->FindField("Fax1")->AsString        = "Fax1";
        $lDtl->FindField("Email")->AsString       = "EmailAddress";
        $lDtl->Post();

        $lDtl->Append(); #For 2nd Branch
        $lDtl->FindField("BranchName")->AsString  = "Branch1";
        $lDtl->FindField("Address1")->AsString    = "DAddress1";
        $lDtl->FindField("Address2")->AsString    = "DAddress2";
        $lDtl->FindField("Address3")->AsString    = "DAddress3";
        $lDtl->FindField("Address4")->AsString    = "DAddress4";  
        $lDtl->FindField("Attention")->AsString   = "DAttention";  
        $lDtl->FindField("Phone1")->AsString      = "DPhone1";
        $lDtl->FindField("Fax1")->AsString        = "DFax1";
        $lDtl->FindField("Email")->AsString       = "DEmailAddress";
        $lDtl->Post();	
	} else{
        $BizObject->Params->Find("CODE")->Value = $lDocKey;
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->FindField("CompanyName")->value = "FAIRY TAIL WIZARD";
		
		$r = $lDtl->RecordCount();
		$x = 1;
		while ($x <= $r ){
			$lDtl->First();
            $lDtl->Delete();
			$x++;
		}
		
        #Insert back with new Information
        $lDtl->Edit(); #For 1St Branch
        $lDtl->FindField("BranchName")->AsString  = "BILLING"; #Make sure this always same as b4 delete data
        $lDtl->FindField("Address1")->AsString    = "New Address1";
        $lDtl->FindField("Address2")->AsString    = "New Address2";
        $lDtl->FindField("Address3")->AsString    = "New Address3";
        $lDtl->FindField("Address4")->AsString    = "New Address4";  
        $lDtl->FindField("Attention")->AsString   = "New Attention";  
        $lDtl->FindField("Phone1")->AsString      = "New Phone1";
        $lDtl->FindField("Fax1")->AsString        = "New Fax1";
        $lDtl->FindField("Email")->AsString       = "New EmailAddress";
        $lDtl->Post();

        $lDtl->Append(); #For 2nd Branch
        $lDtl->FindField("BranchName")->AsString  = "Branch1"; #Make sure this always same as b4 delete data
        $lDtl->FindField("Address1")->AsString    = "New DAddress1";
        $lDtl->FindField("Address2")->AsString    = "New DAddress2";
        $lDtl->FindField("Address3")->AsString    = "New DAddress3";
        $lDtl->FindField("Address4")->AsString    = "New DAddress4"; 
        $lDtl->FindField("Attention")->AsString   = "New DAttention";  
        $lDtl->FindField("Phone1")->AsString      = "New DPhone1";
        $lDtl->FindField("Fax1")->AsString        = "New DFax1";
        $lDtl->FindField("Email")->AsString       = "New DEmailAddress";
        $lDtl->Post();	
	
	}
	try{
		$BizObject->Save();
		echo "Posting Done <br>";
	}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        PostData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?>
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Add/Edit AR Customer"/> 
    </form> 
</body>
</html>

Get Stock List

Get Stock List Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 22 Jun 2020<br>";
#This action to Get Stock Item List

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function GetData(){
	global $ComServer;
	
    $lSQL = "SELECT A.*, B.UOM, B.RATE, B.REFCOST, B.REFPRICE, B.ISBASE FROM ST_ITEM A 
	         INNER JOIN ST_ITEM_UOM B ON (A.CODE=B.CODE) 
			 WHERE A.ISACTIVE='T'
			 ";
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
		$lDataSet->First();
		$fc = $lDataSet->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Stock list"/> 
    </form> 
</body>
</html>

AR_IV

AR_IV Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
#This action to Post Customer Invoice

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0070.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("AR_IV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--IV Test--";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("Description")->AsString = "Sales";
	
    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "500-000"; #Sales Account
    $lDetail->FindField("Description")->AsString = "Sales Item A";
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 24.63;

    $lDetail->DisableControls();
    $lDetail->FindField("TaxInclusive")->value = 1;
    $lDetail->EnableControls();    
    $lDetail->Post();
	
    #For Tax Inclusive = False with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("Account")->AsString = "500-000";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Tax")->AsString = "SV";
    $lDetail->FindField("TaxRate")->AsString = "6%";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 94.43;
    $lDetail->FindField("TaxAmt")->AsFloat = 5.66;
    $lDetail->Post();
	
    $BizObject->Save();
    $BizObject->Close();	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
		PostData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Post Customer Invoice"/> 
    </form> 
</body>
</html>

Get Outstanding Invoice List

Get Outstanding Invoice List Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 24 Jun 2020<br>";
#This action to Get Outstanding Invoice List

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function GetData(){
	global $ComServer;
	
    $lSQL = "SELECT A.*, B.COMPANYNAME, (A.DOCAMT-A.PAYMENTAMT) OUTSTANDING  FROM AR_IV A
	         INNER JOIN AR_CUSTOMER B ON (A.CODE=B.CODE) 
			 WHERE (A.DOCAMT-A.PAYMENTAMT)<>0
			 AND CANCELLED='F'
			 ";
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
		$lDataSet->First();
		$fc = $lDataSet->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Outstanding Invoice List"/> 
    </form> 
</body>
</html>

Stock Month End - Weighted Average

Stock Month End - Weighted Average Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 01 Dec 2021<br>";


$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function GetData(){
	#Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
	global $ComServer;
	
    $lSQL = "SELECT A.ItemCode, A.Location, A.Batch,  MAX(B.Seq) AS Seq, 2 AS CostingMethod
	         FROM ST_TR A INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO) 
			 WHERE A.PostDate<='31 Jul 2020'
			 AND A.ITEMCODE='Adj_Voucher'
			 GROUP BY A.ItemCode, A.Location, A.Batch
			 ";
	
	$lDataSet1 = $ComServer->DBManager->NewDataSet($lSQL);
	
	$Seq = "";
	$lDataSet1->First();
	while (! $lDataSet1->Eof()){
		$Seq = $Seq.$lDataSet1->FindField("SEQ")->AsString .",";
		$lDataSet1->Next();
	}

    $lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.UTDQty, B.UTDCost FROM ST_TR A
	         INNER JOIN ST_TR_WMA B ON (A.TRANSNO=B.TRANSNO) 
			 WHERE A.PostDate<='31 Jul 2020'
			 AND A.ITEMCODE='Adj_Voucher'
			 AND B.SEQ IN (".substr_replace($Seq ,"",-1).") 
			 AND B.UTDQty<>0 
			 ORDER BY A.ItemCode, A.Location, A.Batch
			 ";
		 
	$lDataSet2 = $ComServer->DBManager->NewDataSet($lSQL);		 
			 
    if ($lDataSet2->RecordCount > 0) {
		$lDataSet2->First();
		$fc = $lDataSet2->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet2->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet2->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet2->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet2->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet2->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Month End - WA"/> 
    </form> 
</body>
</html>

Stock Month End - FIFO

Stock Month End - FIFO Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 16 Jul 2020<br>";
#This action to Get Outstanding Invoice List

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function GetData(){
	#Accuracy : 90% - Due to the figure is base on last run Costing in SQL Accounting
	global $ComServer;
	
    $lSQL = "SELECT  A.ItemCode, A.Location, A.Batch, MAX(B.Seq) AS Seq, 1 AS CostingMethod 
	         FROM ST_TR A INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO) 
			 WHERE A.PostDate<='31 Jul 2020'
			 AND A.ItemCode IN ('ANT', 'COVER', 'BOM')
			 GROUP BY A.ItemCode, A.Location, A.Batch
			 ";
	
	$lDataSet1 = $ComServer->DBManager->NewDataSet($lSQL);
	
	$Seq = "";
	$lDataSet1->First();
	while (! $lDataSet1->Eof()){
		$Seq = $Seq.$lDataSet1->FindField("SEQ")->AsString .",";
		$lDataSet1->Next();
	}

    $lSQL = "SELECT A.TRANSNO, A.ItemCode, A.Location, A.Batch, B.QTY, B.COST FROM ST_TR A 
	         INNER JOIN ST_TR_FIFO B ON (A.TRANSNO=B.TRANSNO) 
			 WHERE B.COSTTYPE='U' 
			 AND A.PostDate<='31 Jul 2020'
			 AND B.SEQ IN (".substr_replace($Seq ,"",-1).") 
			 AND A.ItemCode IN ('ANT1.0', 'COVER', 'BOM')
			 AND B.Qty<>0 
			 ORDER BY A.ItemCode, A.Location, A.Batch
			 ";
	 
	$lDataSet2 = $ComServer->DBManager->NewDataSet($lSQL);		 
			 
    if ($lDataSet2->RecordCount > 0) {
		$lDataSet2->First();
		$fc = $lDataSet2->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet2->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet2->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet2->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet2->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet2->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }
	
	#FIFO Detail Key to link with $lDataSet2 & $lDataSet3 is TRANSNO
	$Seq = "";
	$lDataSet2->First();
	while (! $lDataSet2->Eof()){
		$Seq = $Seq.$lDataSet2->FindField("TRANSNO")->AsString .",";
		$lDataSet2->Next();
	}

    $lSQL = "SELECT  TransNo, Cost, SUM(Qty) AS Qty, MIN(CostSeq) AS Seq FROM ST_TR_FIFO 
	         WHERE CostType='B' 
			 AND TRANSNO IN (".substr_replace($Seq ,"",-1).") 
			 GROUP BY TransNo, Cost
			 ";
	 
	$lDataSet3 = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet3->RecordCount > 0) {
		$lDataSet3->First();
		$fc = $lDataSet3->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet3->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet3->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet3->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet3->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet3->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        #$ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Month End - FIFO"/> 
    </form> 
</body>
</html>

Add & Edit Stock Item

Add & Edit Stock Item Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 05 Aug 2020<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("ST_ITEM");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); 
    $lUOM  = $BizObject->DataSets->Find("cdsUOM"); 
	$lBarcode = $BizObject->DataSets->Find("cdsBarcode"); 
	
	$lDocKey = $BizObject->FindKeyByRef("CODE", "FAIRY-PHP");

	if ($lDocKey == null){
        $BizObject->New();
        $lMain->FindField("CODE")->AsString = "FAIRY-PHP";
        $lMain->FindField("DESCRIPTION")->AsString = "FAIRY TAIL";
        $lMain->FindField("STOCKGROUP")->AsString = "DEFAULT";
        $lMain->FindField("STOCKCONTROL")->AsString = "T";
        $lMain->FindField("ISACTIVE")->AsString = "T";

        $lUOM->Edit(); #For 1St UOM
        $lUOM->FindField("UOM")->AsString = "PCS";
        $lUOM->FindField("Rate")->AsFloat = 1;
        $lUOM->FindField("RefCost")->AsFloat = 10.2;
        $lUOM->FindField("RefPrice")->AsFloat = 25;
        $lUOM->Post();

        $lUOM->Append(); #For 2nd UOM
        $lUOM->FindField("UOM")->AsString = "CTN";
        $lUOM->FindField("Rate")->AsFloat = 12;
        $lUOM->FindField("RefCost")->AsFloat = 102;
        $lUOM->FindField("RefPrice")->AsFloat = 240;
        $lUOM->Post();

        $lBarcode->Append(); #For 1st UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "123456789";
		$lBarcode->FindField("UOM")->AsString = "PCS";
        $lBarcode->Post();
		
        $lBarcode->Append(); #For 2nd UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "987654321";
		$lBarcode->FindField("UOM")->AsString = "CTN";
        $lBarcode->Post();		
	} else{
        $BizObject->Params->Find("Dockey")->AsString = $lDocKey;
        $BizObject->Open();
        $BizObject->Edit();
        $lMain->FindField("DESCRIPTION")->AsString = "FAIRY TAIL WIZARD";
		
		$r = $lUOM->RecordCount();
		$x = 1;
		while ($x <= $r ){
			$lUOM->First();
            $lUOM->Delete();
			$x++;
		}
		
		$r = $lBarcode->RecordCount();
		$x = 1;
		while ($x <= $r ){
			$lBarcode->First();
            $lBarcode->Delete();
			$x++;
		}
		
        $lUOM->Append(); #For 1St UOM
        $lUOM->FindField("UOM")->AsString = "PCS"; #Make sure this always same as b4 delete data
        $lUOM->FindField("Rate")->AsFloat = 1; #Make sure this always same as b4 delete data
        $lUOM->FindField("RefCost")->AsFloat = 22.3;
        $lUOM->FindField("RefPrice")->AsFloat = 52;
        $lUOM->Post();

        $lUOM->Append(); #For 2nd UOM
        $lUOM->FindField("UOM")->AsString = "CTN"; #Make sure this always same as b4 delete data
        $lUOM->FindField("Rate")->AsFloat = 12; #Make sure this always same as b4 delete data
        $lUOM->FindField("RefCost")->AsFloat = 102.5;
        $lUOM->FindField("RefPrice")->AsFloat = 260.45;
        $lUOM->Post();	
		
        $lBarcode->Append(); #For 1st UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "456321789";
		$lBarcode->FindField("UOM")->AsString = "PCS";
        $lBarcode->Post();
		
        $lBarcode->Append(); #For 2nd UOM Barcode
        $lBarcode->FindField("BARCODE")->AsString = "321456987";
		$lBarcode->FindField("UOM")->AsString = "CTN";
        $lBarcode->Post();			
	}
	
	try{
        $BizObject->Save();
        $BizObject->Close();
	}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }	
}


if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting Stock Item<br>";
        PostData();
		echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Add & Edit Stock Item"/> 
    </form> 
</body>
</html>

Add Stock Issue

Add Stock Issue Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function CheckLogin1()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("ST_IS");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); 
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); 
	
    $BizObject->New();
    $lMain->FindField("DocKey")->value = -1;
    $lMain->FindField("DocNo")->AsString = "--IS Test--";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Description")->AsString = "Stock Issue";
	
    #Insert Data - Detail	
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lDetail->FindField("UOM")->AsString = "BOX";
    $lDetail->Post();

    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("ItemCode")->AsString = "N-CHARGER";
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER";
    $lDetail->FindField("Qty")->AsFloat = 5;
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->Post();
	
    $BizObject->Save();
    $BizObject->Close();
	
	try{
        $BizObject->Save();
        $BizObject->Close();
	}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }	
}


if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin1();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
		echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Add Stock Issue"/> 
    </form> 
</body>
</html>

Add Points

Add Points Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("Sales.Points.OPF");
    $lMain = $BizObject->DataSets->Find("Main"); #lMain contains master data
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--Point Test--";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("CompanyName")->AsString = "Cash Sales";
	$lMain->FindField("DESCRIPTION")->AsString = "Points Earn";
    $lMain->FindField("FromDocType")->AsString = "CS";
	$lMain->FindField("FromDocNo")->AsString = "CS-01234";
	$lMain->FindField("FROMDOCAMT")->AsFloat = 100.10;
	$lMain->FindField("Points")->AsFloat = 10;
	
	try{
		$BizObject->Save();
	}catch (Exception $e) {
		echo 'Caught exception: ',  $e->getMessage(), "\n";
    }
}


if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Posting Point<br>";
        PostData();
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Post Point"/> 
    </form> 
</body>
</html>

AR_CN

AR_CN Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 12 Dec 2020<br>";
#This action to Post Customer Credit Note

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0040.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("AR_CN");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	$lKO = $BizObject->DataSets->Find("cdsKnockOff");
	
    $BizObject->New();
    $lMain->FindField("DocKey")->value = -1;
    $lMain->FindField("DocNo")->AsString = "--CN Test1--";
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
    $lMain->FindField("Description")->AsString = "Sales";
	
    #Insert Data - Detail
    #For Tax Inclusive = True with override Tax Amount
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("Account")->AsString = "510-000"; #Sales Return Account
    $lDetail->FindField("Description")->AsString = "Return Item A";
    $lDetail->FindField("Tax")->AsString = "";
    $lDetail->FindField("TaxRate")->AsString = "";
    $lDetail->FindField("TaxInclusive")->value = 0;
    $lDetail->FindField("Amount")->AsFloat = 410.37; #Exclding GST Amt
    $lDetail->FindField("TaxAmt")->AsFloat = 0;
	$lDetail->Post();

    $V = array("IV", "IV-00003");  #DocType, DocNo
        
    if ($lKO->Locate("DocType;DocNo", $V, False, False)){
        $lKO->Edit();
        $lKO->FindField("KOAmt")->AsFloat = 100; #Partial Knock off
        $lKO->FindField("KnockOff")->AsString = "T";
        $lKO->Post();
	}	
    $BizObject->Save();
    $BizObject->Close();	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
		PostData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Post Customer Credit Note"/> 
    </form> 
</body>
</html>

SO to DO

SO to DO Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
#This action to 
#01. Get Oustanding SO
#02. Post To DO

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
    $lSQL = "SELECT Dockey, DocNo,Code, CompanyName, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount, 
             COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM (
             SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName,
             B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount, 
             C.Qty XFQty FROM SL_SO A
             INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY)
             LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY
                                       AND C.FROMDOCTYPE='SO')
             WHERE A.DOCNO='SO-00140')
             GROUP BY Dockey, DocNo, Code, CompanyName, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount
			 HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0
			 ";	
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL); #Get Oustanding SO Qty

    if ($lDataSet->RecordCount > 0) {
		$BizObject = $ComServer->BizObjects->Find("SL_DO");
        $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
        $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data	
		
		$lDataSet->First();
		$BizObject->New();
		$lMain->FindField("DocNo")->AsString = "--DO Test--";
		$lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2021-01-20")); #YYYY-MM-DD
		$lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2021-01-20")); #YYYY-MM-DD
		$lMain->FindField("Code")->AsString = $lDataSet->FindField("Code")->AsString;
		$lMain->FindField("CompanyName")->AsString = $lDataSet->FindField("CompanyName")->AsString;
		$lMain->FindField("Description")->AsString = "Delivery Order";		

		while (! $lDataSet->Eof()){
    		$lDetail->Append();
    		$lDetail->FindField("ItemCode")->AsString = $lDataSet->FindField("ItemCode")->AsString;
    		$lDetail->FindField("UOM")->AsString = $lDataSet->FindField("UOM")->AsString;
		$lDetail->FindField("Qty")->AsFloat = $lDataSet->FindField("OSQty")->AsFloat;
    		$lDetail->FindField("DISC")->value = $lDataSet->FindField("DISC")->value;
    		$lDetail->FindField("Tax")->AsString = "";
    		$lDetail->FindField("TaxRate")->AsString = "";
    		$lDetail->FindField("TaxInclusive")->value = 0;
    		$lDetail->FindField("UnitPrice")->AsFloat = $lDataSet->FindField("UnitPrice")->AsFloat;
    		$lDetail->FindField("Amount")->AsFloat = $lDataSet->FindField("Amount")->AsFloat;
    		$lDetail->FindField("TaxAmt")->AsFloat = 0;
		$lDetail->FindField("FromDocType")->AsString = "SO";
		$lDetail->FindField("FromDockey")->AsFloat = $lDataSet->FindField("Dockey")->AsFloat;
		$lDetail->FindField("FromDtlkey")->AsFloat = $lDataSet->FindField("DtlKey")->AsFloat;
    		$lDetail->Post();
		$lDataSet->Next();

		}
        $BizObject->Save();
        $BizObject->Close();			
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
		PostData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Post SO to DO"/> 
    </form> 
</body>
</html>

ST_AJ

ST_AJ Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0100.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("ST_AJ");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); 
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); 
	
    $BizObject->New();
    $lMain->FindField("DocNo")->AsString = "--AJ Test--";
    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2020-04-20")); #YYYY-MM-DD
    $lMain->FindField("Description")->AsString = "Stock Adjustment";
	
    #Insert Data - Detail - Increase Stock Qty
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "ANTENA";
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lDetail->FindField("UOM")->AsString = "BOX";
    $lDetail->Post();

    #Insert Data - Detail - Reduce Stock Qty
    $lDetail->Append();
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("ItemCode")->AsString = "N-CHARGER";
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER";
    $lDetail->FindField("Qty")->AsFloat = -5;
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->Post();
	
    $BizObject->Save();
    $BizObject->Close();
	
	try{
        $BizObject->Save();
        $BizObject->Close();
	}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
		PostData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Post ST_AJ"/> 
    </form> 
</body>
</html>

Get Stock Serial Number balance

Get Stock Serial Number Balance List Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 21 May 2021<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "D:\Happy\DB\Default.DCF",  #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function GetData(){
	global $ComServer;
	
    $lSQL = "SELECT ItemCode, Location, Batch, SerialNumber, SUM(Qty) Qty  FROM ST_TR_SN  
	         GROUP BY ItemCode, Location, Batch, SerialNumber 
			 HAVING SUM(Qty) > 0
			 ";
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
		$lDataSet->First();
		$fc = $lDataSet->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
		GetData();
        echo date("d M Y h:i:s A")." - Done";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get SN Balance"/> 
    </form> 
</body>
</html>

SL_IV-Add, Edit & Delete

Insert, Edit & Delete Invoice Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 25 May 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0015.FDB"); #Database Name
    
}

function PostDataIV(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("SL_IV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	$lSN = $BizObject->DataSets->Find("cdsSerialNumber"); #lDetail contains detail data
	
    #Find IV Number
    $lDocNo = "--IV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
	    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-04-24")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-04-24")); #YYYY-MM-DD
        $lMain->FindField("CompanyName")->AsString = "Cash Sales-Edited";
        $lMain->FindField("Address1")->AsString = ""; #Optional
        $lMain->FindField("Address2")->AsString = ""; #Optional
        $lMain->FindField("Address3")->AsString = ""; #Optional
        $lMain->FindField("Address4")->AsString = ""; #Optional
        $lMain->FindField("Phone1")->AsString = "";   #Optional
        $lMain->FindField("Description")->AsString = "Sales - Edited";

		$V = array("ANT", "UNIT");  #ItemCode, UOM
		
		if ($lDetail->Locate("ItemCode;UOM", $V, False, False)){
            $lDetail->Edit();
            $lDetail->FindField("Qty")->AsFloat = 2;
            $lDetail->FindField("Tax")->AsString = "";
            $lDetail->FindField("TaxRate")->AsString = "";
            $lDetail->FindField("TaxInclusive")->value = 0;
            $lDetail->FindField("UnitPrice")->AsFloat = 6.00;
            $lDetail->FindField("Amount")->AsFloat = 12.00;
            $lDetail->FindField("TaxAmt")->AsFloat = 0;
            $lDetail->Post();
		}	
	} else {
      echo "New Invoice<br>";
	  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = #$lDocNo;
	  $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
	  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-04-03")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-04-03"));  #YYYY-MM-DD
      $lMain->FindField("CompanyName")->AsString = "Cash Sales";
      $lMain->FindField("Address1")->AsString = ""; #Optional
      $lMain->FindField("Address2")->AsString = ""; #Optional
      $lMain->FindField("Address3")->AsString = ""; #Optional
      $lMain->FindField("Address4")->AsString = ""; #Optional
      $lMain->FindField("Phone1")->AsString = "";   #Optional
      $lMain->FindField("Description")->AsString = "Sales";
	  #$lMain->FindField('DocAmt')->value = $Amt;
	

      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "BOM";
      $lDetail->FindField("Description")->AsString = "Sales Item BOM";
	  $lDetail->FindField("UOM")->AsString = "UNIT";
      $lDetail->FindField("Qty")->AsFloat = 2;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 150;
      $lDetail->FindField("Amount")->AsFloat = 300;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
	  
      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "ANT";
      $lDetail->FindField("Description")->AsString = "Sales Item ANT";
	  $lDetail->FindField("UOM")->AsString = "UNIT";
      $lDetail->FindField("Qty")->AsFloat = 1;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 100;
      $lDetail->FindField("Amount")->AsFloat = 100;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();	
	  
	  #For Serial Number
      $lDetail->Append();
      $lDetail->FindField("ItemCode")->AsString = "SN";
      $lDetail->FindField("Description")->AsString = "Sales Serial Number Item";
	  $lDetail->FindField("UOM")->AsString = "UNIT";
	  
	  $lSN->Append;
      $lSN->FindField("SERIALNUMBER")->AsString = 'SN-136476';
      $lSN->Post;
	  
	  $lSN->Append;
      $lSN->FindField("SERIALNUMBER")->AsString = 'SN-136477';
      $lSN->Post;
	  
	  $lDetail->FindField("Qty")->AsFloat = 2;
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("UnitPrice")->AsFloat = 100;
      $lDetail->FindField("Amount")->AsFloat = 100;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();		  
	}
    $BizObject->Save();
	echo "Save with DocNo ".$lMain->FindField("DocNo")->AsString."<br>";
	echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();	
}

function PostDelIV(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("SL_IV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
	
    #Find IV Number
    $lDocNo = "--IV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Delete();
		echo date("d M Y h:i:s A")." - Record deleted<br>";
	} else {
		echo date("d M Y h:i:s A")." - Document Not Found<br>";
	}		
}
if (isset($_POST['BtnPost']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostDataIV();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        PostDelIV();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnPost"
                value="Post Sales IV"/> 
        <input type="submit" name="BtnDel"
                value="Post Delete IV"/>
    </form> 
</body>
</html>

GL_PV-Add, Edit & Delete

Insert, Edit & Delete Invoice Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "D:\Happy\DB\Default.DCF", #"C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0015.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("GL_PV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	
    #Find PV Number
    $lDocNo = "--PV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
	    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
        $lMain->FindField("Description")->AsString = "Tenaga Malaysia - Edited";
		$lMain->FindField("PaymentMethod")->AsString = "310-001"; #GL Bank/Cash account code
		$lMain->FindField("CHEQUENUMBER")->AsString = "MBB 123456"; #Optional
		$lMain->FindField("Cancelled")->AsString = "F";

		$r = $lDetail->RecordCount();
		$x = 1;
		while ($x <= $r ){
			$lDetail->First();
            $lDetail->Delete();
			$x++;
		}
        $lDetail->Append();
        $lDetail->FindField("Code")->AsString = "907-000";
        $lDetail->FindField("Description")->AsString = "TNB Bill for Feb 2022 - Edited";
        $lDetail->FindField("Tax")->AsString = "";
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
        $lDetail->FindField("Amount")->AsFloat = 168.80;
        $lDetail->FindField("TaxAmt")->AsFloat = 0;
        $lDetail->Post();		
	} else {
      echo "New PV<br>";
	  $BizObject->New();
      $lMain->FindField("DocNo")->AsString = $lDocNo;
	  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Tenaga Malaysia";
	  $lMain->FindField("PaymentMethod")->AsString = "310-001"; #GL Bank/Cash account code
	  $lMain->FindField("CHEQUENUMBER")->AsString = "MBB 123456"; #Optional
	  $lMain->FindField("Cancelled")->AsString = "F";
		
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "907-000"; #GL Account
      $lDetail->FindField("Description")->AsString = "TNB Bill for Jan 2022";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("Amount")->AsFloat = 100.80;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();

      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "907-000";
      $lDetail->FindField("Description")->AsString = "TNB Bill for Feb 2022";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("Amount")->AsFloat = 68.00;
      $lDetail->FindField("TaxAmt")->AsFloat = 0;
      $lDetail->Post();
	}
    $BizObject->Save();
	
	echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();	
}

function DelData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("GL_PV");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
	
    #Find PV Number
    $lDocNo = "--PV Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Delete();
		echo date("d M Y h:i:s A")." - Record deleted<br>";
	} else {
		echo date("d M Y h:i:s A")." - Document Not Found<br>";
	}		
}
if (isset($_POST['BtnPost']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnPost"
                value="Post GL PV"/> 
        <input type="submit" name="BtnDel"
                value="Delete PV"/>
    </form> 
</body>
</html>

GL_JE-Add, Edit & Delete

Insert, Edit & Delete Invoice Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 18 May 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0015.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("GL_JE");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); #lDetail contains detail data
	
    #Find JE Number
    $lDocNo = "--JE Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
	    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-20")); #YYYY-MM-DD
        $lMain->FindField("Description")->AsString = "Credit Card Charges - Edited";
		$lMain->FindField("Cancelled")->AsString = "F";

		$r = $lDetail->RecordCount();
		$x = 1;
		while ($x <= $r ){
			$lDetail->First();
            $lDetail->Delete();
			$x++;
		}
        $lDetail->Append();
        $lDetail->FindField("Code")->AsString = "902-000";
        $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges - Edited";
        $lDetail->FindField("Tax")->AsString = "";
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
        $lDetail->FindField("LocalDR")->AsFloat = 78.88;
		$lDetail->FindField("DR")->AsFloat = 78.88; #If Wanted DR <> LocalDR
        $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
        $lDetail->Post();
		
        $lDetail->Append();
        $lDetail->FindField("Code")->AsString = "310-001";
        $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges - Edited";
        $lDetail->FindField("Tax")->AsString = "";
        $lDetail->FindField("TaxRate")->AsString = "";
        $lDetail->FindField("TaxInclusive")->value = 0;
        $lDetail->FindField("LocalCR")->AsFloat = 78.88;
		$lDetail->FindField("CR")->AsFloat = 78.88; #If Wanted CR <> LocalCR
        $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
        $lDetail->Post();			
	} else {
      echo "New JE<br>";
	  $BizObject->New();
      $lMain->FindField("DocNo")->AsString = $lDocNo;
	  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2022-02-18")); #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Credit Card Charges";
	  $lMain->FindField("Cancelled")->AsString = "F";
		
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "902-000";
      $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("LocalDR")->AsFloat = 88.88;
	  $lDetail->FindField("DR")->AsFloat = 88.88; #If Wanted DR <> LocalDR
      $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
      $lDetail->Post();
		
      $lDetail->Append();
      $lDetail->FindField("Code")->AsString = "310-001";
      $lDetail->FindField("Description")->AsString = "MBB Credit Card Charges";
      $lDetail->FindField("Tax")->AsString = "";
      $lDetail->FindField("TaxRate")->AsString = "";
      $lDetail->FindField("TaxInclusive")->value = 0;
      $lDetail->FindField("LocalCR")->AsFloat = 88.88;
	  $lDetail->FindField("CR")->AsFloat = 88.88; #If Wanted CR <> LocalCR
      $lDetail->FindField("LocalTaxAmt")->AsFloat = 0;
      $lDetail->Post();
	}
    $BizObject->Save();
	
	echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();	
}

function DelData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("GL_JE");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
	
    #Find JE Number
    $lDocNo = "--JE Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Delete();
		echo date("d M Y h:i:s A")." - Record deleted<br>";
	} else {
		echo date("d M Y h:i:s A")." - Document Not Found<br>";
	}		
}
if (isset($_POST['BtnPost']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnPost"
                value="Post GL JE"/> 
        <input type="submit" name="BtnDel"
                value="Delete JE"/>
    </form> 
</body>
</html>

Get Outstanding SO List

Get Outstanding SO List Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 09 Jun 2022<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp") or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0015.FDB"); #Database Name
    
}

function GetData(){
	global $ComServer;
	
    $lSQL = "SELECT Dockey, DocNo,Code, CompanyName, Seq, DtlKey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount, 
             COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM (
             SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName,
             B.DtlKey, B.Seq, B.ItemCode, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount, 
             C.Qty XFQty FROM SL_SO A
             INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY)
             LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY
                                       AND C.FROMDOCTYPE='SO')
             WHERE A.Cancelled='F')
             GROUP BY Dockey, DocNo, Code, CompanyName, Seq, Dtlkey, ItemCode, Qty, UOM, UnitPrice, Disc, Amount
             HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0
			 ";
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
		$lDataSet->First();
		$fc = $lDataSet->Fields->Count-1;
		echo "<table>";
		echo "<tr>";
		for ($x = 0; $x <= $fc; $x++) {
			#Insert Header
			echo "<td>".$lDataSet->Fields->Items($x)->FieldName()."</td>"; 
		}
		echo "</tr>";
		
		#Looping Dataset
		while (! $lDataSet->Eof()){
			echo "<tr>";
		    for ($x = 0; $x <= $fc; $x++) {
				$lFN = $lDataSet->Fields->Items($x)->FieldName();
			    echo "<td>".$lDataSet->FindField($lFN)->AsString()."</td>"; 
		    }
		    echo "</tr>";
			$lDataSet->Next();
		}	
		echo "</table>"."<br>";		
	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Get Data<br>";
        GetData();
		echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Outstanding SO List"/> 
    </form> 
</body>
</html>

Get Stock Item Picture

Get Stock Item Picture Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 14 Sep 2022<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function GetData(){
    global $ComServer;
	
    $lSQL = "SELECT Picture FROM ST_ITEM 
             WHERE Code='ANT' ";
	
    $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
	$lDataSet->First();
		
	$raw = $lDataSet->FindField('Picture')->Value();
	
        $b = [];
        foreach($raw as $p) {
            array_push($b, chr($p));
        }

	echo '<img src=data:image/*;base64,'.base64_encode(implode($b)).' alt="My Picture" style="width:128px;height:128px">';

	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
	echo "<br>";
        echo date("d M Y h:i:s A")." - Done";	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Item Picture"/> 
    </form> 
</body>
</html>

Customer.Aging.RO

Customer.Aging.RO Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 26 Sep 2022<br>";

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        #$ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function SetGrid($DataSet){
	echo "<table>";
	echo "<tr>";	
    $DataSet->First();
	$fc = $DataSet->Fields->Count-1;
	for ($x = 0; $x <= $fc; $x++) {
		#Insert Header
		echo "<td>".$DataSet->Fields->Items($x)->FieldName()."</td>"; 
	}
	echo "</tr>";
		
	#Looping Dataset
	while (! $DataSet->Eof()){
		echo "<tr>";
	    for ($x = 0; $x <= $fc; $x++) {
			$lFN = $DataSet->Fields->Items($x)->FieldName();
		    echo "<td>".$DataSet->FindField($lFN)->AsString()."</td>"; 
	    }
	    echo "</tr>";
		$DataSet->Next();
	}
    echo "</table>"."<br>";		
}

function GetData(){
	global $ComServer;
	
    $lSQL = '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>
	         <FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>
             <FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>
             <FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>
             </FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>
             <ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>
             <ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>
             <ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>
             <ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>
             <ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>
             <ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>
             </ROWDATA></DATAPACKET>';
	
	$lRptVar = $ComServer->RptObjects->Find('Customer.Aging.RO');
	$lRptVar->Params->Find('ActualGroupBy')->AsString = 'Code;CompanyName'; #Fixed
#	$lRptVar->Params->Find('AgentData')->AsBlob               = ; #Not use if AllAgent is True
    $lRptVar->Params->Find('AgingData')->AsString           = $lSQL;
    $lRptVar->Params->Find('AgingDate')->AsDate             = '23 Sep 2022';
    $lRptVar->Params->Find('AgingOn')->AsString             = 'I'; #Fixed
    $lRptVar->Params->Find('AllAgent')->AsBoolean           = True;
    $lRptVar->Params->Find('AllArea')->AsBoolean            = True;
    $lRptVar->Params->Find('AllCompany')->AsBoolean         = True;
    $lRptVar->Params->Find('AllCompanyCategory')->AsBoolean = True;
    $lRptVar->Params->Find('AllControlAccount')->AsBoolean  = True;
    $lRptVar->Params->Find('AllCurrency')->AsBoolean        = True;
    $lRptVar->Params->Find('AllDocProject')->AsBoolean      = True;
#    $lRptVar->Params->Find('AreaData')->AsBlob            = ; #Not use if AllArea is True
#    $lRptVar->Params->Find('CompanyCategoryData')->AsBlob = ; #Not use if AllCompanyCategory is True
#    $lRptVar->Params->Find('CompanyData')->AsBlob         = ; #Not use if AllCompany is True
#    $lRptVar->Params->Find('ControlAccountData')->AsBlob  = ; #Not use if AllControlAccount is True
#    $lRptVar->Params->Find('CurrencyData')->AsBlob        = ; #Not use if AllCurrency is True
#    $lRptVar->Params->Find('DocProjectData')->AsBlob      = ; #Not use if AllDocProject is True
    $lRptVar->Params->Find('FilterPostDate')->AsBoolean      = True;
#    $lRptVar->Params->Find('GroupBy
    $lRptVar->Params->Find('IncludePDC')->AsBoolean         = False;
    $lRptVar->Params->Find('IncludeZeroBalance')->AsBoolean = False;
    $lRptVar->Params->Find('SortBy')->AsString              = 'Code;CompanyName';
    $lRptVar->Params->Find('DateTo')->AsDate                = '23 Sep 2022';
    $lRptVar->Params->Find('IncludeKnockedOffDetail')->AsBoolean = False;
	
	$lRptVar->CalculateReport();
	$lDataSetHdr = $lRptVar->DataSets->Find('cdsAgingHeader');
	$lDataSet = $lRptVar->DataSets->Find('cdsMain');
	$lDataSet2 = $lRptVar->DataSets->Find('cdsDocument');
	$lDataSetCO = $lRptVar->DataSets->Find('cdsCompany');

    if ($lDataSet->RecordCount > 0) {
		echo "Header"."<br>";	
		SetGrid($lDataSetHdr);
						
		echo "Main Data"."<br>";
		SetGrid($lDataSet);
		
		echo "Detail Invoice"."<br>";
		SetGrid($lDataSet2);

		echo "Company Information"."<br>";
		SetGrid($lDataSetCO);

	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
		echo "<br>";
        echo date("d M Y h:i:s A")." - Done";	
    }
    finally
    {
        #$ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get AR Aging"/> 
    </form> 
</body>
</html>

Get Description3

Get Description 3 Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 30 Aug 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
       # $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function GetData(){
	global $ComServer;
	
    $lSQL = "SELECT Description3, Picture FROM ST_ITEM 
	         WHERE Code='ANT' ";
	
	$lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
		$lDataSet->First();
		
		$rtf = $lDataSet->FindField('Description3')->AsString();
		
        echo $rtf;		
		echo "<br>== <br>";
		echo "<br>Result after RTF: <br>";
		$txt = $ComServer->Utility->RichTextToPlainText($rtf);
		echo "<TEXTAREA rows=10 cols=80 id='edResult1' >".$txt. "</TEXTAREA>";
		echo "<br>== <br>";
		echo "的第一 🐱";
	}else {
        echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
        echo date("d M Y h:i:s A") . " - Done";
    }
    finally
    {
        #$ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?>
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Data"/> 
    </form> 
</body>
</html>

AR_PM-Add, Edit & Delete

AR_PM-Add, Edit & Delete Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 24 Sep 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("AR_PM");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
	
    #Find OR Number
    $lDocNo = "--OR Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
	    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
        $lMain->FindField("Description")->AsString = "Payment for A/c - Edited";
		$lMain->FindField("DocAmt")->AsFloat = 550.00;

        #Knock Off IV  
        $V = array("IV", "--CS Test--");  #DocType, DocNo
		
		if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
			$lDetail->Edit();
        	$lDetail->FindField("KOAmt")->AsFloat = 550;
        	$lDetail->FindField("KnockOff")->AsString = "T";
        	$lDetail->Post();
		}		
	} else {
      echo "New Payment<br>";
	  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = $lDocNo;
	  $lMain->FindField("Code")->AsString = "300-C0001"; #Customer Account
	  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23"));  #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Payment for A/c";
      $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
      $lMain->FindField("ChequeNumber")->AsString = "";
      $lMain->FindField("BankCharge")->AsFloat = 0;
      $lMain->FindField("DocAmt")->AsFloat = 200.00;
      $lMain->FindField("Cancelled")->AsString = "F";
	

      #Knock Off IV  
      $V = array("IV", "--CS Test--");  #DocType, DocNo
	  	
	  if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
	  	$lDetail->Edit();
	  	$lDetail->FindField("KOAmt")->AsFloat = 200.0;
	  	$lDetail->FindField("KnockOff")->AsString = "T";
	  	$lDetail->Post();
	  }	
	  	  
	}
    $BizObject->Save();
	echo "Save with DocNo ".$lMain->FindField("DocNo")->AsString."<br>";
	echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();	
}

function DelData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("AR_PM");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
	
    #Find PV Number
    $lDocNo = "--OR Test--";
    $lDocKey = $BizObject->FindKeyByRef("DocNo", $lDocNo);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Delete();
		echo date("d M Y h:i:s A")." - Record deleted<br>";
	} else {
		echo date("d M Y h:i:s A")." - Document Not Found<br>";
	}		
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
		echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Add & Edit AR PM"/> 
        <input type="submit" name="BtnDel"
                value="Delete AR PM"/>				
    </form> 
</body>
</html>

Customer.Statement.RO

Customer.Statement.RO Script
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/Grid.css" />
</head>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 28 Oct 2024<br>";


$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function SetGrid($DataSet){
	echo "<table>";
	echo "<tr>";	
    $DataSet->First();
	$fc = $DataSet->Fields->Count-1;
	for ($x = 0; $x <= $fc; $x++) {
		#Insert Header
		echo "<td>".$DataSet->Fields->Items($x)->FieldName()."</td>"; 
	}
	echo "</tr>";
		
	#Looping Dataset
	while (! $DataSet->Eof()){
		echo "<tr>";
	    for ($x = 0; $x <= $fc; $x++) {
			$lFN = $DataSet->Fields->Items($x)->FieldName();
		    echo "<td>".$DataSet->FindField($lFN)->AsString()."</td>"; 
	    }
	    echo "</tr>";
		$DataSet->Next();
	}
    echo "</table>"."<br>";		
}

function GetData(){
	global $ComServer;
	
    $lSQL = '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>
	         <FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>
             <FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>
             <FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>
             </FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>
             <ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>
             <ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>
             <ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>
             <ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>
             <ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>
             <ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>
             </ROWDATA></DATAPACKET>';
	
	$lRptVar = $ComServer->RptObjects->Find('Customer.Statement.RO');
#	$lRptVar->Params->Find('AgentData')->AsBlob               = ; #Not use if AllAgent is True
    $lRptVar->Params->Find('AgingData')->AsString           = $lSQL;
    $lRptVar->Params->Find('AgingOn')->AsString             = 'I'; #Fixed
    $lRptVar->Params->Find('AllAgent')->AsBoolean           = True;
    $lRptVar->Params->Find('AllArea')->AsBoolean            = True;
    $lRptVar->Params->Find('AllCompany')->AsBoolean         = True;
    $lRptVar->Params->Find('AllCompanyCategory')->AsBoolean = True;
    $lRptVar->Params->Find('AllControlAccount')->AsBoolean  = True;
    $lRptVar->Params->Find('AllCurrency')->AsBoolean        = True;
    $lRptVar->Params->Find('AllDocProject')->AsBoolean      = True;
#    $lRptVar->Params->Find('AreaData')->AsBlob            = ; #Not use if AllArea is True
#    $lRptVar->Params->Find('CompanyCategoryData')->AsBlob = ; #Not use if AllCompanyCategory is True
#    $lRptVar->Params->Find('CompanyData')->AsBlob         = ; #Not use if AllCompany is True
#    $lRptVar->Params->Find('ControlAccountData')->AsBlob  = ; #Not use if AllControlAccount is True
#    $lRptVar->Params->Find('CurrencyData')->AsBlob        = ; #Not use if AllCurrency is True
#    $lRptVar->Params->Find('DocProjectData')->AsBlob      = ; #Not use if AllDocProject is True
    $lRptVar->Params->Find('DateFrom')->AsDate              = '01 Sep 2024';
	$lRptVar->Params->Find('DateTo')->AsDate                = '30 Sep 2024';
	$lRptVar->Params->Find('StatementDate')->AsDate         = '30 Sep 2024'; # Norm same as DateTo
	$lRptVar->Params->Find('SelectDate')->AsBoolean         = True;
    $lRptVar->Params->Find('IncludeZeroBalance')->AsBoolean = False;
    $lRptVar->Params->Find('SortBy')->AsString              = 'CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount';
    $lRptVar->Params->Find('StatementType')->AsString       = 'O'; #O := Open Item, B := B/F
    
	
	$lRptVar->CalculateReport();
	$lDataSet = $lRptVar->DataSets->Find('cdsMain');
	$lDataSet2 = $lRptVar->DataSets->Find('cdsDocument');
	$lDataSetCO = $lRptVar->DataSets->Find('cdsCompany');

    if ($lDataSet->RecordCount > 0) {						
		echo "Main Data"."<br>";
		SetGrid($lDataSet);
		
		echo "Detail Invoice"."<br>";
		SetGrid($lDataSet2);

		echo "Company Information"."<br>";
		SetGrid($lDataSetCO);

	}else {
    echo "Record Not Found";
    }
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
		echo "<br>";
        echo date("d M Y h:i:s A")." - Done";	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get Data"/> 
    </form> 
</body>
</html>

AP_SP-Add, Edit & Delete

AP_SP-Add, Edit & Delete Script
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php  
echo "Updated 16 Nov 2024<br>";
$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        $ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\\eStream\\SQLAccounting\\Share\\Default.DCF",  #DCF file
                      "ACC-0024.FDB"); #Database Name
    
}

function PostData(){
	global $ComServer;
	
    $BizObject = $ComServer->BizObjects->Find("AP_SP");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
    $lDetail = $BizObject->DataSets->Find("cdsKnockOff"); #lDetail contains detail data
	
    #Find PV Number
    $lDocNo = "--PV Test--";
	$lCode = "400-C0001";
	$V = array($lDocNo, $lCode);  #DocNo, Supplier Code
    $lDocKey = $BizObject->FindKeyByRef("DocNo;Code", $V);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Edit();
        $lMain->Edit();
	    $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
        $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
        $lMain->FindField("Description")->AsString = "Payment for A/c - Edited";
		$lMain->FindField("DocAmt")->AsFloat = 550.00;

        #Knock Off IV  
        $V = array("PI", "--PI Test--");  #DocType, DocNo
		
		if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
			$lDetail->Edit();
        	$lDetail->FindField("KOAmt")->AsFloat = 550;
        	$lDetail->FindField("KnockOff")->AsString = "T";
        	$lDetail->Post();
		}		
	} else {
      echo "New Payment<br>";
	  $BizObject->New();
      $lMain->FindField("DocKey")->value = -1;
      $lMain->FindField("DocNo")->AsString = $lDocNo;
	  $lMain->FindField("Code")->AsString = $lCode; #Supplier Account
	  $lMain->FindField("DocDate")->value = date("d-m-Y", strtotime("2024-09-23")); #YYYY-MM-DD
      $lMain->FindField("PostDate")->value = date("d-m-Y", strtotime("2024-09-23"));  #YYYY-MM-DD
      $lMain->FindField("Description")->AsString = "Payment for A/c";
      $lMain->FindField("PaymentMethod")->AsString = "320-000"; #Bank or Cash Account
      $lMain->FindField("ChequeNumber")->AsString = "";
      $lMain->FindField("BankCharge")->AsFloat = 0;
      $lMain->FindField("DocAmt")->AsFloat = 200.00;
      $lMain->FindField("Cancelled")->AsString = "F";
	

      #Knock Off IV  
      $V = array("PI", "--PI Test--");  #DocType, DocNo
	  	
	  if ($lDetail->Locate("DocType;DocNo", $V, False, False)) {
	  	$lDetail->Edit();
	  	$lDetail->FindField("KOAmt")->AsFloat = 200.0;
	  	$lDetail->FindField("KnockOff")->AsString = "T";
	  	$lDetail->Post();
	  }	
	  	  
	}
    $BizObject->Save();
	echo "Save with DocNo ".$lMain->FindField("DocNo")->AsString."<br>";
	echo date("d M Y h:i:s A")." - Posting Done<br>";
    $BizObject->Close();	
}

function DelData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("AP_SP");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); #lMain contains master data
	
    #Find PV Number
    $lDocNo = "--PV Test--";
	$lCode = "400-C0001";
	$V = array($lDocNo, $lCode);  #DocNo, Supplier Code
    $lDocKey = $BizObject->FindKeyByRef("DocNo;Code", $V);
	
	if ($lDocKey != null){
        echo "Dockey = ".$lDocKey."<br>";
		$BizObject->Params->Find("DocKey")->AsString = $lDocKey;
		$BizObject->Open();
        $BizObject->Delete();
		echo date("d M Y h:i:s A")." - Record deleted<br>";
	} else {
		echo date("d M Y h:i:s A")." - Document Not Found<br>";
	}		
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Posting<br>";
        PostData();
		echo date("d M Y h:i:s A")." - Done<br>";
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

if (isset($_POST['BtnDel']))
{
    try
    {
        CheckLogin();
        echo date("d M Y h:i:s A")." - Begin Delete<br>";
        DelData();	
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Add & Edit AP SP"/> 
        <input type="submit" name="BtnDel"
                value="Delete AP SP"/>				
    </form> 
</body>
</html>


Node JS

Module Require in Node JS
- Winax (Mandatory) -> npm install winax

Common

  • Common.js file for example code
Common Function
/* Updated 31 Jul 2023 */
var winax = require('C:\\node_js\\node_modules\\winax'); /* Path where you install winax */
var cp = require('child_process'); 

exports.KillApp = function KillApp(){
	cp.exec('start cmd.exe /C "taskkill /IM "SQLACC.exe" /F"');
}

exports.CreateSQLAccServer = function CreateSQLAccServer() {  
  var ComServer;
  ComServer = new winax.Object('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {           /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', /* UserName, Password */
	/* 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', */
	'D:\\Happy\\DB\\DEFAULT.DCF', /* DCF File */
	'ACC-0024.FDB'); /* FDB Name */
  }
  return ComServer;
}

exports.ShowResult = function ShowResult(ADataset){
  var fc, fn, fv, lresult;
  ADataset.First;
  while (!ADataset.Eof){
	  fc = ADataset.Fields.Count;
	  for (let i = 0; i < fc; i++) {
		  fn = ADataset.Fields.Items(i).FieldName;
          fv = ADataset.FindField(fn).AsString;
		  lresult =  "Index : "+ i + " FieldName : " + fn + " Value : " + fv;
		  console.log(lresult);
      }
	  console.log("====");
      ADataset.Next();	  
  }
}

exports.ShowMsg = function ShowMsgShowMsg(AMsg){
    try {
        var WSH = new winax.Object('WScript.Shell');
        WSH.popup(AMsg);
    } catch (e) {
        console.log(e);
    }	
}

Get Company Profile

Get Company Profile
/* Updated 22 Jul 2023 */
var Common = require('./Common'); 
var ComServer, lDataSet;

function GetData() {
  var lSQL;
  lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, ";
  lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, ";
  lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);  
  
  Common.ShowResult(lDataSet);
}

try{
	ComServer = Common.CreateSQLAccServer();
	GetData();
	ComServer.Logout();
} catch(e){
	console.error(e.message)
} finally {
	Common.KillApp();
}

Complete Post

Complete Post
/* Updated 22 Jul 2023 
This will doing following posting
01. Cash Sales
02. Sales Credit Note
03. Customer Payment With Knock off
04. Edit Credit Note Posted in Step 02 & Knock Off
05. Customer Refund to Knock off Credit Note
*/
var Common = require('./Common'); 
var ComServer;

function PostDataCS() {
  var BizObject, lMain, lDetail;
  BizObject = ComServer.BizObjects.Find('SL_CS') ;

  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */ 

  /*Begin Looping yr data*/
  /*Insert Data - Master*/ 
  BizObject.New();
  lMain.FindField('DocNo').AsString       = "--CS Test--";
  lMain.FindField('DocDate').value        = "20/12/2022";
  lMain.FindField('PostDate').value       = "20/12/2022";
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
  lMain.FindField('CompanyName').AsString = "Cash Sales"
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
  lMain.FindField('Address2').AsString    = ""; /*Optional*/
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
  lMain.FindField('Description').AsString = "Sales";
  
  /*Insert Data - Detail*/
  /*For Tax Inclusive = True with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 1;
  lDetail.FindField('Account').AsString     = "500-000"; /*Sales Account*/
  lDetail.FindField('Description').AsString = "Sales Item A";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString         = "SV";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 435;
  lDetail.FindField('Amount').AsFloat       = 410.37; /*Exclding Tax Amt*/
  lDetail.FindField('TaxAmt').AsFloat       = 24.63;
  
  lDetail.DisableControls();
  lDetail.FindField('TaxInclusive').value   = 1;
  lDetail.EnableControls();
  
  lDetail.Post();
  
  /*For Tax Inclusive = False with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 2;
  lDetail.FindField('Account').AsString     = "500-000";
  lDetail.FindField('Description').AsString = "Sales Item B";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString         = "SV";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 94.43;
  lDetail.FindField('Amount').AsFloat       = 94.43;
  lDetail.FindField('TaxAmt').AsFloat       = 5.66;
  lDetail.Post();  
  
  /*For With Item Code*/
  lDetail.Append();
  lDetail.FindField('Seq').value            = 3;
  lDetail.FindField('ItemCode').AsString    = "ANT";
  lDetail.FindField('Description').AsString = "Sales Item B";
  /*lDetail.FindField('Account').AsString     = "500-000"; If you wanted override the Sales Account Code*/
  lDetail.FindField('Qty').AsFloat          = 2;
  lDetail.FindField('UOM').AsString         = "UNIT";
  /*lDetail.FindField('DISC').AsString        = "5%+3"; Optional (eg 5% plus 3 Discount)*/
  lDetail.FindField('Tax').AsString         = "SV";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat       = 200;
  lDetail.FindField('TaxAmt').AsFloat       = 12;
  lDetail.Post();
  
  /*Save Document*/
  BizObject.Save();
  BizObject.Close();  
}

function PostDataPM() {
  var BizObject, lMain, lDetail, v;
    
  BizObject = ComServer.BizObjects.Find('AR_PM') ;

  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
  
  BizObject.New();
  
  lMain.FindField('DocNo').AsString         = "--PM Test--";
  lMain.FindField('Code').AsString          = "300-C0001";
  lMain.FindField('DocDate').value          = "20/12/2022";
  lMain.FindField('PostDate').value         = "20/12/2022";
  lMain.FindField('Description').AsString   = "Payment for A/";
  lMain.FindField('PaymentMethod').AsString = "320-000"; /*Bank or Cash Account*/
  lMain.FindField('ChequeNumber').AsString  = "";
  lMain.FindField('BankCharge').AsFloat     = 0;
  lMain.FindField('DocAmt').AsFloat         = 200.00;
  lMain.FindField('Cancelled').AsString     = "F";
  
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType IV or DN*/
  v.SetItem(1, '--CS Test--'); /*Knock Off DocNo*/ 
  
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
      lDetail.Edit();
      lDetail.FindField('KOAmt').AsFloat     = "147.09";	/*Partial Knock Off*/	  
      lDetail.FindField('KnockOff').AsString = 'T';
      lDetail.Post();
	  }
    /* Save document */  
  BizObject.Save();
  BizObject.Close();
}

function PostDataCN() {
  var BizObject, lMain, lDetail;
  BizObject = ComServer.BizObjects.Find('SL_CN') ;

  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */ 

  /*Begin Looping yr data*/
  /*Insert Data - Master*/ 
  BizObject.New();
  lMain.FindField('DocNo').AsString       = "--CN Test--";
  lMain.FindField('DocDate').value        = "21/12/2022";
  lMain.FindField('PostDate').value       = "21/12/2022";
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
  lMain.FindField('CompanyName').AsString = "Cash Sales"
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
  lMain.FindField('Address2').AsString    = ""; /*Optional*/
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
  lMain.FindField('Description').AsString = "Sales Returned";
  
  /*Insert Data - Detail*/  
  /*For With Item Code*/
  lDetail.Append();
  lDetail.FindField('Seq').value             = 1;
  lDetail.FindField('ItemCode').AsString     = "ANT";
  lDetail.FindField('Description').AsString  = "Sales Item B";
  lDetail.FindField('Description2').AsString = "Product Spoil"; /*Reason*/
  lDetail.FindField('Remark1').AsString      = "--IV Test--"; /*Invoice No*/
  lDetail.FindField('Remark2').AsString      = "20 Dec 2022"; /*Invoide Date*/
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('UOM').AsString         = "UNIT";
  lDetail.FindField('Tax').AsString         = "SV";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat       = 100;
  lDetail.FindField('TaxAmt').AsFloat       = 6;
  lDetail.Post();
  
  /*Save Document*/
  BizObject.Save();
  BizObject.Close();  
}

function PostKnockIVCN() {
  var BizObject, lMain, lDetail, v, lDocNo, lDocKey;
    
  BizObject = ComServer.BizObjects.Find('AR_CN') ;

  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
  
  /* Find CN Number */
  lDocNo = "--CN Test--"
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
  BizObject.Params.Find('DocKey').Value = lDocKey;
  
  if (lDocKey != null) {
	  BizObject.Open();
	  BizObject.Edit();
	  lMain.Edit();
	  
	  v = ComServer.CreateOleVariantArray(2);
	  v.SetItem(0, 'IV'); /*Knock Off DocType IV or DN*/
	  v.SetItem(1, '--CS Test--'); /*Knock Off DocNo*/ 
  
	  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
		  lDetail.Edit();
	      lDetail.FindField('KOAmt').AsFloat     = "100";	/*Partial Knock Off*/	  
	      lDetail.FindField('KnockOff').AsString = 'T';
	      lDetail.Post();
	  }
    /* Save document */  
	  BizObject.Save();
	  BizObject.Close();
  }
}

function PostDataCF() {
  var BizObject, lMain, lDetail, v;
    
  BizObject = ComServer.BizObjects.Find('AR_CF') ;

  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsKnockOff'); /*lDetail contains detail data */
  
  BizObject.New();
  
  lMain.FindField('DocNo').AsString         = "--CF Test--";
  lMain.FindField('Code').AsString          = "300-C0001";
  lMain.FindField('DocDate').value          = "24/12/2022";
  lMain.FindField('PostDate').value         = "24/12/2022";
  lMain.FindField('Description').AsString   = "Payment for A/";
  lMain.FindField('PaymentMethod').AsString = "320-000"; /*Bank or Cash Account*/
  lMain.FindField('ChequeNumber').AsString  = "";
  lMain.FindField('BankCharge').AsFloat     = 0;
  lMain.FindField('DocAmt').AsFloat         = 6.00;
  lMain.FindField('Cancelled').AsString     = "F";
  
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'CN'); /*Knock Off DocType*/
  v.SetItem(1, '--CN Test--'); /*Knock Off DocNo*/ 
  
  if (lDetail.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){
      lDetail.Edit();
      lDetail.FindField('KOAmt').AsFloat     = "4";	/*Partial Knock Off*/	  
      lDetail.FindField('KnockOff').AsString = 'T';
      lDetail.Post();
	  }
    /* Save document */  
  BizObject.Save();
  BizObject.Close();
}

try{
	ComServer = Common.CreateSQLAccServer();
	console.log("Posting Cash Sales");
    PostDataCS();
    console.log("Posting Payment");
    PostDataPM();
    console.log("Posting Sales CN");
    PostDataCN();
    console.log("Posting Knock Off CN");
    PostKnockIVCN();
    console.log("Posting Customer Refund");
    PostDataCF();
    console.log("Done");
	ComServer.Logout();
} catch(e){
	console.error(e.message)
} finally {
	Common.KillApp();
}

Get Picture & Description3(Rich Text)

Get Picture & Description3(Rich Text) Script
/* Updated 31 Jul 2023 */
var Common = require('./Common'); 
var ComServer, lDataSet;
const fs = require('fs');

function saveImage(filename, data){
  var myBuffer = new Buffer.alloc(data.length);
  for (var i = 0; i < data.length; i++) {
      myBuffer[i] = data[i];
  }
  fs.writeFile(filename, myBuffer, function(err) {
      if(err) {
          console.log(err);
      } else {
          console.log("The Image file was saved!");
      }
  });
}

function ExpFile(AFName, AData){
	const FN = new console.Console(fs.createWriteStream(AFName));
    FN.log(AData);
}

function GetData() {
  var lSQL, txt, rtf;
  lSQL = "SELECT Description3, Picture FROM ST_ITEM ";
  lSQL = lSQL + "WHERE Code='ANT' ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);  
  
  lDataSet.First;
  rtf = lDataSet.FindField('Description3').AsString;
  console.log(rtf);
  
  ExpFile('./output.rtf', rtf);
  
  txt = ComServer.Utility.RichTextToPlainText(rtf);
  Common.ShowMsg(txt);
  /* console.log(txt); <= Not support Unicode */
  
  ExpFile('./output.txt', txt);  
  console.log('Done Export');
  
  saveImage("./Pic.jpg", lDataSet.FindField('Picture').Value);
}

try{
	ComServer = Common.CreateSQLAccServer();
	GetData();
	ComServer.Logout();
} catch(e){
	console.error(e.message)
} finally {
	Common.KillApp();
}

Get Stock Qty Balance

Get Stock Qty Balance Script
/* Updated 18 Jan 2024 */
var Common = require('./Common'); 
var ComServer;

function GetListData() {
  var lSQL, lDataSet;
  lSQL = "SELECT  ItemCode, Location, Batch, Sum(Qty) Qty  FROM ST_TR   ";
  lSQL = lSQL + "WHERE PostDate<='31 Dec 2019' ";
  lSQL = lSQL + "AND ITEMCODE ='ANT' ";
  lSQL = lSQL + "GROUP BY ItemCode, Location, Batch ";
  
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);
  
  Common.ShowResult(lDataSet);
}

try{
	ComServer = Common.CreateSQLAccServer();
	GetListData();
	ComServer.Logout();
} catch(e){
	console.error(e.message)
} finally {
	Common.KillApp();
}

SO to DO

SO to DO Script
/*Updated 26 Apr 2024*/
var Common = require('./Common'); 
var ComServer;

function PostData() {
  var BizObject, lMain, lDetail, lSQL, lDataSet;
  
  lSQL = "SELECT Dockey, DocNo,Code, CompanyName, DocProject, Seq, DtlKey, ItemCode, Description, Qty, UOM, UnitPrice, Disc, Amount, DtlProject, ";
  lSQL = lSQL + "Tax, TaxRate, TaxInclusive, TaxAmt, COALESCE(Sum(XFQty),0) XFQty, COALESCE((Qty-Sum(XFQty)), Qty) OSQty FROM ( ";
  lSQL = lSQL + "SELECT A.Dockey, A.DocNo, A.Code, A.CompanyName, A.Project DocProject, ";
  lSQL = lSQL + "B.DtlKey, B.Seq, B.ItemCode, B.Description, B.Qty, B.UOM, B.UnitPrice, B.Disc, B.Amount, ";
  lSQL = lSQL + "B.Tax, B.TaxRate, B.TaxInclusive, B.TaxAmt, B.Project DtlProject, C.Qty XFQty FROM SL_SO A ";
  lSQL = lSQL + "INNER JOIN SL_SODTL B ON (A.DOCKEY=B.DOCKEY) ";
  lSQL = lSQL + "LEFT JOIN ST_XTRANS C ON (A.DOCKEY=C.FROMDOCKEY AND B.DTLKEY=C.FROMDTLKEY ";
  lSQL = lSQL + "                          AND C.FROMDOCTYPE='SO') ";
  lSQL = lSQL + "WHERE A.DOCNO='SO-00041') ";
  lSQL = lSQL + "GROUP BY Dockey, DocNo, Code, CompanyName, DocProject, Seq, Dtlkey, ItemCode, Description, Qty, UOM, UnitPrice, Disc, ";
  lSQL = lSQL +" Amount, DtlProject, Tax, TaxRate, TaxInclusive, TaxAmt ";
  lSQL = lSQL + "HAVING COALESCE((Qty-Sum(XFQty)), Qty) >0 ";
  
  lDataSet = ComServer.DBManager.NewDataSet(lSQL); 
  
  if (lDataSet.RecordCount > 0) {
	  BizObject = ComServer.BizObjects.Find('SL_DO') ;	  
	  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
	  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */	  

	  BizObject.New();
	  lMain.FindField('DocNo').AsString       = "<<New>>";
      lMain.FindField('DocDate').value        = "26/04/2024";
      lMain.FindField('PostDate').value       = "26/04/2024";
      lMain.FindField('Code').AsString        = lDataSet.FindField('Code').AsString; /*Customer Account*/
      lMain.FindField('Description').AsString = "Post from 3rd Party";
	  
	  lDataSet.First;
	  while (!lDataSet.Eof){  
		  lDetail.Append();
          lDetail.FindField('Seq').value            = lDataSet.FindField('Seq').Value;
          lDetail.FindField('ItemCode').AsString    = lDataSet.FindField('ItemCode').AsString;
          lDetail.FindField('Description').AsString = lDataSet.FindField('Description').AsString;
          lDetail.FindField('Qty').AsFloat          = lDataSet.FindField('OSQty').AsFloat;/*Transfer all balance Qty*/
          lDetail.FindField('UOM').AsString         = lDataSet.FindField('UOM').AsString;
          lDetail.FindField('DISC').value           = lDataSet.FindField('DISC').AsString;
          lDetail.FindField('Tax').value            = lDataSet.FindField('Tax').AsString;
          lDetail.FindField('TaxRate').value        = lDataSet.FindField('TaxRate').AsString;
          lDetail.FindField('TaxInclusive').value   = lDataSet.FindField('TaxInclusive').value;
          lDetail.FindField('UnitPrice').AsFloat    = lDataSet.FindField('UnitPrice').AsFloat ;
          lDetail.FindField('Amount').AsFloat       = lDataSet.FindField('Amount').AsFloat;
          lDetail.FindField('TaxAmt').AsFloat       = lDataSet.FindField('TaxAmt').AsFloat;
		  lDetail.FindField('FromDocType').AsString = "SO"; /*From Document Type*/
          lDetail.FindField('FromDockey').AsFloat   = lDataSet.FindField('Dockey').AsFloat;
          lDetail.FindField('FromDtlkey').AsFloat   = lDataSet.FindField('DtlKey').AsFloat;
          lDetail.Post();
          lDataSet.Next();
	  }
      /*Save Document*/
      BizObject.Save();
	  BizObject.Close(); 
  } else
	  console.log("Record Not Found");
}



try{
	ComServer = Common.CreateSQLAccServer();
	console.log("Posting SO to DO");
    PostData();
    console.log("Done");
	ComServer.Logout();
} catch(e){
	console.error(e.message)
} finally {
	Common.KillApp();
}


VB Script

Get Company Profile

Company Profile Script
'Copy below script & paste to notepad & name it as eg Common.Agent.RO.vbs
Call GetCoInfo
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetCoInfo
Dim ComServer, RptObject, lDataSet
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.Agent.RO") 
 
 
  'Step 3: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsProfile")

  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
	MsgBox "Company Name : " & lDataSet.FindField("CompanyName").AsString 
	
	MsgBox "Remark : " & lDataSet.FindField("Remark").AsString

	MsgBox "ROC No : " & lDataSet.FindField("RegisterNo").AsString

	MsgBox "GST No : " & lDataSet.FindField("GSTNo").AsString
	
	MsgBox "Address 1 : " & lDataSet.FindField("Address1").AsString
	
	MsgBox "Address 2 : " & lDataSet.FindField("Address2").AsString
	
	MsgBox "Address 3 : " & lDataSet.FindField("Address3").AsString
	
	MsgBox "Address 4 : " & lDataSet.FindField("Address4").AsString
	
	MsgBox "Attention : " & lDataSet.FindField("Attention").AsString
	
	MsgBox "Phone : " & lDataSet.FindField("Phone1").AsString
	
	MsgBox "Fax : " & lDataSet.FindField("Fax1").AsString
	
	MsgBox "E-Mail : " & lDataSet.FindField("EMail").AsString
	lDataSet.Next
  Wend

  'Step 6 : Logout after done  
  ComServer.Logout    
End Function

Complete Post

SL_CS, AR_PM, SL_CN & AR_CN Script
'Updated 13 Sep 2018
'Copy below script & paste to notepad & name it as eg SL_CS.vbs
'This will doing following posting
'01. Cash Sales
'02. Sales Credit Note
'03. Customer Payment With Knock off
'04. Edit Credit Note Posted in Step 02 & Knock Off
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_CS") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--IV Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
  lMain.FindField("CompanyName").AsString = "Cash Sales"
  lMain.FindField("Address1").AsString    = "" 'Optional
  lMain.FindField("Address2").AsString    = "" 'Optional
  lMain.FindField("Address3").AsString    = "" 'Optional
  lMain.FindField("Address4").AsString    = "" 'Optional
  lMain.FindField("Phone1").AsString      = "" 'Optional
  lMain.FindField("Description").AsString = "Sales"
    
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("Seq").value            = 1
  lDetail.FindField("Account").AsString     = "500-000" 'Sales Account
  lDetail.FindField("Description").AsString = "Sales Item A"
  lDetail.FindField("Qty").AsFloat          = 1
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString     = "6%"
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 435
  lDetail.FindField("Amount").AsFloat       = 410.37 'Exclding GST Amt
  lDetail.FindField("TaxAmt").AsFloat       = 24.63
  
  lDetail.DisableControls
  lDetail.FindField("TaxInclusive").value   = 1
  lDetail.EnableControls
  
  lDetail.Post
  
  'For Tax Inclusive = False with override Tax Amount
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("Seq").value            = 2
  lDetail.FindField("Account").AsString     = "500-000"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("Qty").AsFloat          = 1
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString     = "6%"
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 94.43
  lDetail.FindField("Amount").AsFloat       = 94.43
  lDetail.FindField("TaxAmt").AsFloat       = 5.66
  lDetail.Post

  'For With Item Code
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("Seq").value            = 3
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Sales Item B"
  'lDetail.FindField("Account").AsString     = "500-000" 'If you wanted override the Sales Account Code
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UOM").AsString         = "UNIT"
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString     = "6%"
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100  
  lDetail.FindField("Amount").AsFloat       = 200
  lDetail.FindField("TaxAmt").AsFloat       = 12
  lDetail.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  
  'Step 7: Payment
  Call InsertARPM
  
  'Step 8: Credit Note
  Call InsertSLCN
  'End Looping yr data

  'Step 9 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Done"  
End Function

Function InsertARPM
Dim BizObject, lMain, lDetail, lDate, v(1)
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_PM") 
 
  'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")   'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsKnockOff") 'lDetail contains detail data  
  
  'Step 4 : Posting
    lDate = CDate("January 23, 2017")
    BizObject.New
    lMain.FindField("DOCKEY").Value           = -1
    lMain.FindField("DocNo").AsString         = "--PM Test--" 
    lMain.FindField("CODE").AsString          = "300-C0001" 'Customer Account
    lMain.FindField("DocDate").Value          = lDate
    lMain.FindField("PostDate").Value         = lDate
    lMain.FindField("Description").AsString   = "Payment for A/c"
    lMain.FindField("PaymentMethod").AsString = "320-000" 'Bank or Cash Account
	lMain.FindField("ChequeNumber").AsString  = ""
	lMain.FindField("BankCharge").AsFloat     = 0
    lMain.FindField("DocAmt").AsFloat         = 200.00
    lMain.FindField("Cancelled").AsString     = "F"
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
	
    if (lDetail.Locate("DocType;DocNo", v, false, false)) then
      lDetail.Edit
      lDetail.FindField("KOAmt").AsFloat     = 147.09 'Partial Knock off
      lDetail.FindField("KnockOff").AsString = "T"
      lDetail.Post
	End IF  
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
End Function

Function InsertSLCN
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_CN") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 24, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--CN Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Code").AsString        = "300-C0001"
  lMain.FindField("CompanyName").AsString = "Cash Sales"
  lMain.FindField("Address1").AsString    = ""
  lMain.FindField("Address2").AsString    = ""
  lMain.FindField("Address3").AsString    = ""
  lMain.FindField("Address4").AsString    = ""
  lMain.FindField("Phone1").AsString      = ""  
  lMain.FindField("Description").AsString = "Sales Returned"
    
  'For With Item Code
  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString     = "ANT"
  lDetail.FindField("Description").AsString  = "Sales Item B"
  lDetail.FindField("Description2").AsString = "Product Spoil" 'Reason
  lDetail.FindField("Remark1").AsString      = "--IV Test--"   'Invoice No
  lDetail.FindField("Remark2").AsString      = "01 Jan 2017"   'Invoice Date
  lDetail.FindField("Qty").AsFloat           = 1
  lDetail.FindField("Tax").AsString          = "SR"
  lDetail.FindField("TaxRate").AsString      = "6%"
  lDetail.FindField("TaxInclusive").value    = 0
  lDetail.FindField("UnitPrice").AsFloat     = 100
  lDetail.FindField("Amount").AsFloat        = 100
  lDetail.FindField("TaxAmt").AsFloat        = 6  
  lDetail.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  
  'Step 7: Knock Off Invoice
  Call KnockIV
End Function

Function KnockIV
Dim BizObject, lMain, lDetail, lDate, v(1)
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_CN") 
 
  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet") 'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsKnockOff") 'lDetail contains Knock off data  
  
  'Step 4 : Find CN Number
  lDocNo = "--CN Test--"
  lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  BizObject.Params.Find("DocKey").Value = lDocKey
  
  If not IsNull(lDocKey) Then 
    BizObject.Open
    BizObject.Edit
    lMain.Edit
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
	
    if (lDetail.Locate("DocType;DocNo", v, false, false)) then
      lDetail.Edit
      lDetail.FindField("KOAmt").AsFloat     = 106 'Fully Knock off
      lDetail.FindField("KnockOff").AsString = "T"
      lDetail.Post
	End IF    
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
  END IF	
End Function

AR_IV

AR_IV Script
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
Call InsertARIV

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function InsertARIV
Dim ComServer, BizObject, lDataSet, lDataSet2, lDate

  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF

  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_IV") 

  'Step 3: Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2016")
  BizObject.New
  lMainDataSet.FindField("DocKey").value = -1
  lMainDataSet.FindField("DocNo").value = "--IV Test--"
  lMainDataSet.FindField("DocDate").value = lDate
  lMainDataSet.FindField("PostDate").value = lDate
  lMainDataSet.FindField("Code").value = "300-A0003"
  lMainDataSet.FindField("Description").value = "Sales"
    
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item A"
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
  
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value =  1
  lDetailDataSet.EnableControls
  
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post
  
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  MsgBox "Done"
End Function

AR_IV-Edit

AR_IV Edit Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
Call CheckLogin
Call GetData
Call PostData

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM AR_IV "
  lSQL = lSQL & "WHERE DocNo='IV-00002' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function PostData
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_IV") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Doc Number
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  
  
    BizObject.Open
    BizObject.Edit
    lMain.Edit
	lMain.FindField("Description").AsString = "Sales - Edited" 
  
  'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
      lDetail.First
	  lDetail.Delete
    Wend
  'Step 6: Append Detail
  lDetail.Append  
  lDetail.FindField("DtlKey").value = -1
  lDetail.FindField("Account").value = "500-000"
  lDetail.FindField("Description").value =  "Sales Item A - Edited"
  lDetail.FindField("Tax").value =  "SR"
  lDetail.FindField("TaxRate").value =  "6%"
  lDetail.FindField("TaxInclusive").value =  0
  lDetail.FindField("Amount").value = 100
  lDetail.FindField("TaxAmt").value = 6
  
  lDetail.DisableControls
  lDetail.FindField("TaxInclusive").value =  1
  lDetail.EnableControls
  
  lDetail.FindField("Changed").value = "F"
  lDetail.Post
  
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
  
  'Step 8 : Logout after done  
    'ComServer.Logout  
    MsgBox "Done" 
	Else
	MsgBox "Record Not Found" 
  END IF 
End Function

AR_PM

AR_PM Script
'Copy below script & paste to notepad & name it as eg AR_PM.vbs
Call PostData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function PostData
Dim ComServer, BizObject, lIVNo, v(1), lDate
 
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF
 
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_PM") 
 
  'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsKnockOff") 'lDetailDataSet contains detail data  
  
  'Step 4 : Posting
    lDate = CDate("January 23, 2017")
    BizObject.New
    lMain.FindField("DOCKEY").Value           = -1
    lMain.FindField("DocNo").AsString         = "--PM Test--" 
    lMain.FindField("CODE").AsString          = "300-C0001"
    lMain.FindField("DocDate").Value          = lDate
    lMain.FindField("PostDate").Value         = lDate
    lMain.FindField("Description").AsString   = "Payment for A/c"
    lMain.FindField("PaymentMethod").AsString = "310-000"
    lMain.FindField("DocAmt").AsFloat         = 65.57
    lMain.FindField("Cancelled").AsString     = "F"
  'Step 5: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
	
    if (lDetailDataSet.Locate("DocType;DocNo", v, false, false)) then
      lDetailDataSet.Edit
      lDetailDataSet.FindField("KOAmt").value = 65.57
      lDetailDataSet.FindField("KnockOff").AsString = "T"
      lDetailDataSet.Post
	End IF  
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  'END IF
End Function

AR_PM-Edit

AR_PM Edit Script
'Copy below script & paste to notepad & name it as eg AR_IV.vbs
Call EditARPM
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function EditARPM
Dim ComServer, BizObject, lDataSet, lDataSet2, lDocKey, lDocNo, lIVNo, v(1)
 
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF
 
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_PM") 
 
  'Step 3: Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsKnockOff") 'lDetailDataSet contains detail data  
  
  'Step 4 : Find OR Number
  lDocNo = "OR-00022"
  lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  BizObject.Params.Find("DocKey").Value = lDocKey
  
  If not IsNull(lDocKey) Then 
    BizObject.Open
    BizObject.Edit
    lMainDataSet.Edit
	lMainDataSet.FindField("Description").AsString = "testing"
  'Step 5: Knock Off IV
    lIVNO = "IV-00006"
    v(0) = "IV"
    v(1) = lIVNO
	
    if (lDetailDataSet.Locate("DocType;DocNo", v, false, false)) then
      lDetailDataSet.Edit
      lDetailDataSet.FindField("KOAmt").value = 50.12
      lDetailDataSet.FindField("KnockOff").AsString = "T"
      lDetailDataSet.Post
	  MsgBox "yes"
	End IF  
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  END IF
End Function

Customer.RO

Customer.RO Report Object Script
'Copy below script & paste to notepad & name it as eg customer_ro.vbs
Call GetCustomerData

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function GetCustomerData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF

  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.RO") 

  'Step 3: Spool parameters
  RptObject.Params.Find("AllAgent").Value = true
  RptObject.Params.Find("AllArea").Value = true
  RptObject.Params.Find("AllCompany").Value = false
  RptObject.Params.Find("AllCompanyCategory").Value = true
  RptObject.Params.Find("AllCurrency").Value = true
  RptObject.Params.Find("AllTerms").Value = true
  RptObject.Params.Find("SelectDate").Value = true
  RptObject.Params.Find("PrintActive").Value = true
  RptObject.Params.Find("PrintInactive").Value = false
  RptObject.Params.Find("PrintPending").Value = false
  RptObject.Params.Find("PrintProspect").Value = false
  RptObject.Params.Find("PrintSuspend").Value = false
  lDateFrom = CDate("January 1, 2000")
  lDateTo = CDate("December 31, 2014")

  RptObject.Params.Find("DateFrom").Value = lDateFrom
  RptObject.Params.Find("DateTo").Value = lDateTo
  RptObject.Params.Find("CompanyData").Value = "300-A0003"
  
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsBranch")
  MsgBox "Count " & lDataSet.RecordCount

  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("Address1").AsString
	  lDataSet2.Next
    Wend
	lDataSet.Next
  Wend
End Function

Customer.Statement.RO

Customer.Statement.RO Report Object Script
'Copy below script & paste to notepad & name it as eg customer_statement_ro.vbs
Call GetCustStatementData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function GetCustStatementData
Const Quote = """"
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo, lAgeData
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF

  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.Statement.RO") 
 
  'Step 3: Spool parameters
  lAgeData = "<?xml version=" & Quote & "1.0" & Quote & " standalone=" & Quote & "yes" & Quote & "?>  <DATAPACKET Version=" & Quote & "2.0" & Quote & "><METADATA><FIELDS>" &_
       "<FIELD attrname=" & Quote & "ColumnNo" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "ColumnType" & Quote & " fieldtype=" & Quote & "string" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
       "<FIELD attrname=" & Quote & "Param1" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "Param2" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/>" &_
       "<FIELD attrname=" & Quote & "IsLocal" & Quote & " fieldtype=" & Quote & "boolean" & Quote & "/><FIELD attrname=" & Quote & "HeaderScript" & Quote & " fieldtype=" & Quote & "bin.hex" & Quote & " SUBTYPE=" & Quote & "Text" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
       "</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo=" & Quote & "0" & Quote & " ColumnType=" & Quote & "" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "1" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "2" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-1" & Quote & " Param2=" & Quote & "-1" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "3" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-2" & Quote & " Param2=" & Quote & "-2" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "4" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-3" & Quote & " Param2=" & Quote & "-3" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "5" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-4" & Quote & " Param2=" & Quote & "-4" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "6" & Quote & " ColumnType=" & Quote & "B" & Quote & " Param1=" & Quote & "-999999" & Quote & " Param2=" & Quote & "-5" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;" & Quote & "/>" &_
       "</ROWDATA></DATAPACKET>"
'  RptObject.Params.Find("AgentData").Value            =  'Not use if AllAgent is True
  RptObject.Params.Find("AgingData").Value            = lAgeData 'Fixed
  RptObject.Params.Find("AgingOn").Value              = "I" 'Fixed
  RptObject.Params.Find("AllAgent").Value             = true
  RptObject.Params.Find("AllArea").Value              = true
  RptObject.Params.Find("AllCompany").Value           = false
  RptObject.Params.Find("AllCompanyCategory").Value   = true
  RptObject.Params.Find("AllControlAccount").Value    = true
  RptObject.Params.Find("AllCurrency").Value          = true
  RptObject.Params.Find("AllDocProject").Value        = true
'  RptObject.Params.Find("AreaData").Value             =  'Not use if AllArea is True
'  RptObject.Params.Find("CompanyCategoryData").Value  =  'Not use if AllCompanyCategory is True
  RptObject.Params.Find("CompanyData").Value          = "300-A0001"& vbCRLF & "300-C0001" 'Filter by Customer Code 300-A0001 & 300-C0001
'  RptObject.Params.Find("ControlAccountData").Value   =  'Not use if AllControlAccount is True
'  RptObject.Params.Find("CurrencyData").Value         =  'Not use if AllCurrency is True
  lDateFrom = CDate("August 1, 2016")
  lDateTo = CDate("August 31, 2016")
  RptObject.Params.Find("DateFrom").Value             = lDateFrom
  RptObject.Params.Find("DateTo").Value               = lDateTo
'  RptObject.Params.Find("DocProjectData").Value       =  'Not use if AllDocProject is True
  RptObject.Params.Find("IncludeZeroBalance").Value   = false
  RptObject.Params.Find("SelectDate").Value           = true
  RptObject.Params.Find("SortBy").Value               = "CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount"
  RptObject.Params.Find("StatementDate").Value        = lDateTo ' Norm same as DateTo
  RptObject.Params.Find("StatementType").Value        = "O" 'O = Open Item, B = B/F
 
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocument")
  MsgBox "Count " & lDataSet.RecordCount

  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString & " " & lDataSet.FindField("Balance").AsString
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("DocNo").AsString
	  lDataSet2.Next
    Wend
	lDataSet.Next
  Wend
End Function

GL.CB.RO

GL.CB.RO Report Object Script
'Copy below script & paste to notepad & name it as eg GL.CB.RO.vbs
Call GetCLCBData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetCLCBData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("GL.CB.RO") 
 
  'Step 3: Spool parameters
  RptObject.Params.Find("AllCurrency").Value    = true
  RptObject.Params.Find("AllDocProject").Value  = true
  RptObject.Params.Find("AllDocument").Value    = true
  RptObject.Params.Find("AllItemProject").Value = true
  RptObject.Params.Find("AllItemArea").Value    = true
  RptObject.Params.Find("AllItemAgent").Value   = true
  RptObject.Params.Find("AllDocAgent").Value    = true
  RptObject.Params.Find("AllDocArea").Value     = true
  RptObject.Params.Find("AllPaymentMethod").Value = false
  'RptObject.Params.Find("CurrencyData").Value    = 'Not use if AllCurrency is true
  
  lDateFrom = CDate("January 01, 2017")
  lDateTo = CDate("December 31, 2017")
 
  'For Post Date From & Date To'
  RptObject.Params.Find("DateFrom").Value = lDateFrom 
  RptObject.Params.Find("DateTo").Value   = lDateTo
  
  'RptObject.Params.Find("DocProjectData").Value  = 'Not use if AllDocProject is true
  'RptObject.Params.Find("DocAreaData").Value     = 'Not use if AllDocArea is true
  'RptObject.Params.Find("DocAgentData").Value    = 'Not use if AllDocAgent is true
  'RptObject.Params.Find("ItemAgentData").Value   = 'Not use if AllItemAgent is true
  RptObject.Params.Find("DocType").Value          = "PV" 'PV for Payment Voucher & OR for Official Receipt
  'RptObject.Params.Find("DocumentData").Value    = 'Not use if AllDocument is true
  'RptObject.Params.Find("GroupBy").Value         = 'If you wanted to grouping the data
  RptObject.Params.Find("IncludeCancelled").Value = false
  'RptObject.Params.Find("ItemAreaData").Value    = 'Not use if AllItemArea is true
  'RptObject.Params.Find("ItemProjectData").Value = 'Not use if AllItemProject is true
  RptObject.Params.Find("PaymentMethodData").Value  = "310-001"
  RptObject.Params.Find("PrintDocumentStyle").Value = false
  RptObject.Params.Find("SelectDate").Value         = true 'For Post Date
  'RptObject.Params.Find("SelectDocDate").Value     = 'For Doc Date
  RptObject.Params.Find("SortBy").Value             = "PostDate;DocNo" 
 
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDetail")
  Set lDataSet3 = RptObject.DataSets.Find("cdsTax")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Description").AsString
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
	  lDataSet2.Next
    Wend
	lDataSet.Next
  Wend
  'For GST List
  MsgBox "GST Code Count " & lDataSet3.RecordCount
  lDataSet3.First
  While (not lDataSet3.eof)
    MsgBox lDataSet3.FindField("Code").AsString
	lDataSet3.Next
  Wend
End Function

AR_Customer

AR_Customer - Script
'Copy below script & paste to notepad & name it as eg AR_Customer.vbs
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_Customer") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsBranch") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  BizObject.New
  lMain.FindField("Code").AsString       = "300-Test"
  lMain.FindField("CompanyName").AsString = "Cash Sales"
    
  'Step 5: Insert Data - Detail
  'For 1st Branch
  lDetail.Edit
  lDetail.FindField("BranchName").AsString  = "BILLING"
  lDetail.FindField("Address1").AsString    = "Address1"
  lDetail.FindField("Address2").AsString    = "Address2"
  lDetail.FindField("Address3").AsString    = "Address3"
  lDetail.FindField("Address4").AsString    = "Address4"  
  lDetail.FindField("Attention").AsString   = "Attention"  
  lDetail.FindField("Phone1").AsString      = "Phone1"
  lDetail.FindField("Fax1").AsString        = "Fax1"
  lDetail.FindField("Email").AsString       = "EmailAddress"
  lDetail.Post
  
  'For 2nd Branch
  lDetail.Append
  lDetail.FindField("BranchName").AsString  = "Branch1"
  lDetail.FindField("Address1").AsString    = "DAddress1"
  lDetail.FindField("Address2").AsString    = "DAddress2"
  lDetail.FindField("Address3").AsString    = "DAddress3"
  lDetail.FindField("Address4").AsString    = "DAddress4"  
  lDetail.FindField("Attention").AsString   = "DAttention"  
  lDetail.FindField("Phone1").AsString      = "DPhone1"
  lDetail.FindField("Fax1").AsString        = "DFax1"
  lDetail.FindField("Email").AsString       = "DEmailAddress"
  lDetail.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
 
  'End Looping yr data

  'Step 7 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Done"  
End Function

AR_Customer-Edit

AR_Customer - Edit Script
'Copy below script & paste to notepad & name it as eg AR_Customer.vbs
Call EditARCustomer
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function EditARCustomer
Dim ComServer, BizObject, lDataSet, lDataSet2
 
  'Step 1 Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF
 
  'Step 2 Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_Customer") 
 
  'Step 3 Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet") 'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsBranch") 'lDetailDataSet contains detail data  
  
  'Step 4 Find Customer Code
  BizObject.Params.Find("Code").Value = "300-Test"
  
  BizObject.Open
  BizObject.Edit
  lMainDataSet.Edit
  lMainDataSet.FindField("CompanyName").value = "Testing 123-Changed"
 
  'Step 5 For 1st Branch
    v = "BILLING"
 
    if (lDetailDataSet.Locate("BranchName", v, false, false)) then
	  lDetailDataSet.Edit 
      lDetailDataSet.FindField("Address1").AsString   = "Address1-Changed"
      lDetailDataSet.FindField("Address2").AsString   = "Address2-Changed"
      lDetailDataSet.FindField("Address3").AsString   = "Address3-Changed"
      lDetailDataSet.FindField("Address4").AsString   = "Address4-Changed"
      lDetailDataSet.FindField("Attention").AsString  = "Attention-Changed"
      lDetailDataSet.FindField("Phone1").AsString     = "Phone1-Changed"
      lDetailDataSet.FindField("Fax1").AsString       = "Fax1-Changed"
      lDetailDataSet.FindField("Email").AsString      = "EmailAddress-Changed"
      lDetailDataSet.Post
	end if
 'Step 5 For 2nd Branch
    v = "Branch1"
 
    if (lDetailDataSet.Locate("BranchName", v, false, false)) then 
      lDetailDataSet.Edit
      lDetailDataSet.FindField("Address1").AsString   = "DAddress1-Changed"
      lDetailDataSet.FindField("Address2").AsString   = "DAddress2-Changed"
      lDetailDataSet.FindField("Address3").AsString   = "DAddress3-Changed"
      lDetailDataSet.FindField("Address4").AsString   = "DAddress4-Changed"
      lDetailDataSet.FindField("Attention").AsString  = "DAttention-Changed"
      lDetailDataSet.FindField("Phone1").AsString     = "DPhone1-Changed"
      lDetailDataSet.FindField("Fax1").AsString       = "DFax1-Changed"
      lDetailDataSet.FindField("Email").AsString      = "DEmailAddress-Changed"
      lDetailDataSet.Post  
   end IF 
  'Step 6 Save Customer
  BizObject.Save
  BizObject.Close
  MsgBox "Done"
End Function

GL.TrialBalance.RO

GL Trial Balance Report Object Script
'Copy below script & paste to notepad & name it as eg GL.TrialBalance.RO.vbs
Call GetGLTBData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetGLTBData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("GL.TrialBalance.RO") 
 
  'Step 3: Spool parameters
  RptObject.Params.Find("AllProject").Value      = true
  RptObject.Params.Find("AllAgent").Value        = true
  RptObject.Params.Find("AllArea").Value         = true
  RptObject.Params.Find("LedgerType").Value      = "G" 'G = Legder, S = Debtor, P = Supplier
  'RptObject.Params.Find("ProjectData").Value    = 'Not use if AllArea is true
  RptObject.Params.Find("ShowZeroBalance").Value = false
  RptObject.Params.Find("SortBy").Value          = "PostDate;DocNo" 
  RptObject.Params.Find("UseDescription2").Value = false
   
  lDateFrom = CDate("October 27, 2016")
  lDateTo = CDate("December 31, 2016")
 
  'For Post Date From & Date To'
  RptObject.Params.Find("DateFrom").Value       = lDateFrom 
  RptObject.Params.Find("DateTo").Value         = lDateTo

  'RptObject.Params.Find("AgentData").Value      = 'Not use if AllAgent is true
  'RptObject.Params.Find("AreaData").Value       = 'Not use if AllArea is true
  
  RptObject.Params.Find("SortBy").Value          = "Code;Description" 
 
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsGLAccount")

  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "Month To Date"
	MsgBox lDataSet.FindField("Code").AsString & " DR=>" & lDataSet.FindField("MTDDR").AsString & " CR=>" &	lDataSet.FindField("MTDCR").AsString
	
	MsgBox "Year To Date"
	MsgBox lDataSet.FindField("Code").AsString & " DR=>" & lDataSet.FindField("YTDDR").AsString & " CR=>" &	lDataSet.FindField("YTDCR").AsString
	lDataSet.Next
  Wend
  
  'For Account List
  lDataSet2.First
  While (not lDataSet2.eof)
	MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
	lDataSet2.Next
  Wend
  
End Function

Customer.Aging.RO

Customer Aging Report Object Script
'Copy below script & paste to notepad & name it as eg customer_aging_ro.vbs
Call GetCustStatementData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function GetCustStatementData
Const Quote = """"
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo, lAgeData
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF

  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.Aging.RO") 
 
  'Step 3: Spool parameters
  lAgeData = "<?xml version=" & Quote & "1.0" & Quote & " standalone=" & Quote & "yes" & Quote & "?>  <DATAPACKET Version=" & Quote & "2.0" & Quote & "><METADATA><FIELDS>" &_
       "<FIELD attrname=" & Quote & "ColumnNo" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "ColumnType" & Quote & " fieldtype=" & Quote & "string" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
       "<FIELD attrname=" & Quote & "Param1" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/><FIELD attrname=" & Quote & "Param2" & Quote & " fieldtype=" & Quote & "i4" & Quote & " required=" & Quote & "true" & Quote & "/>" &_
       "<FIELD attrname=" & Quote & "IsLocal" & Quote & " fieldtype=" & Quote & "boolean" & Quote & "/><FIELD attrname=" & Quote & "HeaderScript" & Quote & " fieldtype=" & Quote & "bin.hex" & Quote & " SUBTYPE=" & Quote & "Text" & Quote & " WIDTH=" & Quote & "1" & Quote & "/>" &_
       "</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo=" & Quote & "0" & Quote & " ColumnType=" & Quote & "" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "1" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "0" & Quote & " Param2=" & Quote & "0" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "2" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-1" & Quote & " Param2=" & Quote & "-1" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "3" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-2" & Quote & " Param2=" & Quote & "-2" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "4" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-3" & Quote & " Param2=" & Quote & "-3" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "5" & Quote & " ColumnType=" & Quote & "A" & Quote & " Param1=" & Quote & "-4" & Quote & " Param2=" & Quote & "-4" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;" & Quote & "/>" &_
       "<ROW ColumnNo=" & Quote & "6" & Quote & " ColumnType=" & Quote & "B" & Quote & " Param1=" & Quote & "-999999" & Quote & " Param2=" & Quote & "-5" & Quote & " IsLocal=" & Quote & "FALSE" & Quote & " HeaderScript=" & Quote & "ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;" & Quote & "/>" &_
       "</ROWDATA></DATAPACKET>"
  RptObject.Params.Find("ActualGroupBy").Value         = "Code;CompanyName" 'Fixed
'  RptObject.Params.Find("AgentData").Value            =  'Not use if AllAgent is True
  RptObject.Params.Find("AgingData").Value            = lAgeData 'Fixed

  lDateTo = CDate("August 31, 2016")
  RptObject.Params.Find("AgingDate").Value            = lDateTo  

  RptObject.Params.Find("AgingOn").Value              = "I" 'Fixed
  RptObject.Params.Find("AllAgent").Value             = true
  RptObject.Params.Find("AllArea").Value              = true
  RptObject.Params.Find("AllCompany").Value           = false
  RptObject.Params.Find("AllCompanyCategory").Value   = true
  RptObject.Params.Find("AllControlAccount").Value    = true
  RptObject.Params.Find("AllCurrency").Value          = true
  RptObject.Params.Find("AllDocProject").Value        = true
'  RptObject.Params.Find("AreaData").Value             =  'Not use if AllArea is True
'  RptObject.Params.Find("CompanyCategoryData").Value  =  'Not use if AllCompanyCategory is True
  RptObject.Params.Find("CompanyData").Value          = "300-A0001"& vbCRLF & "300-C0001" 'Filter by Customer Code 300-A0001 & 300-C0001
'  RptObject.Params.Find("ControlAccountData").Value   =  'Not use if AllControlAccount is True
'  RptObject.Params.Find("CurrencyData").Value         =  'Not use if AllCurrency is True
'  RptObject.Params.Find("DocProjectData").Value       =  'Not use if AllDocProject is True
  RptObject.Params.Find("FilterPostDate").Value        = false
'  RptObject.Params.Find("GroupBy").Value               = 'Not use 
  RptObject.Params.Find("IncludePDC").Value        = false
  RptObject.Params.Find("IncludeZeroBalance").Value   = false
  RptObject.Params.Find("SortBy").Value               = "Code;CompanyName"
  RptObject.Params.Find("DateTo").Value               = lDateTo

 
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocument")
  MsgBox "Count " & lDataSet.RecordCount

  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("Code").AsString & " " & lDataSet.FindField("CompanyName").AsString & " " & lDataSet.FindField("C1").AsString
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("DocNo").AsString & " " & lDataSet2.FindField("C1").AsString
	  lDataSet2.Next
    Wend
	lDataSet.Next
  Wend
End Function

GL.JE.RO

GL Journal Voucher Report Object Script
'Copy below script & paste to notepad & name it as eg GLJE_ro.vbs
Call GetCustomerData

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function GetCustomerData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF

  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("GL.JE.RO") 

  'Step 3: Spool parameters
  RptObject.Params.Find("AllCurrency").Value = true
  RptObject.Params.Find("AllDocProject").Value = true
  RptObject.Params.Find("AllDocument").Value = true
  RptObject.Params.Find("AllItemProject").Value = true
  RptObject.Params.Find("AllItemArea").Value = true
  RptObject.Params.Find("AllItemAgent").Value = true
  RptObject.Params.Find("AllDocAgent").Value = true
  RptObject.Params.Find("AllDocArea").Value = true
  RptObject.Params.Find("AllPaymentMethod").Value = true

  lDateFrom = CDate("December 1, 2017")
  lDateTo = CDate("December 31, 2017")

  RptObject.Params.Find("DateFrom").Value = lDateFrom
  RptObject.Params.Find("DocDateFrom").Value = lDateFrom
  RptObject.Params.Find("DateTo").Value = lDateTo
  RptObject.Params.Find("DocDateTo").Value = lDateTo
  RptObject.Params.Find("IncludeCancelled").Value = false
  RptObject.Params.Find("PrintDocumentStyle").Value = false
  RptObject.Params.Find("SelectDate").Value = true 'Post Date
  RptObject.Params.Find("SelectDocDate").Value = false 'Doc Date
  
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDetail")
  MsgBox "Count " & lDataSet.RecordCount

  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Description").AsString
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("Code").AsString & " " & lDataSet2.FindField("Description").AsString
	  lDataSet2.Next
    Wend
	lDataSet.Next
  Wend
End Function

SL_CS

SL_CS Script
'Copy below script & paste to notepad & name it as eg SL_CS.vbs
Call InsertData

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function InsertData
Dim ComServer, BizObject, lDate

  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF

  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_CS") 

  'Step 3: Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2016")
  BizObject.New
  lMainDataSet.FindField("DocKey").value = -1
  lMainDataSet.FindField("DocNo").value = "--IV Test--"
  lMainDataSet.FindField("DocDate").value = lDate
  lMainDataSet.FindField("PostDate").value = lDate
  lMainDataSet.FindField("Code").value = "300-C0001" 'Customer Code
  lMainDataSet.FindField("Description").value = "Sales"
    
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000" 'Sales Account Code  & can ignore if had itemcode
  lDetailDataSet.FindField("Description").value =  "Sales Item A"
  lDetailDataSet.FindField("Qty").value =  1
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 410.37
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
  
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value =  1
  lDetailDataSet.EnableControls
  
  lDetailDataSet.Post
  
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "500-000"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Qty").value =  1
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 94.43
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
  lDetailDataSet.Post

  'For With Item Code
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("ItemCode").value = "ANT"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Qty").value =  2
  lDetailDataSet.FindField("Tax").value =  "SR"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("UnitPrice").value = 100
  lDetailDataSet.FindField("Amount").value = 200
  lDetailDataSet.FindField("TaxAmt").value = 12
  lDetailDataSet.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  ComServer.Logout
  MsgBox "Done"
End Function

Customer.PM.RO

Customer.PM.RO Script
'Copy below script & paste to notepad & name it as eg Customer.PM.RO.vbs
Call GetARPMData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetARPMData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.PM.RO") 
 
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value               = 'Not use if AllAgent is true
  'RptObject.Params.Find("CompanyCategoryData").Value     = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("AllAgent").Value                = true
  RptObject.Params.Find("AllCompanyCategory").Value      = true
  RptObject.Params.Find("AllArea").Value                 = true
  RptObject.Params.Find("AllCompany").Value              = true
  RptObject.Params.Find("AllCurrency").Value             = true
  RptObject.Params.Find("AllDocument").Value             = false
  RptObject.Params.Find("AllPaymentMethod").Value        = true
  'RptObject.Params.Find("AreaData").Value                = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value             = 'Not use if AllCompany is true
  'RptObject.Params.Find("CurrencyData").Value            = 'Not use if AllCurrency is true

  lDateFrom = CDate("January 01, 2017")
  lDateTo = CDate("December 31, 2017")
  
  RptObject.Params.Find("DateFrom").Value                = lDateFrom
  RptObject.Params.Find("DateTo").Value                  = lDateTo
  RptObject.Params.Find("DocumentData").Value            = "VCOR-00049"
  'RptObject.Params.Find("GroupBy").Value                 = 'If you wanted to grouping the data
  RptObject.Params.Find("IncludeCancelled").Value        = false
  'RptObject.Params.Find("PaymentMethodData").Value       = 'Not use if AllPaymentMethod is true
  RptObject.Params.Find("PrintDocumentStyle").Value      = false
  RptObject.Params.Find("SelectDate").Value              = true
  RptObject.Params.Find("ShowUnappliedAmountOnly").Value = false
  RptObject.Params.Find("SortBy").Value                  = "PostDate;DocNo;Code"
  RptObject.Params.Find("AllDocProject").Value           = true
  RptObject.Params.Find("AllItemProject").Value          = true
  'RptObject.Params.Find("DocProjectData").Value          = 'Not use if AllDocProject is true
  'RptObject.Params.Find("ItemProjectData").Value         = 'Not use if AllItemProject is true  
  
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsKnockOff")
  Set lDataSet3 = RptObject.DataSets.Find("cdsKnockOffDetail")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("DocKey").AsString & " " &  lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Code").AsString
	MsgBox "cdsKnockOff Count " & lDataSet2.RecordCount
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("FromDocKey").AsString & " " & lDataSet2.FindField("DocNo").AsString & " " & lDataSet2.FindField("KOAmt").AsString
	  lDataSet2.Next
    Wend
    MsgBox "cdsKnockOffDetail Count " & lDataSet3.RecordCount
	lDataSet3.First
    While (not lDataSet3.eof)
      MsgBox lDataSet3.FindField("FromDocKey").AsString & " " & lDataSet3.FindField("DocNo").AsString & " " & lDataSet3.FindField("KOAmt").AsString
  	  lDataSet3.Next
    Wend	
	lDataSet.Next
  Wend
End Function

Sales.IV.RO

Sales.IV.RO Script
'Copy below script & paste to notepad & name it as eg Sales.IV.RO.vbs
Call GetSalesIVData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetSalesIVData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Sales.IV.RO") 
 
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
  RptObject.Params.Find("AllAgent").Value               = true
  RptObject.Params.Find("AllArea").Value                = true
  RptObject.Params.Find("AllCompany").Value             = false
  RptObject.Params.Find("AllCurrency").Value            = true
  RptObject.Params.Find("AllDocProject").Value          = true
  RptObject.Params.Find("AllDocument").Value            = true
  RptObject.Params.Find("AllItem").Value                = true
  RptObject.Params.Find("AllItemProject").Value         = true
  RptObject.Params.Find("AllLocation").Value            = true
  RptObject.Params.Find("AllStockGroup").Value          = true
  RptObject.Params.Find("AllCompanyCategory").Value     = true
  RptObject.Params.Find("AllBatch").Value               = true
  RptObject.Params.Find("AllTariff").Value              = true 'For Version 776 & above
  'RptObject.Params.Find("TariffData").Value             = 'Not use if TariffData is true - For Version 776 & above
  'RptObject.Params.Find("AreaData").Value               = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyCategoryData").Value    = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("CompanyData").Value            = "300-C0001"
  'RptObject.Params.Find("CurrencyData").Value           = 'Not use if AllCurrency is true

  lDateFrom = CDate("January 01, 2017")
  lDateTo = CDate("December 31, 2017")
  
  RptObject.Params.Find("DateFrom").Value                = lDateFrom
  RptObject.Params.Find("DateTo").Value                  = lDateTo
  'RptObject.Params.Find("DocProjectData").Value          = 'Not use if AllDocProject is true
  'RptObject.Params.Find("DocumentData").Value            = 'Not use if AllDocument is true
  'RptObject.Params.Find("GroupBy").Value                 = 'If you wanted to grouping the data
  'RptObject.Params.Find("CategoryData").Value            = 'Not use if HasCategory is false
  'RptObject.Params.Find("CategoryTpl").Value             = 'For Internal use only
  RptObject.Params.Find("IncludeCancelled").Value        = false
  RptObject.Params.Find("HasCategory").Value             = false
  'RptObject.Params.Find("ItemData").Value                = 'Not use if AllItem is true
  'RptObject.Params.Find("ItemProjectData").Value         = 'Not use if AllItemProject is true
  'RptObject.Params.Find("LocationData").Value            = 'Not use if AllLocation is true
  'RptObject.Params.Find("ItemCategoryData").Value        = 'For Internal use only
  'RptObject.Params.Find("BatchData").Value               = 'Not use if AllBatch is true
  RptObject.Params.Find("PrintDocumentStyle").Value      = false
  RptObject.Params.Find("SelectDate").Value              = true
  RptObject.Params.Find("SortBy").Value                  = "PostDate;DocNo;Code"
  'RptObject.Params.Find("StockGroupData").Value          = 'Not use if AllStockGroup is true
  
  
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocDetail")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox lDataSet.FindField("DocKey").AsString & " " &  lDataSet.FindField("DocNo").AsString & " " & lDataSet.FindField("Code").AsString
	MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox lDataSet2.FindField("DocKey").AsString & " " & lDataSet2.FindField("ItemCode").AsString & " " & lDataSet2.FindField("Amount").AsString
	  lDataSet2.Next
    Wend	
	lDataSet.Next
  Wend
End Function

Customer.DueDocument.RO

Customer.DueDocument.RO Script
'Copy below script & paste to notepad & name it as eg Customer.DueDocument.RO.vbs
Call GetData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetData
Dim ComServer, RptObject, lDataSet, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.DueDocument.RO") 
 
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value              = 'Not use if AllAgent is true
  RptObject.Params.Find("AllAgent").Value               = true
  RptObject.Params.Find("AllArea").Value                = true
  RptObject.Params.Find("AllCompany").Value             = false
  RptObject.Params.Find("AllCompanyCategory").Value     = true
  RptObject.Params.Find("AllCurrency").Value            = true
  RptObject.Params.Find("AllDocProject").Value          = true
  RptObject.Params.Find("AllItemProject").Value         = true
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyCategoryData").Value   = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("CompanyData").Value            = "300-A0003"
  'RptObject.Params.Find("CurrencyData").Value          = 'Not use if AllCurrency is true
  'RptObject.Params.Find("DocProjectData").Value        = 'Not use if AllDocProject is true
  'RptObject.Params.Find("GroupBy").Value               = 'If you wanted to grouping the data
  'RptObject.Params.Find("ItemProjectData").Value       = 'Not use if AllItemProject is true
  RptObject.Params.Find("PrintContra").Value            = true
  RptObject.Params.Find("PrintCreditNote").Value        = true
  RptObject.Params.Find("PrintDebitNote").Value         = true
  RptObject.Params.Find("PrintInvoice").Value           = true
  RptObject.Params.Find("PrintOverDue").Value           = true
  RptObject.Params.Find("PrintUnDue").Value             = true
  RptObject.Params.Find("ShowForeignCurrency").Value    = true
  RptObject.Params.Find("ShowLocalCurrency").Value      = true
  RptObject.Params.Find("SortBy").Value                 = "PostDate;DocNo;Code"
  
  lDateTo = CDate("April 12, 2018")
  
  RptObject.Params.Find("DateTo").Value                 = lDateTo
  RptObject.Params.Find("IncludePDCheque").Value        = true  
    
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "Dockey " & lDataSet.FindField("DocKey").AsString 
	MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString 
	MsgBox "DocAmt " & lDataSet.FindField("DocAmt").AsString
	MsgBox "Outstanding " & lDataSet.FindField("Outstanding").AsString
	MsgBox "Code " & lDataSet.FindField("Code").AsString
	lDataSet.Next
  Wend
End Function

Customer.IV.RO

Customer.IV.RO Script
'Copy below script & paste to notepad & name it as eg Customer.IV.RO.vbs
Call GetData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Customer.IV.RO") 
 
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value             = 'Not use if AllAgent is true
  'RptObject.Params.Find("CompanyCategoryData").Value   = 'Not use if AllCompanyCategory is true
  RptObject.Params.Find("AllAgent").Value               = true
  RptObject.Params.Find("AllCompanyCategory").Value     = true
  RptObject.Params.Find("AllArea").Value                = true
  RptObject.Params.Find("AllCompany").Value             = true
  RptObject.Params.Find("AllCurrency").Value            = true
  RptObject.Params.Find("AllDocument").Value            = false
  RptObject.Params.Find("AllPaymentMethod").Value       = true
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value           = 'Not use if AllCompany is true
  'RptObject.Params.Find("CurrencyData").Value          = 'Not use if AllCurrency is true
  
  lDateFrom = CDate("January 01, 2017")
  lDateTo = CDate("December 31, 2017")
  
  RptObject.Params.Find("DateFrom").Value                = lDateFrom
  RptObject.Params.Find("DateTo").Value                  = lDateTo
  RptObject.Params.Find("DocumentData").Value            =  "IV-00012"
  'RptObject.Params.Find("GroupBy").Value                = 'If you wanted to grouping the data
  RptObject.Params.Find("IncludeCancelled").Value        = true
  'RptObject.Params.Find("PaymentMethodData").Value      = 'Not use if AllPaymentMethod is true
  RptObject.Params.Find("PrintDocumentStyle").Value      = false
  RptObject.Params.Find("SelectDate").Value              = true
  RptObject.Params.Find("ShowUnappliedAmountOnly").Value = true
  RptObject.Params.Find("SortBy").Value                  = "DocDate;DocNo;Code"
  RptObject.Params.Find("AllDocProject").Value           = true
  RptObject.Params.Find("AllItemProject").Value          = true
  'RptObject.Params.Find("DocProjectData").Value         = 'Not use if AllDocProject is true
  'RptObject.Params.Find("ItemProjectData  ").Value      = 'Not use if AllItemProject is true
    
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsDocDetail")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
	MsgBox "DocAmt " & lDataSet.FindField("DocAmt").AsString
	MsgBox "PaymentAmt " & lDataSet.FindField("PaymentAmt").AsString
	
	MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
	lDataSet2.First
    While (not lDataSet2.eof)
	  MsgBox "Account " & lDataSet2.FindField("Account").AsString
	  MsgBox "Description " & lDataSet2.FindField("Description").AsString
	  MsgBox "Amount " & lDataSet2.FindField("Amount").AsString
	  lDataSet2.Next
    Wend	
	lDataSet.Next
  Wend
End Function

Sales.OutstandingSO.RO

Sales.OutstandingSO.RO Script
'Copy below script & paste to notepad & name it as eg Sales.OutstandingSO.RO.vbs
Call GetData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetData
Dim ComServer, RptObject, lDataSet, lDataSet2, lDataSet3, lDateFrom, lDateTo
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Sales.OutstandingSO.RO") 
 
  'Step 3: Spool parameters
  'RptObject.Params.Find("AgentData").Value            = 'Not use if AllAgent is true
  'RptObject.Params.Find("CompanyCategoryData").Value  = 'Not use if AllCompanyCategory is true
  'RptObject.Params.Find("LocationData").Value         = 'Not use if AllLocation is true
  'RptObject.Params.Find("StockGroupData").Value       = 'Not use if AllStockGroup is true
  RptObject.Params.Find("AllAgent").Value              = true
  RptObject.Params.Find("AllArea").Value               = true
  RptObject.Params.Find("AllCompany").Value            = true
  RptObject.Params.Find("AllDocument").Value           = false
  RptObject.Params.Find("AllItem").Value               = true
  RptObject.Params.Find("AllItemProject").Value        = true
  'RptObject.Params.Find("AreaData").Value              = 'Not use if AllArea is true
  'RptObject.Params.Find("CompanyData").Value           = 'Not use if AllCompany is true
  RptObject.Params.Find("AllTariff").Value              = true 'For Version 776 & above
  'RptObject.Params.Find("TariffData").Value             = 'Not use if TariffData is true - For Version 776 & above

  
  lDateFrom = CDate("January 01, 2017")
  lDateTo = CDate("December 31, 2017") 
  
  'RptObject.Params.Find("DateFrom").Value              = lDateFrom
  'RptObject.Params.Find("DateTo").Value                = lDateTo
  'RptObject.Params.Find("DeliveryDateFrom").Value      = lDateFrom
  'RptObject.Params.Find("DeliveryDateTo").Value        = lDateTo
  RptObject.Params.Find("DocumentData").Value           = "SO-00007"& vbCRLF & "SO-00009"
  'RptObject.Params.Find("GroupBy").Value               = 'If you wanted to grouping the data
  RptObject.Params.Find("IncludeCancelled").Value       = false
  'RptObject.Params.Find("ItemData").Value               = 'Not use if AllItem is true
  RptObject.Params.Find("PrintFulfilledItem").Value     = true 'Print transfered info
  RptObject.Params.Find("PrintOutstandingItem").Value   = true 'Print untransfer info
  'RptObject.Params.Find("ItemProjectData").Value       = 'Not use if AllItemProject is true
  RptObject.Params.Find("SelectDate").Value             = false
  RptObject.Params.Find("SelectDeliveryDate").Value     = false
  RptObject.Params.Find("SortBy").Value                 = "DocDate;DocNo;Code"
  RptObject.Params.Find("AllDocProject").Value          = true
  RptObject.Params.Find("AllLocation").Value            = true
  RptObject.Params.Find("AllCompanyCategory").Value     = true
  RptObject.Params.Find("AllBatch").Value               = true
  RptObject.Params.Find("HasCategory").Value            = false
  RptObject.Params.Find("AllStockGroup").Value          = true
  'RptObject.Params.Find("CategoryData").Value          = 'For Internal use only
  'RptObject.Params.Find("CategoryTpl").Value           = 'For Internal use only
  'RptObject.Params.Find("ItemCategoryData").Value      = 'For Internal use only
  'RptObject.Params.Find("DocProjectData").Value        = 'Not use if AllDocProject is true
  'RptObject.Params.Find("BatchData").Value             = 'Not use if AllBatch is true
  RptObject.Params.Find("TranferDocFilterDate").Value   = false
   
    
  'Step 4: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsTransfer")
  MsgBox "Count " & lDataSet.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "DocKey " & lDataSet.FindField("DocKey").AsString
	MsgBox "DtlKey " & lDataSet.FindField("Dtlkey").AsString
	MsgBox "DocNo " & lDataSet.FindField("DocNo").AsString
	MsgBox "Item Code " & lDataSet.FindField("ItemCode").AsString
	MsgBox "Org Qty " & lDataSet.FindField("SQty").AsString
	MsgBox "Outstanding Qty " & lDataSet.FindField("OutstandingQty").AsString
	
	MsgBox "cdsDocDetail Count " & lDataSet2.RecordCount
	lDataSet2.First
    While (not lDataSet2.eof)
      MsgBox "FromDocKey " & lDataSet2.FindField("FromDocKey").AsString
	  MsgBox "FromDtlKey " & lDataSet2.FindField("FromDtlkey").AsString
	  MsgBox "DocType " & lDataSet2.FindField("DocType").AsString
	  MsgBox "DocNo " & lDataSet2.FindField("DocNo").AsString
	  MsgBox "DocDate " & lDataSet2.FindField("DocDate").AsString
	  MsgBox "Transfer Qty " & lDataSet2.FindField("TransferQty").AsString
	  lDataSet2.Next
    Wend	
	lDataSet.Next
  Wend
End Function

Common.PaymentMethod.RO

Common.PaymentMethod.RO Script
'Copy below script & paste to notepad & name it as eg Common.PaymentMethod.RO.vbs
Call GetInfo
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetInfo
Dim ComServer, RptObject, lDataSet1, lDataSet2
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.PaymentMethod.RO") 
 
 
  'Step 3: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsPaymentAccount") 'You can link with lDataSet1 using Code to get the description

  MsgBox "Count " & lDataSet1.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet1.First
  While (not lDataSet1.eof)
	MsgBox "Code : " & lDataSet1.FindField("Code").AsString 
	lDataSet1.Next
  Wend    
  
  MsgBox "Count " & lDataSet2.RecordCount
  
  lDataSet2.First
  While (not lDataSet2.eof)
	MsgBox "Code : " & lDataSet2.FindField("Code").AsString 
	MsgBox "Description : " & lDataSet2.FindField("Description").AsString
	lDataSet2.Next
  Wend    
End Function

Common.Agent.RO

Common.Agent.RO Script
'Copy below script & paste to notepad & name it as eg Common.Agent.RO.vbs
Call GetInfo
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetInfo
Dim ComServer, RptObject, lDataSet1
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2: Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Common.Agent.RO") 
 
 
  'Step 3: Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  
  MsgBox "Count " & lDataSet1.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet1.First
  While (not lDataSet1.eof)
	MsgBox "Code : " & lDataSet1.FindField("Code").AsString 
	MsgBox "Description : " & lDataSet1.FindField("Description").AsString 
	lDataSet1.Next
  Wend      
End Function

Stock.Item.RO

Stock.Item.RO Script
'Copy below script & paste to notepad & name it as eg Stock.Item.RO.vbs
Call GetInfo
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function GetInfo
Dim ComServer, RptObject, lDataSet1, lDataSet2, lDateFrom, lDateTo
  'Step 1 Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C\DB\SQLAcc.DCF", "ACC-0002.FDB" 
  END IF
 
  'Step 2 Find and Create the Report Objects
  Set RptObject = ComServer.RptObjects.Find("Stock.Item.RO") 
 
  'Step 3 Spool parameters
    RptObject.Params.Find("AllItem").AsBoolean              = true
    RptObject.Params.Find("AllStockGroup").AsBoolean        = true
    RptObject.Params.Find("AllCustomerPriceTag").AsBoolean  = true
    RptObject.Params.Find("AllSupplierPriceTag").AsBoolean  = true
    'RptObject.Params.Find("CategoryData").AsBlob            =  'Not use
    'RptObject.Params.Find("CategoryTpl").AsBlob             =  'Not use
    'RptObject.Params.Find("CustomerPriceTagData").AsBlob    =  'Not use if AllCustomerPriceTag is True
    'RptObject.Params.Find("SupplierPriceTagData").AsBlob    =  'Not use if AllSupplierPriceTag is True
	
    lDateFrom = CDate("January 01, 2017")
    lDateTo = CDate("December 31, 2017")
  
    'RptObject.Params.Find("DateFrom").AsDate                = lDateFrom 'Not use if SelectDate is False
    'RptObject.Params.Find("DateTo").AsDate                  = lDateTo
    RptObject.Params.Find("HasAltStockItem").AsBoolean      = false
    RptObject.Params.Find("HasBarcode").AsBoolean           = false
    RptObject.Params.Find("HasBOM").AsBoolean               = false
    RptObject.Params.Find("HasCategory").AsBoolean          = false
    RptObject.Params.Find("HasCustomerItem").AsBoolean      = false
    RptObject.Params.Find("HasOpeningBalance").AsBoolean    = false
    RptObject.Params.Find("HasPurchasePrice").AsBoolean     = false
    RptObject.Params.Find("HasSellingPrice").AsBoolean      = false
    RptObject.Params.Find("HasSupplierItem").AsBoolean      = false
    'RptObject.Params.Find("ItemData").AsBlob                = 'Not use if AllItem is True
    'RptObject.Params.Find("ItemCategoryData").AsBlob        = 'Not use if SelectCategory is False
    RptObject.Params.Find("PrintActive").AsBoolean          = true
    RptObject.Params.Find("PrintInActive").AsBoolean        = true
    RptObject.Params.Find("PrintNonStockControl").AsBoolean = true
    RptObject.Params.Find("PrintStockControl").AsBoolean    = true
    RptObject.Params.Find("SelectCategory").AsBoolean       = false
    RptObject.Params.Find("SelectDate").AsBoolean           = false
    RptObject.Params.Find("SortBy").AsString                  = "Code"
    'RptObject.Params.Find("StockGroupData").AsBlob        =  'Not use if AllStockGroup is True  
    
  'Step 4 Perform Report calculation 
  RptObject.CalculateReport()
  Set lDataSet1 = RptObject.DataSets.Find("cdsMain")
  Set lDataSet2 = RptObject.DataSets.Find("cdsUOM") ' To link Master Data use Code
  MsgBox "Count " & lDataSet1.RecordCount
 
  'Step 5 Retrieve the output 
  lDataSet1.First
  While (not lDataSet1.eof)
    MsgBox "Code " & lDataSet1.FindField("Code").AsString 
    MsgBox "Description " & lDataSet1.FindField("Description").AsString 
    MsgBox "Balance Qty " & lDataSet1.FindField("BalSQty").AsString 
    lDataSet1.Next
  Wend

  MsgBox "Count " & lDataSet2.RecordCount
  lDataSet2.First
  While (not lDataSet2.eof)
    MsgBox "Code " & lDataSet2.FindField("Code").AsString 
	MsgBox "UOM " & lDataSet2.FindField("UOM").AsString 
	MsgBox "Rate " & lDataSet2.FindField("Rate").AsString 
	MsgBox "RefPrice " & lDataSet2.FindField("RefPrice").AsString
    lDataSet2.Next
  Wend	
End Function

Stock Item Balance

Get Stock Item Balance Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg ItemBalance.vbs
Call CheckLogin
Call GetData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lDataSet, lSQL
  lSQL = "SELECT A.Location, A.Batch, A.ItemCode, B.Description, Sum(A.Qty) Qty FROM ST_TR A "
  lSQL = lSQL & "INNER JOIN ST_ITEM B ON (A.ITEMCODE=B.CODE) " 
  lSQL = lSQL & "WHERE B.IsActive='T' "
  lSQL = lSQL & "AND A.PostDate <= '31 Dec 2017' "
  lSQL = lSQL & "AND A.ItemCode= 'ANT' "
  lSQL = lSQL & "GROUP by A.Location, A.Batch, A.ItemCode, B.Description"
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
  
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "Location : " & lDataSet.FindField("Location").AsString
    MsgBox "Batch : " & lDataSet.FindField("Batch").AsString
    MsgBox "Item Code : " & lDataSet.FindField("ItemCode").AsString
	MsgBox "Item Description : " & lDataSet.FindField("Description").AsString
	MsgBox "Balance Qty : " & lDataSet.FindField("Qty").AsString
	lDataSet.Next
  Wend
End Function

ST_IS

ST_IS Script
'Copy below script & paste to notepad & name it as eg StockIssue.vbs
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_IS") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--IS Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Description").AsString = "Stock Issue"
    
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Issue out Item A"
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.Post

  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("ItemCode").AsString    = "E-BAT"
  lDetail.FindField("Description").AsString = "Issue out Item A"
  lDetail.FindField("Qty").AsFloat          = 4
  lDetail.Post  
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
    
  ComServer.Logout 'Logout after done
  MsgBox "Done"  
End Function

ST_RC

ST_RC Script
'Copy below script & paste to notepad & name it as eg StockReceived.vbs
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_RC") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--RC Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Description").AsString = "Stock Received"
    
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Received Item A"
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UnitCost").AsFloat     = 25.15
  lDetail.Post

  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("ItemCode").AsString    = "E-BAT"
  lDetail.FindField("Description").AsString = "Received Item A"
  lDetail.FindField("Qty").AsFloat          = 4
  lDetail.FindField("UnitCost").AsFloat     = 54
  lDetail.Post  
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
    
  ComServer.Logout 'Logout after done
  MsgBox "Done"  
End Function

ST_AJ

ST_AJ Script
'Copy below script & paste to notepad & name it as eg StockAdjustment.vbs
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_AJ") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--AJ Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Description").AsString = "Stock Adjustment"
    
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Adjust IN Item A"
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UnitCost").AsFloat     = 25.15 'Only IN need UnitCost
  lDetail.Post

  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("ItemCode").AsString    = "E-BAT"
  lDetail.FindField("Description").AsString = "Adjust OUT Item A"
  lDetail.FindField("Qty").AsFloat          = -4
  lDetail.Post  
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
    
  ComServer.Logout 'Logout after done
  MsgBox "Done"  
End Function

ST_XF

ST_XF Script
'Copy below script & paste to notepad & name it as eg ST_XF.vbs
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_XF") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--XF Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account - Optional
  lMain.FindField("CompanyName").AsString = "Cash Sales" 'Optional
  lMain.FindField("Description").AsString = "Stock Transfer"
    
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString     = "ANT"
  lDetail.FindField("Description").AsString  = "Transfer Item A"
  lDetail.FindField("Qty").AsFloat           = 10
  lDetail.FindField("UOM").AsString          = "UNIT"
  lDetail.FindField("FromLocation").AsString = "----"
  lDetail.FindField("ToLocation").AsString   = "BALAKONG"
  lDetail.Post

  lDetail.Append
  lDetail.FindField("DtlKey").value          = -1
  lDetail.FindField("DocKey").value          = -1
  lDetail.FindField("ItemCode").AsString     = "HFK"
  lDetail.FindField("Description").AsString  = "Transfer Item B"
  lDetail.FindField("Qty").AsFloat           = 5
  lDetail.FindField("UOM").AsString          = "UNIT"
  lDetail.FindField("FromLocation").AsString = "----"
  lDetail.FindField("ToLocation").AsString   = "BALAKONG"
  lDetail.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  
  'Step 7 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Done"  
End Function

AP_PI-Edit

AP_PI Edit Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg AP_PI.vbs
Call CheckLogin
Call GetData
Call PostData

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM AP_PI "
  lSQL = lSQL & "WHERE DocNo='PI-00001' "
  lSQL = lSQL & "AND Code='400-D0001' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function PostData
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AP_PI") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Doc Number
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  
  
    BizObject.Open
    BizObject.Edit
    lMain.Edit
	lMain.FindField("Description").AsString = "testing" 
  
  'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
      lDetail.First
	  lDetail.Delete
    Wend
  'Step 6: Append Detail
    lDetail.Append
    lDetail.FindField("DtlKey").value = -1
    lDetail.FindField("Account").value = "610-2000"
    lDetail.FindField("Description").value =  "Purchase Item A"
    lDetail.FindField("Tax").value =  ""
    lDetail.FindField("TaxInclusive").value =  0
    lDetail.FindField("Amount").value = 410.37
    lDetail.FindField("TaxAmt").value = 0
    lDetail.Post
  
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
  
  'Step 8 : Logout after done  
    'ComServer.Logout  
    MsgBox "Done" 
	Else
	MsgBox "Record Not Found" 
  END IF 
   
End Function

SL_DO to SL_IV

SL_DO to SL_IV Script
'Updated 26 Oct 2018
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call CheckLogin
Call InsertData1
Call InsertData2

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData1
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_DO") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2017")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "--DO Test--"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
  lMain.FindField("CompanyName").AsString = "Cash Sales"
  'lMain.FindField("Address1").AsString    = "" 'Optional
  'lMain.FindField("Address2").AsString    = "" 'Optional
  'lMain.FindField("Address3").AsString    = "" 'Optional
  'lMain.FindField("Address4").AsString    = "" 'Optional
  'lMain.FindField("Phone1").AsString      = "" 'Optional
  lMain.FindField("Description").AsString = "Delivery Order"
    
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("Seq").value            = 1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Sales Item A"
  lDetail.FindField("UOM").AsString         = "BOX"
  lDetail.FindField("Qty").AsFloat          = 2
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString     = "6%"
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100  
  lDetail.FindField("Amount").AsFloat       = 200
  lDetail.FindField("TaxAmt").AsFloat       = 12
  lDetail.Post

  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("Seq").value            = 2
  lDetail.FindField("ItemCode").AsString    = "COVER"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("UOM").AsString         = "UNIT"
  lDetail.FindField("Qty").AsFloat          = 3
  lDetail.FindField("Tax").AsString         = "SR"
  lDetail.FindField("TaxRate").AsString     = "6%"
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 10  
  lDetail.FindField("Amount").AsFloat       = 30
  lDetail.FindField("TaxAmt").AsFloat       = 1.80
  lDetail.Post  
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  MsgBox "DO Posting Done"  
End Function

Function InsertData2
Dim BizObject, lMain, lDetail, lDate, lDODtl, lxFer, lSQL, v(2)
  'Step 1: Check Is transtered or not
  lSQL = "SELECT DocKey FROM SL_IVDTL "
  lSQL = lSQL & "WHERE FromDockey=(SELECT DocKey FROM SL_DO " 
  lSQL = lSQL & "WHERE DocNo='--DO Test--') "
  Set lxFer = ComServer.DBManager.NewDataSet(lSQL)

  if lxFer.RecordCount = 0 then
    'Step 2: Get DO Information
    lSQL = "SELECT * FROM SL_DODTL "
    lSQL = lSQL & "WHERE Dockey=(SELECT DocKey FROM SL_DO " 
    lSQL = lSQL & "WHERE DocNo='--DO Test--') "
    Set lDODtl = ComServer.DBManager.NewDataSet(lSQL)    
	
	'Step 3: Find and Create the Biz Objects
    Set BizObject = ComServer.BizObjects.Find("SL_IV") 

    'Step 4: Set Dataset
    Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
    Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
    'Step 5 : Insert Data - Master
    lDate = CDate("January 1, 2017")
    BizObject.New
    lMain.FindField("DocKey").value         = -1
    lMain.FindField("DocNo").AsString       = "--IV Test--"
    lMain.FindField("DocDate").value        = lDate
    lMain.FindField("PostDate").value       = lDate
    lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
    lMain.FindField("CompanyName").AsString = "Cash Sales"
    'lMain.FindField("Address1").AsString    = "" 'Optional
    'lMain.FindField("Address2").AsString    = "" 'Optional
    'lMain.FindField("Address3").AsString    = "" 'Optional
    'lMain.FindField("Address4").AsString    = "" 'Optional
    'lMain.FindField("Phone1").AsString      = "" 'Optional
    lMain.FindField("Description").AsString = "Sales"
    
    'Step 6: Insert Data - Detail	
    v(0) = "COVER"
    v(1) = "UNIT"
	
    if (lDODtl.Locate("ItemCode;UOM", v, false, false)) then
      lDetail.Append
      lDetail.FindField("DtlKey").value         = -1
      lDetail.FindField("DocKey").value         = -1
      lDetail.FindField("Seq").value            = 1
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
      'lDetail.FindField("Account").AsString     = "500-000" 'If you wanted override the Sales Account Code
      lDetail.FindField("UOM").AsString         = lDODtl.FindField("UOM").AsString
	  lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("Tax").AsString         = lDODtl.FindField("Tax").AsString
      lDetail.FindField("TaxRate").AsString     = lDODtl.FindField("TaxRate").AsString
      lDetail.FindField("TaxInclusive").value   = lDODtl.FindField("TaxInclusive").Value
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitPrice").AsFloat
      lDetail.FindField("Amount").AsFloat       = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("TaxAmt").AsFloat       = lDODtl.FindField("TaxAmt").AsFloat
	  lDetail.FindField("FromDocType").AsString = "DO"
	  lDetail.FindField("FromDockey").AsFloat   = lDODtl.FindField("DocKey").AsFloat
	  lDetail.FindField("FromDtlkey").AsFloat   = lDODtl.FindField("DtlKey").AsFloat
      lDetail.Post
	End IF  
    v(0) = "ANT"
    v(1) = "BOX"
	
    if (lDODtl.Locate("ItemCode;UOM", v, false, false)) then
      lDetail.Append
      lDetail.FindField("DtlKey").value         = -1
      lDetail.FindField("DocKey").value         = -1
      lDetail.FindField("Seq").value            = 2
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
      'lDetail.FindField("Account").AsString     = "500-000" 'If you wanted override the Sales Account Code
      lDetail.FindField("UOM").AsString         = lDODtl.FindField("UOM").AsString
	  lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("Tax").AsString         = lDODtl.FindField("Tax").AsString
      lDetail.FindField("TaxRate").AsString     = lDODtl.FindField("TaxRate").AsString
      lDetail.FindField("TaxInclusive").value   = lDODtl.FindField("TaxInclusive").Value
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitPrice").AsFloat
      lDetail.FindField("Amount").AsFloat       = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("TaxAmt").AsFloat       = lDODtl.FindField("TaxAmt").AsFloat
	  lDetail.FindField("FromDocType").AsString = "DO"
	  lDetail.FindField("FromDockey").AsFloat   = lDODtl.FindField("DocKey").AsFloat
	  lDetail.FindField("FromDtlkey").AsFloat   = lDODtl.FindField("DtlKey").AsFloat
      lDetail.Post
	End IF  
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
  
  'Step 8 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Posting IV Done"
  else MsgBox "--DO Test-- had been transfered. Posting IV aborted"  
  End IF
End Function

SL_IV-Edit

SL_IV-Edit Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call CheckLogin
Call GetData
Call PostData

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM SL_IV "
  lSQL = lSQL & "WHERE DocNo='IV-00010' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function PostData
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_IV") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Doc Number
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  
  
    BizObject.Open
    BizObject.Edit
    lMain.Edit
	lMain.FindField("Description").AsString = "Sales - Edited" 
  
  'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
      lDetail.First
	  lDetail.Delete
    Wend
  'Step 6: Append Detail
    lDetail.Append
    lDetail.FindField("DtlKey").value = -1
    lDetail.FindField("Account").value = "500-000"
    lDetail.FindField("Description").value =  "Edited Item A"
    lDetail.FindField("Tax").value =  ""
    lDetail.FindField("TaxInclusive").value =  0
    lDetail.FindField("Amount").value = 410.37
    lDetail.FindField("TaxAmt").value = 0
    lDetail.Post
  
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
  
  'Step 8 : Logout after done  
    'ComServer.Logout  
    MsgBox "Done" 
	Else
	MsgBox "Record Not Found" 
  END IF 
End Function

GL_JE

GL_JE Script
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call InsertGLJE
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function InsertGLJE
Dim ComServer, BizObject, lDataSet, lDataSet2, lDate
 
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF
 
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_JE") 
 
  'Step 3: Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 23, 2017")
  BizObject.New
  lMainDataSet.FindField("DocKey").value = -1
  lMainDataSet.FindField("DocNo").value = "--JV Test--"
  lMainDataSet.FindField("DocDate").value = lDate
  lMainDataSet.FindField("PostDate").value = lDate
  lMainDataSet.FindField("Description").value = "testing desc header"
  lMainDataSet.Post
  
  'Step 5: Insert Data - Detail
  'For Tax Inclusive
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("SEQ").value = 1
  lDetailDataSet.FindField("Code").value = "610-1000"
  lDetailDataSet.FindField("Project").value = "----"
  lDetailDataSet.FindField("Description").value =  "testing desc1"
  lDetailDataSet.FindField("Tax").value =  "TX"
  'lDetailDataSet.FindField("LOCALTAXAMT").value = 17.32 //For JE you can't override (i.e. system auto calc)
  lDetailDataSet.FindField("TaxInclusive").Value = 1
  lDetailDataSet.FindField("LocalDR").value = 306 '//Including GST if TAXINCLUSIVE = 1
  lDetailDataSet.FindField("DR").value = 306 '//If wanted DR <> LocalDR
  
  'For Tax Exclusive 
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("SEQ").value = 2
  lDetailDataSet.FindField("Code").value = "605-200"
  lDetailDataSet.FindField("Project").value = "----"
  lDetailDataSet.FindField("Description").value = "testing desc2"
  lDetailDataSet.FindField("Tax").value =  "TX"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("LocalCR").value = 100
  lDetailDataSet.Post 

  'For No GST
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("SEQ").value = 3
  lDetailDataSet.FindField("Code").value = "610-002"
  lDetailDataSet.FindField("Project").value = "----"
  lDetailDataSet.FindField("Description").value =  "testing desc3"
  lDetailDataSet.FindField("Tax").value =  ""
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("LocalCR").value = 200
  lDetailDataSet.Post 
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  MsgBox "Done"
End Function

GL_JE-Edit

GL_JE-Edit Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call CheckLogin
Call GetData
Call PostData

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM GL_JE "
  lSQL = lSQL & "WHERE DocNo='JV-00002' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function PostData
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_JE") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Doc Number
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
  
  
    BizObject.Open
    BizObject.Edit
    lMain.Edit
	lMain.FindField("Description").AsString = "Journal - Edited" 
  
  'Step 5: Delete all Detail
    While lDetail.RecordCount <> 0
      lDetail.First
	  lDetail.Delete
    Wend
  'Step 6: Append Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value = -1
  lDetail.FindField("Code").value = "610-000"
  lDetail.FindField("Description").value =  "testing desc1"
  lDetail.FindField("Project").value = "P12W1"
  lDetail.FindField("Tax").value =  ""
  lDetail.FindField("TaxInclusive").value =  0
  lDetail.FindField("LocalDR").value = 200
  lDetail.FindField("DR").value = 200
  lDetail.Post 

  lDetail.Append
  lDetail.FindField("DtlKey").value = -1
  lDetail.FindField("Code").value = "531-000"
  lDetail.FindField("Description").value =  "testing desc2"
  lDetail.FindField("Project").value = "P13W1"
  lDetail.FindField("Tax").value =  ""
  lDetail.FindField("TaxInclusive").value =  0
  lDetail.FindField("LocalCR").value = 200
  lDetail.FindField("CR").value = 200
  lDetail.Post 
  
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
  
  'Step 8 : Logout after done  
    'ComServer.Logout  
    MsgBox "Done" 
	Else
	MsgBox "Record Not Found" 
  END IF 
End Function

GL_JE-Delete

GL_JE-Delete Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg GL_JE.vbs
Call CheckLogin
Call GetData
Call DelData

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM GL_JE "
  lSQL = lSQL & "WHERE DocNo='JV-00002' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function DelData
Dim BizObject
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_JE") 
  'Step 3 : Find Doc Number
  If lDataSet.RecordCount > 0 Then 
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString
    BizObject.Open
    BizObject.Delete
    BizObject.Close
  
  'Step 4 : Logout after done  
    'ComServer.Logout  
    MsgBox "Done" 
	Else
	MsgBox "Record Not Found" 
  END IF 	
End Function

Get Invoice Next Number

Get Invoice Next Number Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg GetNextNo.vbs
Call CheckLogin
Call GetData
Call ShowNextNo

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A "
  lSQL = lSQL & "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) "
  lSQL = lSQL & "WHERE A.DOCTYPE='IV' "
  lSQL = lSQL & "AND A.DESCRIPTION='Customer Invoice' "
  lSQL = lSQL & "AND A.STATESET=1 "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function ShowNextNo 
Dim Desc, Fmt, NextNo, lResult, sb
  set sb = CreateObject("System.Text.StringBuilder")
  'Step 2 : Find Doc Number
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    Desc = lDataSet.FindField("Description").AsString
	Fmt  = lDataSet.FindField("Format").AsString
	NextNo = lDataSet.FindField("NEXTNUMBER").Value
	
	'Convert from IV-%.5d to IV-{0:d5}
	sb.Append_3 Fmt
	sb.Replace "d", ""
	sb.Replace "%.","{0:d"
	Fmt = sb.ToString & "}"
	
	sb.Length = 0 'clear sb list
	sb.AppendFormat Fmt, NextNo
	
	lResult = sb.ToString
    MsgBox Desc
	MsgBox Fmt
	MsgBox NextNo
	MsgBox lResult
	Else
	MsgBox "Record Not Found" 
  END IF    
End Function

Auto Run Doc. Number

Sales Order Auto Run Doc Number Script
'Copy below script & paste to notepad & name it as eg SL_SO.vbs
'If had prompt Set Default - Just click Yes to avoid keep prompt
Call CheckLogin
Call GetData
Call InsertData

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT * FROM SY_DOCNO "
  lSQL = lSQL & "WHERE DESCRIPTION='Customer Sales Order 2' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function


Function InsertData
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("SL_SO") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2019")
  BizObject.New
  lMain.FindField("DocKey").value         = -1
  lMain.FindField("DocNo").AsString       = "<<New>>"
  lMain.FindField("DocDate").value        = lDate
  lMain.FindField("PostDate").value       = lDate
  lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
  lMain.FindField("CompanyName").AsString = "Cash Sales"
  lMain.FindField("Address1").AsString    = "" 'Optional
  lMain.FindField("Address2").AsString    = "" 'Optional
  lMain.FindField("Address3").AsString    = "" 'Optional
  lMain.FindField("Address4").AsString    = "" 'Optional
  lMain.FindField("Phone1").AsString      = "" 'Optional
  lMain.FindField("Description").AsString = "Sales Order"
  lMain.FindField("DocNoSetKey").value    = lDataSet.FindField("DocKey").value
    
  'Step 5: Insert Data - Detail
  'For With Item Code
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("DocKey").value         = -1
  lDetail.FindField("Seq").value            = 3
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("Qty").AsFloat          = 2
  lDetail.FindField("UOM").AsString         = "UNIT"
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("Tax").AsString         = ""
  lDetail.FindField("TaxRate").AsString     = ""
  lDetail.FindField("TaxInclusive").value   = 0
  lDetail.FindField("UnitPrice").AsFloat    = 100  
  lDetail.FindField("Amount").AsFloat       = 200
  lDetail.FindField("TaxAmt").AsFloat       = 0
  lDetail.Post

  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  
  'Step 7 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Done"  
End Function

GL_PV

Cash Book PV Script
'Copy below script & paste to notepad & name it as eg AR_PM.vbs
Call PostData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function PostData
Dim ComServer, BizObject, lIVNo, lDate
 
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF
 
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_PV") 
 
  'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
  
  'Step 4 : Posting
    lDate = CDate("January 23, 2020")
    BizObject.New
    lMain.FindField("DOCKEY").Value           = -1
    lMain.FindField("DocNo").AsString         = "--CB PV Test--" 
    lMain.FindField("DocDate").Value          = lDate
    lMain.FindField("PostDate").Value         = lDate
    lMain.FindField("Description").AsString   = "Compacc System"
    lMain.FindField("PaymentMethod").AsString = "310-001"
	lMain.FindField("CHEQUENUMBER").AsString = "MBB 213245"
    lMain.FindField("DocAmt").AsFloat         = 2019.57
    lMain.FindField("Cancelled").AsString     = "F"
	lMain.Post
  
    lDetailDataSet.Append
    lDetailDataSet.FindField("DTLKEY").value = -1
	lDetailDataSet.FindField("DOCKEY").value = -1
	lDetailDataSet.FindField("Code").AsString = "200-300"
    lDetailDataSet.FindField("DESCRIPTION").AsString = "Maybank - Asus A555LD-xx313H"
	lDetailDataSet.FindField("TAX").AsString = ""
	lDetailDataSet.FindField("TAXAMT").AsFloat = 0
	lDetailDataSet.FindField("TAXINCLUSIVE").AsFloat = 0
	lDetailDataSet.FindField("AMOUNT").AsFloat = 2019.57
    lDetailDataSet.Post

  'Step 5: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
End Function

ST_Item with Opening

ST_Item with Opening Script
'Copy below script & paste to notepad & name it as eg ST_XF.vbs
Call CheckLogin
Call InsertData

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData
Dim BizObject, lMain, lDtl, lOpn
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_ITEM") 

  'Step 3: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDtl = BizObject.DataSets.Find("cdsUOM") 'lDetail contains detail data  
  Set lOpn = BizObject.DataSets.Find("cdsOpeningBalance") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  BizObject.New
  lMain.FindField("CODE").value = "==Test New Item Code=="
  lMain.FindField("DESCRIPTION").value = "Item Description 123"
  lMain.FindField("STOCKGROUP").value = "DEFAULT"
  lMain.FindField("STOCKCONTROL").value = "T"
  lMain.FindField("ISACTIVE").value = "T"
			    
  'Step 5: Insert Data - Detail
  lDtl.Edit 'For 1St UOM
  lDtl.FindField("UOM").AsString = "PCS"
  lDtl.FindField("Rate").AsFloat = 1
  lDtl.FindField("RefCost").AsFloat = 10.2
  lDtl.FindField("RefPrice").AsFloat = 25
  lDtl.Post

  lDtl.Append 'For 2nd UOM
  lDtl.FindField("UOM").AsString = "CTN"
  lDtl.FindField("Rate").AsFloat = 12
  lDtl.FindField("RefCost").AsFloat = 102
  lDtl.FindField("RefPrice").AsFloat = 240
  lDtl.Post
  
  'Step 6: Insert Data - Opening
  lOpn.Append 
  lOpn.FindField("LOCATION").AsString = "----"
  lOpn.FindField("Qty").AsFloat = 10 'in smallest UOM'
  lOpn.FindField("COST").AsFloat = 10.2
  lOpn.Post

  'Step 7: Save Document
  BizObject.Save
  BizObject.Close
  
  'Step 8 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Done"  
End Function

GL Stock Value-Insert,Edit & Delete

GL Stock Value Insert, Edit & Delete Script
'Available in Version 5.2018.833.759 & above
'Copy below script & paste to notepad & name it as eg GLStockValue.vbs
Call CheckLogin
Call GetData
'Call InsertValue
'Call UpdateValue
Call DeleteValue

Dim ComServer, lDataSet

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function GetData
Dim lSQL
  lSQL = "SELECT Dockey FROM GL_STOCK "
  lSQL = lSQL & "WHERE BalanceStock='330-000' "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
End Function

Function InsertValue
Dim BizObject, lMain, lDetail
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Dockey Record
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString  
	
    BizObject.Open
    BizObject.Edit
	
    lDetail.Append
    lDetail.FindField("Project").value = "----"
	lDetail.FindField("SYear").value = 2021
	lDetail.FindField("SMonth").value = 4
	lDetail.FindField("Amount").value = 423.00
    lDetail.Post
	
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  END IF	
End Function

Function UpdateValue
Dim BizObject, lMain, lDetail, v(2)
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Dockey Record
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString  
	
    BizObject.Open
    BizObject.Edit

    v(0) = "----" 'Project Code
    v(1) = "2021" 'Year
	v(2) = "3" 'Month to update
	
	if (lDetail.Locate("Project;SYear;SMonth", v, false, false)) then
      lDetail.Edit
      lDetail.FindField("Amount").value = 333.12      
      lDetail.Post
	End IF 
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  END IF	
End Function

Function DeleteValue
Dim BizObject, lMain, lDetail, v(2)
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("GL_STOCK") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
  'Step 4 : Find Dockey Record
  If lDataSet.RecordCount > 0 Then   
	lDataSet.First
    BizObject.Params.Find("DocKey").Value = lDataSet.FindField("DocKey").AsString  
	
    BizObject.Open
    BizObject.Edit

    v(0) = "----" 'Project Code
    v(1) = "2021" 'Year
	v(2) = "4" 'Month to update
	
	if (lDetail.Locate("Project;SYear;SMonth", v, false, false)) then
      lDetail.Delete
	End IF 
  'Step 6: Save Document
    BizObject.Save
    BizObject.Close
    MsgBox "Done"
  END IF	
End Function

Stock Item Template to SL_IV

Stock Item Template to SL_IV Script
'Updated 03 Sep 2021
'Copy below script & paste to notepad & name it as eg SL_IV.vbs
Call CheckLogin
Call InsertData1
Call InsertData2

Dim ComServer

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

function CheckLogin
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB"
	                'UserName, Password, DCF full path, Database filename
  END IF
End Function

Function InsertData1
Dim BizObject, lMain, lDetail, lDate
  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("ST_ITEM_TPL") 

  'Step 3: Set Dataset
  Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
  Set lDetail = BizObject.DataSets.Find("cdsItemTplDtl") 'lDetail contains detail data  
  
  'Begin Looping yr data
  'Step 4 : Insert Data - Master
  BizObject.New
  lMain.FindField("Code").AsString        = "--TPL Test--"
  lMain.FindField("Description").AsString = "Template formt 1"
  lMain.FindField("RefPrice").AsFloat     = 299.15
    
  'Step 5: Insert Data - Detail
  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("Code").AsString        = "--TPL Test--"
  lDetail.FindField("Seq").value            = 1
  lDetail.FindField("ItemCode").AsString    = "ANT"
  lDetail.FindField("Description").AsString = "Sales Item A"
  lDetail.FindField("UOM").AsString         = "BOX"
  lDetail.FindField("Qty").AsFloat          = 2
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("UNITAMOUNT").AsFloat    = 100  
  lDetail.FindField("Amount").AsFloat       = 200
  lDetail.FindField("PRINTABLE").AsString   = "T"
  lDetail.Post

  lDetail.Append
  lDetail.FindField("DtlKey").value         = -1
  lDetail.FindField("Code").AsString        = "--TPL Test--" 
  lDetail.FindField("Seq").value            = 2
  lDetail.FindField("ItemCode").AsString    = "COVER"
  lDetail.FindField("Description").AsString = "Sales Item B"
  lDetail.FindField("UOM").AsString         = "UNIT"
  lDetail.FindField("Qty").AsFloat          = 3
  'lDetail.FindField("DISC").AsString        = "5%+3" 'Optional (eg 5% plus 3 Discount)
  lDetail.FindField("UNITAMOUNT").AsFloat    = 10  
  lDetail.FindField("Amount").AsFloat       = 30
  lDetail.FindField("PRINTABLE").AsString   = "T"
  lDetail.Post  
  'Step 6: Save Document
  BizObject.Save
  BizObject.Close
  MsgBox "Template Posting Done"  
End Function

Function InsertData2
Dim BizObject, lMain, lDetail, lDate, lDODtl, lSQL, v(2)
  'Step 1: Get Template Information
  lSQL = "SELECT * FROM ST_ITEM_TPLDTL "
  lSQL = lSQL & "WHERE Code='--TPL Test--' "
  Set lDODtl = ComServer.DBManager.NewDataSet(lSQL)

  if lDODtl.RecordCount > 0 then	
	'Step 2: Find and Create the Biz Objects
    Set BizObject = ComServer.BizObjects.Find("SL_IV") 

    'Step 3: Set Dataset
    Set lMain   = BizObject.DataSets.Find("MainDataSet")  'lMain contains master data
    Set lDetail = BizObject.DataSets.Find("cdsDocDetail") 'lDetail contains detail data  
  
    'Step 4 : Insert Data - Master
    lDate = CDate("January 1, 2021")
    BizObject.New
    lMain.FindField("DocKey").value         = -1
    lMain.FindField("DocNo").AsString       = "--IV Test--"
    lMain.FindField("DocDate").value        = lDate
    lMain.FindField("PostDate").value       = lDate
    lMain.FindField("Code").AsString        = "300-C0001" 'Customer Account
    lMain.FindField("CompanyName").AsString = "Cash Sales"
    'lMain.FindField("Address1").AsString    = "" 'Optional
    'lMain.FindField("Address2").AsString    = "" 'Optional
    'lMain.FindField("Address3").AsString    = "" 'Optional
    'lMain.FindField("Address4").AsString    = "" 'Optional
    'lMain.FindField("Phone1").AsString      = "" 'Optional
    lMain.FindField("Description").AsString = "Sales"
    
    'Step 6: Insert Data - Detail	
	lDODtl.First
    While not lDODtl.Eof
      lDetail.Append
      lDetail.FindField("DtlKey").value         = -1
      lDetail.FindField("DocKey").value         = -1
      lDetail.FindField("Seq").value            = 1
      lDetail.FindField("ItemCode").AsString    = lDODtl.FindField("ItemCode").AsString
      lDetail.FindField("Description").AsString = lDODtl.FindField("Description").AsString
      lDetail.FindField("UOM").AsString         = lDODtl.FindField("UOM").AsString
      lDetail.FindField("Qty").AsFloat          = lDODtl.FindField("Qty").AsFloat
      lDetail.FindField("DISC").AsString        = lDODtl.FindField("Disc").AsString
      lDetail.FindField("UnitPrice").AsFloat    = lDODtl.FindField("UnitAmount").AsFloat
      lDetail.FindField("Amount").AsFloat       = lDODtl.FindField("Amount").AsFloat
      lDetail.FindField("PRINTABLE").AsString   = lDODtl.FindField("PRINTABLE").AsString
      lDetail.Post
	  lDODtl.Next
	Wend
  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
  
  'Step 8 : Logout after done  
  'ComServer.Logout
  
  MsgBox "Posting IV Done"
  else MsgBox "--No Template found. Posting IV aborted"  
  End IF
End Function

AR_CN

AR_CN Script
'Updated 24 Feb 2023
'Copy below script & paste to notepad & name it as eg AR_CN.vbs
Call InsertData

Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function

Function InsertData
Dim ComServer, BizObject, lDate, lIVNO, v(1)

  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  If not ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0020.FDB" 
  END IF

  'Step 2: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("AR_CN") 

  'Step 3: Set Dataset
  Set lMainDataSet = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data
  Set lDetailDataSet = BizObject.DataSets.Find("cdsDocDetail") 'lDetailDataSet contains detail data  
  Set lKO = BizObject.DataSets.Find("cdsKnockOff") 'Contains IV/DN to knock off data  
  
  'Step 4 : Insert Data - Master
  lDate = CDate("January 1, 2023")
  BizObject.New
  lMainDataSet.FindField("DocKey").value = -1
  lMainDataSet.FindField("DocNo").value = "--CN Test--"
  lMainDataSet.FindField("DocDate").value = lDate
  lMainDataSet.FindField("PostDate").value = lDate
  lMainDataSet.FindField("Code").value = "300-A0001"
  lMainDataSet.FindField("Description").value = "Credit Note"
    
  'Step 5: Insert Data - Detail
  'For Tax Inclusive = True with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "510-2000"
  lDetailDataSet.FindField("Description").value =  "Sales Item A"
  lDetailDataSet.FindField("Tax").value =  "SV"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 410.37
  lDetailDataSet.FindField("TaxAmt").value = 24.63
  
  lDetailDataSet.DisableControls
  lDetailDataSet.FindField("TaxInclusive").value =  1
  lDetailDataSet.EnableControls
  
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post
  
  'For Tax Inclusive = False with override Tax Amount
  lDetailDataSet.Append
  lDetailDataSet.FindField("DtlKey").value = -1
  lDetailDataSet.FindField("DocKey").value = -1
  lDetailDataSet.FindField("Account").value = "510-2000"
  lDetailDataSet.FindField("Description").value =  "Sales Item B"
  lDetailDataSet.FindField("Tax").value =  "SV"
  lDetailDataSet.FindField("TaxInclusive").value =  0
  lDetailDataSet.FindField("Amount").value = 94.43
  lDetailDataSet.FindField("TaxAmt").value = 5.66
  lDetailDataSet.FindField("Changed").value = "F"
  lDetailDataSet.Post

  'Step 7: Knock Off IV
    lIVNO = "--IV Test--"
    v(0) = "IV"
    v(1) = lIVNO
	
    if (lKO.Locate("DocType;DocNo", v, false, false)) then
      lKO.Edit
      lKO.FindField("KOAmt").value = 65.57
      lKO.FindField("KnockOff").AsString = "T"
      lKO.Post
	End IF  

  'Step 7: Save Document
  BizObject.Save
  BizObject.Close
  MsgBox "Done"
End Function


JScript/JavaScript

This Script only can run using Internet Explorer (till IE 11)

AR_IV

AR_IV Script
<html>
<head>
<title>Add Customer Invoice</title>
<script language="JScript">
var ComServer;
 
function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}
 
function AutoInvoice() {
  var BizObject, lMainDataSet, lDetailDataSet;
 
  CreateSQLAccServer();
 
  BizObject = ComServer.BizObjects.Find('AR_IV');
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
  lDetailDataSet = BizObject.DataSets.Find('cdsDocDetail');
  BizObject.New();
 
  lMainDataSet.FindField('DocKey').value = -1;
  lMainDataSet.FindField('DocNo').value = "--IV Test--";
  lMainDataSet.FindField('DocDate').value = "01/10/2016";
  lMainDataSet.FindField('PostDate').value = "01/10/2016";
  lMainDataSet.FindField('Code').value = "300-A0003";
  lMainDataSet.FindField('Description').value = "Sales";

  /*For Tax Inclusive = True with override Tax Amount*/
  lDetailDataSet.Append();
  lDetailDataSet.FindField('DtlKey').value = -1;
  lDetailDataSet.FindField('DocKey').value = -1;
  lDetailDataSet.FindField('Account').value = "500-000";
  lDetailDataSet.FindField('Description').value =  "Sales Item A";
  lDetailDataSet.FindField('Tax').value =  "SR";
  lDetailDataSet.FindField('TaxInclusive').value =  0;
  lDetailDataSet.FindField('Amount').value = 410.37;
  lDetailDataSet.FindField('TaxAmt').value = 24.63;
 
  lDetailDataSet.DisableControls();
  lDetailDataSet.FindField('TaxInclusive').value =  1;
  lDetailDataSet.EnableControls();
 
  lDetailDataSet.FindField('Changed').value = "F";
  lDetailDataSet.Post();

  /*For Tax Inclusive = False with override Tax Amount*/
  lDetailDataSet.Append();
  lDetailDataSet.FindField('DtlKey').value = -1;
  lDetailDataSet.FindField('DocKey').value = -1;
  lDetailDataSet.FindField('Account').value = "500-000";
  lDetailDataSet.FindField('Description').value =  "Sales Item B";
  lDetailDataSet.FindField('Tax').value =  "SR";
  lDetailDataSet.FindField('TaxInclusive').value =  0;
  lDetailDataSet.FindField('Amount').value = 94.43;
  lDetailDataSet.FindField('TaxAmt').value = 5.66;
  lDetailDataSet.FindField('Changed').value = "F";
  lDetailDataSet.Post();

  /* Save document */  
    BizObject.Save();
    BizObject.Close();
    alert('Customer Invoice - has been saved.');
}
</script>
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="AutoInvoice()">
</body>
</html>

SL_CS

SL_CS Script
<html>
<head>
<title>Add Cash Sales</title>
<script language="JScript">
var ComServer;

function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}

function InsertData() {
  var BizObject, lMain, lDetail;
  
  CreateSQLAccServer();

  /*Step 2: Find and Create the Biz Objects*/
  BizObject = ComServer.BizObjects.Find('SL_CS') ;

  /*Step 3: Set Dataset*/
  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lDetail = BizObject.DataSets.Find('cdsDocDetail'); /*lDetail contains detail data */  
  
  /*Begin Looping yr data*/
  /*Step 4 : Insert Data - Master*/
  BizObject.New();
  lMain.FindField('DocKey').value         = -1;
  lMain.FindField('DocNo').AsString       = "--IV Test--";
  lMain.FindField('DocDate').value        = "20/12/2017";
  lMain.FindField('PostDate').value       = "20/12/2017";
  lMain.FindField('Code').AsString        = "300-C0001"; /*Customer Account*/
  lMain.FindField('CompanyName').AsString = "Cash Sales"
  lMain.FindField('Address1').AsString    = ""; /*Optional*/
  lMain.FindField('Address2').AsString    = ""; /*Optional*/
  lMain.FindField('Address3').AsString    = ""; /*Optional*/
  lMain.FindField('Address4').AsString    = ""; /*Optional*/
  lMain.FindField('Phone1').AsString      = ""; /*Optional*/
  lMain.FindField('Description').AsString = "Sales";
    
  /*Step 5: Insert Data - Detail*/
  /*For Tax Inclusive = True with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('DtlKey').value         = -1;
  lDetail.FindField('DocKey').value         = -1;
  lDetail.FindField('Seq').value            = 1;
  lDetail.FindField('Account').AsString     = "500-000"; /*Sales Account*/
  lDetail.FindField('Description').AsString = "Sales Item A";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString         = "SR";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 435;
  lDetail.FindField('Amount').AsFloat       = 410.37; /*Exclding GST Amt*/
  lDetail.FindField('TaxAmt').AsFloat       = 24.63;
  
  lDetail.DisableControls();
  lDetail.FindField('TaxInclusive').value   = 1;
  lDetail.EnableControls();
  
  lDetail.Post();
  
  /*For Tax Inclusive = False with override Tax Amount*/
  lDetail.Append();
  lDetail.FindField('DtlKey').value         = -1;
  lDetail.FindField('DocKey').value         = -1;
  lDetail.FindField('Seq').value            = 2;
  lDetail.FindField('Account').AsString     = "500-000";
  lDetail.FindField('Description').AsString = "Sales Item B";
  lDetail.FindField('Qty').AsFloat          = 1;
  lDetail.FindField('Tax').AsString         = "SR";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 94.43;
  lDetail.FindField('Amount').AsFloat       = 94.43;
  lDetail.FindField('TaxAmt').AsFloat       = 5.66;
  lDetail.Post();

  /*For With Item Code*/
  lDetail.Append();
  lDetail.FindField('DtlKey').value         = -1;
  lDetail.FindField('DocKey').value         = -1;
  lDetail.FindField('Seq').value            = 3;
  lDetail.FindField('ItemCode').AsString    = "ANT";
  lDetail.FindField('Description').AsString = "Sales Item B";
  /*lDetail.FindField('Account').AsString     = "500-000"; If you wanted override the Sales Account Code*/
  lDetail.FindField('Qty').AsFloat          = 2;
  lDetail.FindField('UOM').AsString         = "UNIT";
  /*lDetail.FindField('DISC').AsString        = "5%+3"; Optional (eg 5% plus 3 Discount)*/
  lDetail.FindField('Tax').AsString         = "SR";
  lDetail.FindField('TaxRate').AsString     = "6%";
  lDetail.FindField('TaxInclusive').value   = 0;
  lDetail.FindField('UnitPrice').AsFloat    = 100;
  lDetail.FindField('Amount').AsFloat       = 200;
  lDetail.FindField('TaxAmt').AsFloat       = 12;
  lDetail.Post();

  /*Step 6: Save Document*/
  BizObject.Save();
  BizObject.Close();
    alert('Document has been saved.');
}
</script>
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="InsertData()">
</body>
</html>

AR_PM

AR_PM Script
<html>
<head>
<title>Customer Payment</title>
<script language="JScript">
<html>
<head>
<title>Add Customer Payment</title>
<script language="JScript">
var ComServer;

function CreateSQLAccServer() {
  ComServer = new ActiveXObject("SQLAcc.BizApp");
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}

function AddPayment() {
  var BizObject, lMainDataSet, lKnockOffDataSet, V;
  
  CreateSQLAccServer();

  BizObject = ComServer.BizObjects.Find('AR_PM');
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
  lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
  BizObject.New();
  
  lMainDataSet.FindField('DocKey').value = -1;
  lMainDataSet.FindField('DocNo').value = "--OR Test--";
  lMainDataSet.FindField('Code').value = "300-C0001";
  lMainDataSet.FindField('DocDate').value = "10/10/2023";
  lMainDataSet.FindField('PostDate').value = "10/10/2023";  
  lMainDataSet.FindField('Description').value = "Payment for Account";
  lMainDataSet.FindField('PaymentMethod').value = "310-001";
  lMainDataSet.FindField('ChequeNumber').value = "";
  lMainDataSet.FindField('DocAmt').AsFloat = 106.10;
  lMainDataSet.FindField('BankCharge').AsFloat = 0;
  lMainDataSet.FindField('UnappliedAmt').AsFloat = 0;
  lMainDataSet.FindField('Cancelled').value = 'F';
  
  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType*/
  v.SetItem(1, 'IV-00172'); /*Knock Off DocNo*/

  if (lKnockOffDataSet.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){ 
          lKnockOffDataSet.Edit();
          lKnockOffDataSet.FindField('KOAmt').AsFloat = 106.10;		  
          lKnockOffDataSet.FindField('KnockOff').AsString = 'T';
          lKnockOffDataSet.Post(); }
    /* Save document */  
    BizObject.Save();
    BizObject.Close();
    alert("Customer Payment - has been saved.");
}

function EditPayment(){
  var BizObject, lMainDataSet, lKnockOffDataSet, V, lDocNo, lDocKey;
  
  CreateSQLAccServer();

  BizObject = ComServer.BizObjects.Find('AR_PM');
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
  lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
  
  lDocNo = "--OR Test--"
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
  BizObject.Params.Find('DocKey').Value = lDocKey;
  
  if (lDocKey != null) {
    BizObject.Open();
    BizObject.Edit();
    lMainDataSet.FindField('Description').value = "Payment for Account-Edited";
    lMainDataSet.FindField('PaymentMethod').value = "310-001";
    lMainDataSet.FindField('ChequeNumber').value = "";
    lMainDataSet.FindField('DocAmt').AsFloat = 200.00;
    lMainDataSet.FindField('BankCharge').AsFloat = 0;
    lMainDataSet.FindField('UnappliedAmt').AsFloat = 0;
    lMainDataSet.FindField('Cancelled').value = 'F';
  
    v = ComServer.CreateOleVariantArray(2);
    v.SetItem(0, 'IV'); /*Knock Off DocType*/
    v.SetItem(1, 'IV-00172'); /*Knock Off DocNo*/

    if (lKnockOffDataSet.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){ 
          lKnockOffDataSet.Edit();
          lKnockOffDataSet.FindField('KOAmt').AsFloat = 200;		  
          lKnockOffDataSet.FindField('KnockOff').AsString = 'T';
          lKnockOffDataSet.Post(); }
    /* Save document */  
      BizObject.Save();
      BizObject.Close();
      alert("Customer Payment - has been Edited & saved.");
   }
}

function DelPayment(){
  var BizObject, lMainDataSet, lKnockOffDataSet, V, lDocNo, lDocKey;
  
  CreateSQLAccServer();

  BizObject = ComServer.BizObjects.Find('AR_PM');
  lMainDataSet = BizObject.DataSets.Find('MainDataSet');
  lKnockOffDataSet = BizObject.DataSets.Find('cdsKnockOff');
  
  lDocNo = "--OR Test--"
  lDocKey = BizObject.FindKeyByRef('DocNo', lDocNo);
  BizObject.Params.Find('DocKey').Value = lDocKey;
  
  if (lDocKey != null) {
    BizObject.Open();
    BizObject.Delete();

    BizObject.Close();
    alert("Customer Payment - has been Deleted.");
   }
}
</script>
</head>
<body>
<input type="submit" value="Add Payment" name="btnSubmit" onclick="AddPayment()">
<input type="submit" value="Edit Payment" name="btnSubmit" onclick="EditPayment()">
<input type="submit" value="Delete Payment" name="btnSubmit" onclick="DelPayment()">
</body>
</html>

Customer.IV.RO

Customer.IV.RO Report Object Script
<html>
  <head>
    <title>Customer.IV.RO</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <script type="text/javascript">
var ComServer;

function CreateSQLAccServer() {
  ComServer = new ActiveXObject("SQLAcc.BizApp");
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}      

function GetData() {  
  var lMain, lDetail, lRptVar, lDateFrom, lDateTo;
  
  elem = document.getElementById('txt1');
  
  CreateSQLAccServer();
   
  lDateFrom = new Date("January 1 2015");
  lDateTo = new Date("December 31, 2015"); 
  
  lRptVar = ComServer.RptObjects.Find('Customer.IV.RO');
  lRptVar.Params.Find('SelectDate').Value           = true;
  lRptVar.Params.Find('DateFrom').Value             = lDateFrom.valueOf();
  lRptVar.Params.Find('DateTo').Value               = lDateTo.valueOf();
  lRptVar.Params.Find('AllAgent').Value             = false;
  lRptVar.Params.Find('AgentData').Value            = "----\nLF"; /*Filter by Agent code ---- & HALIM */
  lRptVar.Params.Find('AllArea').Value              = true;
  lRptVar.Params.Find('AllCompany').Value           = true;
  lRptVar.Params.Find('AllCurrency').Value          = true;
  lRptVar.Params.Find('AllDocProject').Value        = true;
  lRptVar.Params.Find('AllCompanyCategory').Value   = true;
  lRptVar.Params.Find('AllDocument').Value          = true;
  lRptVar.Params.Find('IncludeCancelled').Value   = false;
  lRptVar.Params.Find('PrintDocumentStyle').Value = false;
  lRptVar.Params.Find('AllItemProject').Value     = true;
  lRptVar.Params.Find('AllPaymentMethod').Value   = true;
  lRptVar.CalculateReport();  
  
  lMain   = lRptVar.DataSets.Find('cdsMain');
  lDetail = lRptVar.DataSets.Find('cdsDocDetail');
  /*alert("Count -" + lRptVar.DataSets.Find('cdsDocDetail').RecordCount);*/
  elem.innerHTML += 'From Main'+'\n';
    
  lMain.First(); 
  while (!lMain.eof) {
    elem.innerHTML += lMain.FindField('DocKey').AsString + ' ' +
	                  lMain.FindField('DocNo').AsString + ' ' + lMain.FindField('DocDate').AsString + ' '+
                      lMain.FindField('CompanyName').AsString + ' ' + lMain.FindField('DocAmt').AsString + '\n';
	lMain.Next();  
  }
  elem.innerHTML += 'End Main'+'\n\n';
  
  elem.innerHTML += 'From Detail'+'\n';
  lDetail.First(); 
  while (!lDetail.eof) {
    elem.innerHTML += lDetail.FindField('Dockey').AsString + ' ' + lDetail.FindField('Account').AsString + ' ' + 
	                  lDetail.FindField('Description').AsString + ' ' + lDetail.FindField('Amount').AsString + '\n';
	lDetail.Next();  
  }  
  elem.innerHTML += 'End Detail'+'\n\n';
}
	  
    </script>
  </head>
  <body>
    <form>
      <textarea id="txt1" rows="30" cols="116"></textarea>
      <input type="button" value="Calculate" onclick="GetData()">
    </form>
  </body>
</html>

Customer.RO

Customer.RO Report Object Script
<html>
<head>
<title>Add Customer Invoice</title>
<script language='JScript'>
var ComServer;
 
function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}

function GetCustomerData() {
  var RptObject, lDataSet, lDataSet2;
  edOutput.value = '';
  edOutput2.value = '';
  //Step 1: Create Com Server object
  CreateSQLAccServer();
  
  //Step 2: Find and Create the Report Objects
  RptObject = ComServer.RptObjects.Find('Customer.RO');
  
  //Step 3: Spool parameters
  RptObject.Params.Find('AllAgent').Value = true;
  RptObject.Params.Find('AllArea').Value = true;
  RptObject.Params.Find('AllCompany').Value = true;
  RptObject.Params.Find('AllCompanyCategory').Value = true;
  RptObject.Params.Find('AllCurrency').Value = true;
  RptObject.Params.Find('AllTerms').Value = true;
  RptObject.Params.Find('SelectDate').Value = true;
  RptObject.Params.Find('PrintActive').Value = true;
  RptObject.Params.Find('PrintInactive').Value = false;
  RptObject.Params.Find('PrintPending').Value = false;
  RptObject.Params.Find('PrintProspect').Value = false;
  RptObject.Params.Find('PrintSuspend').Value = false;
  //RptObject.Params.Find('CompanyData').Value = '300-A0003';
  
  //Step 4: Perform Report calculation 
  RptObject.CalculateReport();
  lDataSet = RptObject.DataSets.Find('cdsMain');
  lDataSet2 = RptObject.DataSets.Find('cdsBranch');
  
  //alert('Count ' + lDataSet.RecordCount);

  //Step 5 Retrieve the output 
  lDataSet.First;
  while  (!lDataSet.eof){
    edOutput.value = edOutput.value + 
	                'Code : ' + lDataSet.FindField('Code').AsString + '\n' + 
	                'Company Name : ' + lDataSet.FindField('CompanyName').AsString +'\n\n';
	lDataSet.Next();
  }
  lDataSet2.First();
  while (!lDataSet2.eof){
	  edOutput2.value = edOutput2.value + 
	                   'Code : '+ lDataSet2.FindField('Code').AsString + '\n' + 
					   'Branch Name : '+ lDataSet2.FindField('BranchName').AsString + '\n' + 
	                   'Address 1 : '+ lDataSet2.FindField('Address1').AsString + '\n' + 
					   'Address 2 : '+ lDataSet2.FindField('Address2').AsString + '\n' + 
					   'Address 3 : '+ lDataSet2.FindField('Address3').AsString + '\n' + 
					   'Address 4 : '+ lDataSet2.FindField('Address4').AsString + '\n' + 
					   'Phone 1 : '+ lDataSet2.FindField('Phone1').AsString  +'\n\n';
	  lDataSet2.Next();
    }
	
}

</script>
</head>
<body>
  <table>
    <tr>
      <th>Main Table</th>
      <th>Branch Branch</th>
    </tr>
    <tr>
      <td>
        <TEXTAREA rows=15 cols=75 name="edOutput"></TEXTAREA>
	  </td>
      <td>
        <TEXTAREA rows=15 cols=75 name="edOutput2"></TEXTAREA>
	  </td>
    </tr>		
  </table>
		
  <table width="83%">
	<tr>
	  <td align="center">
		<input type='submit' value='Sync Data' name='btnSubmit' onclick='GetCustomerData()'>
	  </td>
	</tr>
  </table>
</body>
</html>

Get Next IV Number

Get Next IV Number Script
<html>
<head>
<title>Add Cash Sales</title>
<script language="JScript">
var ComServer, lDataSet;

function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}

function zeroPad(num, places) {
  var zero = places - num.toString().length + 1;
  return Array(+(zero > 0 && zero)).join("0") + num;
  /*zeroPad(5, 2); // "05"*/
}

function GetData() {
  var lSQL;
  lSQL = "SELECT A.*, B.NEXTNUMBER FROM SY_DOCNO A ";
  lSQL = lSQL + "INNER JOIN SY_DOCNO_DTL B ON (A.DOCKEY=B.PARENTKEY) ";
  lSQL = lSQL + "WHERE A.DOCTYPE='IV' ";
  lSQL = lSQL + "AND A.DESCRIPTION='Customer Invoice' ";
  lSQL = lSQL + "AND A.STATESET=1 ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);  
}

function ShowNextNo() {
  var Desc, Fmt, NextNo, lResult, lPad;
  
  CreateSQLAccServer();  
  GetData();

  if (lDataSet.RecordCount > 0) {   
    lDataSet.First;
    Desc = lDataSet.FindField("Description").AsString;
	Fmt  = lDataSet.FindField("Format").AsString;
	NextNo = lDataSet.FindField("NEXTNUMBER").Value;
    alert(Desc);
	alert(Fmt);
	alert(NextNo);
	
	lPad = Fmt.substr(5, 1);
	lPad = zeroPad(NextNo, lPad)
	Desc = Fmt.substr(0, 3);
	alert(Desc + lPad);
  }	
}
</script>
</head>
<body>
<input type="submit" value="Show Next No" name="btnSubmit" onclick="ShowNextNo()">
</body>
</html>

Customer & Supplier Contra

Customer & Supplier Contra Script
<html>
<head>
<title>Add Customer Invoice</title>
<script language="JScript">
var ComServer;
 
function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}
 
function PostARCT() {
  var BizObject, lMain, lKO, V;
 
  CreateSQLAccServer();
 
  BizObject = ComServer.BizObjects.Find('AR_CT');
  lMain = BizObject.DataSets.Find('MainDataSet');
  lKO = BizObject.DataSets.Find('cdsKnockOff');
  BizObject.New();
 
  lMain.FindField('DocKey').value = -1;
  lMain.FindField('DocNo').value = "--CT Test--";
  lMain.FindField('DocDate').value = "01/10/2020";
  lMain.FindField('PostDate').value = "01/10/2020";
  lMain.FindField('Code').value = "300-A0002";
  lMain.FindField('Description').value = "Contra";
  lMain.FindField('DocAmt').value = "100.00";
  //lMain.FindField('UnappliedAmt').value = "0";

  v = ComServer.CreateOleVariantArray(2);
  v.SetItem(0, 'IV'); /*Knock Off DocType*/
  v.SetItem(1, 'IV-00021'); /*Knock Off DocNo*/

  if (lKO.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){ 
          lKO.Edit();
          lKO.FindField('DocAmt').value = "100";		  
          lKO.FindField('KnockOff').AsString = 'T';
          lKO.Post(); }

  /* Save document */  
    BizObject.Save();
    BizObject.Close();
    alert('Customer Contra - has been saved.');
}

function PostAPST() {
  var BizObject, lMain, lKO, V, lDocNo, lDocKey;
 
  CreateSQLAccServer();
 
  BizObject = ComServer.BizObjects.Find('AP_ST');
  lMain = BizObject.DataSets.Find('MainDataSet');
  lKO = BizObject.DataSets.Find('cdsKnockOff');
  
  lDocNo = "--CT Test--"
  lDocKey = BizObject.FindKeyByRef("DocNo", lDocNo)
  BizObject.Params.Find("DocKey").Value = lDocKey  
  
  if (lDocKey != null) {
    BizObject.Open();
	BizObject.Edit();
	lMain.FindField('Code').value = "400-C0001";
	lMain.FindField('DocAmt').value = "100.00";
  //lMain.FindField('UnappliedAmt').value = "0";

   v = ComServer.CreateOleVariantArray(2);
   v.SetItem(0, 'PI'); /*Knock Off DocType*/
   v.SetItem(1, 'PI-00001'); /*Knock Off DocNo*/

    if (lKO.Locate('DocType;DocNo', v.AsOleVariant(), false, false)){ 
          lKO.Edit();
          lKO.FindField('DocAmt').value = "100";		  
          lKO.FindField('KnockOff').AsString = 'T';
          lKO.Post(); }

  /* Save document */  
    BizObject.Save();  
    BizObject.Close();
    alert('Supplier Contra - has been Updated.');	
  }
}
</script>
</head>
<body>
<button onclick="javascript:PostARCT();">PostARCT</button>&nbsp;&nbsp;
<button onclick="javascript:PostAPST();">PostAPST</button>&nbsp;&nbsp;
</body>
</html>

Add Stock Item

Add ST_Item Script
<html>
<head>
<title>Add Stock Item</title>
<script language="JScript">
var ComServer;

function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}

function InsertData() {
  var BizObject, lMain, lDetail;
  
  CreateSQLAccServer();

  /*Step 2: Find and Create the Biz Objects*/
  BizObject = ComServer.BizObjects.Find('ST_ITEM') ;

  /*Step 3: Set Dataset*/
  lMain   = BizObject.DataSets.Find('MainDataSet');  /*lMain contains master data*/
  lUOM = BizObject.DataSets.Find('cdsUOM'); /*lDetail contains detail data */  
  
  /*Begin Looping yr data*/
  /*Step 4 : Insert Data - Master*/
  BizObject.New();
  lMain.FindField('Code').AsString        = "Code JScript";
  lMain.FindField('DESCRIPTION').AsString = "Post from JScript"
  lMain.FindField('STOCKGROUP').AsString    = "DEFAULT"; /*Optional*/
  lMain.FindField('STOCKCONTROL').AsString    = "T"; /*Optional*/
  lMain.FindField('ISACTIVE').AsString    = "T"; /*Optional*/
    
  /*Step 5: Insert Data - UOM*/
  lUOM.Edit(); /*For 1St UOM*/
  lUOM.FindField('UOM').AsString = "PCS";
  lUOM.FindField('Rate').AsFloat = 1;
  lUOM.FindField('RefCost').AsFloat = 10.2;
  lUOM.FindField('RefPrice').AsFloat = 25;
  lUOM.Post();

  lUOM.Append(); /*For 2nd UOM*/
  lUOM.FindField('UOM').AsString = "CTN";
  lUOM.FindField('Rate').AsFloat = 12;
  lUOM.FindField('RefCost').AsFloat = 102;
  lUOM.FindField('RefPrice').AsFloat = 240;
  lUOM.Post();

  /*Step 6: Save*/
  BizObject.Save();
  BizObject.Close();
    alert('Item has been saved.');
}
</script>
</head>
<body>
<input type="submit" value="SYNC" name="btnSubmit" onclick="InsertData()">
</body>
</html>

Get Company Profile

Get Company Profile Script
<html>
<head>
<title>Add Cash Sales</title>
<script language="JScript">
var ComServer, lDataSet;

function CreateSQLAccServer() {
  ComServer = new ActiveXObject('SQLAcc.BizApp');
  if (!ComServer.IsLogin) {            /* check whether user has logon */
    ComServer.Login('ADMIN', 'ADMIN', 'C\:\\eStream\\SQLAccounting\\Share\\DEFAULT.DCF', 'SAMPLE.FDB');
 /* UserName, Password */
  }
}

function zeroPad(num, places) {
  var zero = places - num.toString().length + 1;
  return Array(+(zero > 0 && zero)).join("0") + num;
  /*zeroPad(5, 2); // "05"*/
}

function GetData() {
  var lSQL;
  lSQL = "SELECT COMPANYNAME, REMARK, BRN, BRN2, GSTNO, ";
  lSQL = lSQL + "SALESTAXNO, SERVICETAXNO, ";
  lSQL = lSQL + "ADDRESS1,ADDRESS2,ADDRESS3,ADDRESS4 FROM SY_PROFILE ";
  lDataSet = ComServer.DBManager.NewDataSet(lSQL);  
}

function ShowCoProfile() {
  var CoName, Rmk, BRN;
  
  CreateSQLAccServer();  
  GetData();

  if (lDataSet.RecordCount > 0) {   
    lDataSet.First;
    CoName = lDataSet.FindField("COMPANYNAME").AsString;
	Rmk  = lDataSet.FindField("REMARK").AsString;
	BRN = lDataSet.FindField("BRN").Value;
    alert(CoName);
	alert(Rmk);
	alert(BRN);
  }	
}
</script>
</head>
<body>
<input type="submit" value="Show Co Profile" name="btnSubmit" onclick="ShowCoProfile()">
</body>
</html>


Delphi

The below example is assuming after you had check the login status.

GL_JE

GL_JE Script
procedure TfmMain.dxbb_GL_JEClick(Sender: TObject);
var BizApp, lMain, lDtl, lBizObj, lDocKey : Variant;
    i : integer;
begin
  BizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lBizObj := BizApp.BizObjects.Find('GL_JE');
    lMain   := lBizObj.DataSets.Find('MainDataSet');
    lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
    lBizObj.New;
    lMain.FindField('DOCKEY').Value        := -1;
    lMain.FindField('DocNo').Value         := '--JE Test--';
    lMain.FindField('DocDate').Value       := '28 Aug 2017';
    lMain.FindField('PostDate').Value      := '28 Aug 2017';
    lMain.FindField('TAXDATE').Value       := '28 Aug 2017';
    lMain.FindField('Description').Value   := 'Postage';
    lMain.FindField('Cancelled').Value     := 'F';
    lMain.FindField('DOCNOSETKEY').Value   := 0;
    lMain.Post;

    //For Tax Inclusive
    lDtl.Append;
    lDtl.FindField('DTLKEY').Value       := -1;
    lDtl.FindField('DOCKEY').Value       := -1;
    lDtl.FindField('SEQ').Value          := 1;
    lDtl.FindField('CODE').Value         := '610-1000';
    lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 1';
    lDtl.FindField('TAX').Value          := 'TX';
//    lDtl.FindField('LOCALTAXAMT').AsFloat := 17.32;//For JE you can't override (i.e. system auto calc)
    lDtl.FindField('TAXINCLUSIVE').Value  := 1;
    lDtl.FindField('LocalDR').AsFloat     := 306;//Including GST if TAXINCLUSIVE = 1
    lDtl.FindField('DR').AsFloat          := 306;//if wanted DR <> LocalDR
    lDtl.FindField('CHANGED').Value       := 'F';
    lDtl.Post;

    //For Tax Exclusive
    lDtl.Append;
    lDtl.FindField('DTLKEY').Value       := -1;
    lDtl.FindField('DOCKEY').Value       := -1;
    lDtl.FindField('SEQ').Value          := 2;
    lDtl.FindField('CODE').Value         := '605-200';
    lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 2';
    lDtl.FindField('TAX').Value          := 'TX';
    lDtl.FindField('TAXINCLUSIVE').Value := 0;
    lDtl.FindField('LocalCR').AsFloat    := 100;
    lDtl.FindField('CHANGED').Value      := 'F';
    lDtl.Post;

    //For No GST
    lDtl.Append;
    lDtl.FindField('DTLKEY').Value       := -1;
    lDtl.FindField('DOCKEY').Value       := -1;
    lDtl.FindField('SEQ').Value          := 3;
    lDtl.FindField('CODE').Value         := '610-002';
    lDtl.FindField('DESCRIPTION').Value  := 'Item Desc 3';
    lDtl.FindField('TAX').Value          := '';
    lDtl.FindField('TAXINCLUSIVE').Value  := 0;
    lDtl.FindField('LocalCR').AsFloat     := 200;
    lDtl.FindField('CHANGED').Value       := 'F';
    lDtl.Post;

    lBizObj.Save;
    MessageDlg('GL_JE-DocNo : ''--JE Test--'' Posted...', mtInformation, [mbOK],0);
  finally
    lBizObj.Close;
  end;
end;

GL_PV

GL_PV Script
procedure TfmMain.dxbb_GLPVClick(Sender: TObject);
var lMain, lDtl, lBizObj, BizApp : Variant;
    lTime : TDateTime;
begin
  lTime := Now;
  BizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lBizObj := BizApp.BizObjects.Find('GL_PV');
    lMain   := lBizObj.DataSets.Find('MainDataSet');
    lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
    lBizObj.New;
    lMain.FindField('DOCKEY').Value           := -1;
    lMain.FindField('DocNo').AsString         := '--CB PV Test1--';
    lMain.FindField('DocDate').Value          := '18 Aug 2015';
    lMain.FindField('PostDate').Value         := '18 Aug 2015';
    lMain.FindField('TAXDATE').Value          := '18 Aug 2015';
    lMain.FindField('Description').AsString   := 'Compacc System';
    lMain.FindField('PAYMENTMETHOD').AsString := '310-001';
    lMain.FindField('CHEQUENUMBER').AsString  := 'MBB 213245';
    lMain.FindField('DocAmt').AsFloat         := 2019;
    lMain.FindField('Cancelled').AsString     := 'F';
    lMain.FindField('CHANGED').AsString       := 'F';
    lMain.Post;

    lDtl.Append;
    lDtl.FindField('DTLKEY').Value         := -1;
    lDtl.FindField('DOCKEY').Value         := -1;
    lDtl.FindField('Code').AsString        := '200-300';
    lDtl.FindField('DESCRIPTION').AsString := 'Maybank - Asus A555LD-xx313H';
    lDtl.FindField('TAX').AsString         := 'TX';
    lDtl.FindField('TAXAMT').AsFloat       := 114.28;
    lDtl.FindField('TAXINCLUSIVE').Value   := 1;
    lDtl.FindField('AMOUNT').AsFloat       := 2019;
    lDtl.FindField('CHANGED').AsString     := 'F';
    lDtl.Post;
    lBizObj.Save;
    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lBizObj.Close;
  end;
end;

AR_Customer

AR_Customer Script
procedure TfmMain.dxbb_CustomerClick(Sender: TObject);
var lMain, lDtl, lBizObj, lBizApp, lDockey : Variant;
    lTime : TDateTime;
begin
  lTime := Now;
  lBizApp := CreateOleObject('SQLAcc.BizApp');

  lBizObj := lBizApp.BizObjects.Find('AR_Customer');
  lMain   := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsBranch');

  lDocKey := lBizObj.FindKeyByRef('CODE', 'FAIRY');
  try
    if VarIsNull(lDocKey) then begin
      lBizObj.New;
      lMain.FindField('Code').value        := 'FAIRY';
      lMain.FindField('CompanyName').value := 'FAIRY TAIL';

      lDtl.Edit; //For 1st Branch
      lDtl.FindField('BranchName').AsString := 'BILLING';
      lDtl.FindField('Address1').AsString   := 'Address1';
      lDtl.FindField('Address2').AsString   := 'Address2';
      lDtl.FindField('Address3').AsString   := 'Address3';
      lDtl.FindField('Address4').AsString   := 'Address4';
      lDtl.FindField('Attention').AsString  := 'Attention';
      lDtl.FindField('Phone1').AsString     := 'Phone1';
      lDtl.FindField('Fax1').AsString       := 'Fax1';
      lDtl.FindField('Email').AsString      := 'EmailAddress';
      lDtl.Post;

      lDtl.Append; //For 2nd Branch
      lDtl.FindField('BranchName').AsString := 'Branch1';
      lDtl.FindField('Address1').AsString   := 'DAddress1';
      lDtl.FindField('Address2').AsString   := 'DAddress2';
      lDtl.FindField('Address3').AsString   := 'DAddress3';
      lDtl.FindField('Address4').AsString   := 'DAddress4';
      lDtl.FindField('Attention').AsString  := 'DAttention';
      lDtl.FindField('Phone1').AsString     := 'DPhone1';
      lDtl.FindField('Fax1').AsString       := 'DFax1';
      lDtl.FindField('Email').AsString      := 'DEmailAddress';
      lDtl.Post;
    end else begin
      lBizObj.Params.Find('Code').AsString := 'FAIRY';
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('CompanyName').AsString := 'FAIRY TAIL WIZARD';

      while lDtl.RecordCount > 0 do begin
        lDtl.First;
        lDtl.Delete;
      end;

      lDtl.Append; //For 1st Branch
      lDtl.FindField('BranchType').AsString := 'B';
      lDtl.FindField('BranchName').AsString := 'BILLING';
      lDtl.FindField('Address1').AsString   := 'New Address1';
      lDtl.FindField('Address2').AsString   := 'New Address2';
      lDtl.FindField('Address3').AsString   := 'New Address3';
      lDtl.FindField('Address4').AsString   := 'New Address4';
      lDtl.FindField('Attention').AsString  := 'New Attention';
      lDtl.FindField('Phone1').AsString     := 'New Phone1';
      lDtl.FindField('Fax1').AsString       := 'New Fax1';
      lDtl.FindField('Email').AsString      := 'New EmailAddress';
      lDtl.Post;

      lDtl.Append; //For 2nd Branch
      lDtl.FindField('BranchType').AsString := 'D';
      lDtl.FindField('BranchName').AsString := 'New Branch1';
      lDtl.FindField('Address1').AsString   := 'New DAddress1';
      lDtl.FindField('Address2').AsString   := 'New DAddress2';
      lDtl.FindField('Address3').AsString   := 'New DAddress3';
      lDtl.FindField('Address4').AsString   := 'New DAddress4';
      lDtl.FindField('Attention').AsString  := 'New DAttention';
      lDtl.FindField('Phone1').AsString     := 'New DPhone1';
      lDtl.FindField('Fax1').AsString       := 'New DFax1';
      lDtl.FindField('Email').AsString      := 'New DEmailAddress';
      lDtl.Post;

    end;
    lBizObj.Save;

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lBizObj.Close;
    lBizApp := null;
  end;
end;

AR_PM

AR_PM Script
procedure TfmMain.dxbb_ARPMClick(Sender: TObject);
var lMain, lKO, lBizApp, lBizObj, V : Variant;
begin
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lBizObj := lBizApp.BizObjects.Find('AR_PM');
    lMain   := lBizObj.DataSets.Find('MainDataSet');
    lKO     := lBizObj.DataSets.Find('cdsKnockOff');

    lBizObj.New;
    lMain.FindField('DOCKEY').Value           := -1;
    lMain.FindField('DocNo').AsString         := '--PM Test--'; //Payment Document Number
    lMain.FindField('CODE').AsString          := '300-A0001';
    lMain.FindField('DocDate').Value          := '28 Aug 2016';
    lMain.FindField('PostDate').Value         := '28 Aug 2016';
    lMain.FindField('Description').AsString   := 'Payment for A/c';
    lMain.FindField('PaymentMethod').AsString := '320-000';
    lMain.FindField('DocAmt').AsFloat         := 1060;
    lMain.FindField('Cancelled').AsString     := 'F';

    V := lBizApp.CreateOleVariantArray(2);
    V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
    V.SetItem(1, '--IV Test--');  //Invoice Document Number

    if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
      begin
        lKO.Edit;
        lKO.FindField('KOAmt').ASFloat     := 500;
        lKO.FindField('KnockOff').AsString := 'T';
        lKO.Post;
      end;

    lBizObj.Save;
    MessageDlg('AR_PM-DocNo : ''--PM Test--'' Posted...', mtInformation, [mbOK],0);
  finally
    lBizObj.Close;
  end;
end;

AR_PM-Edit

AR_PM Script
procedure TfmMain.dxbb_ARPMClick(Sender: TObject);
var lMain, lKO, lBizApp, lBizObj, V : Variant;
begin
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lBizObj := lBizApp.BizObjects.Find('AR_PM');
    lMain   := lBizObj.DataSets.Find('MainDataSet');
    lKO     := lBizObj.DataSets.Find('cdsKnockOff');

    lDocKey := lBizObj.FindKeyByRef('DocNo', '--PM Test--');
    lBizObj.Params.Find('DocKey').Value := VarToStr(lDocKey);

    If not VarIsNull(lDocKey) Then begin
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('DOCKEY').Value           := -1;
      lMain.FindField('DocDate').Value          := '28 Aug 2016';
      lMain.FindField('PostDate').Value         := '28 Aug 2016';
      lMain.FindField('Description').AsString   := 'Payment for A/c';
      lMain.FindField('PaymentMethod').AsString := '310-000';
      lMain.FindField('DocAmt').AsFloat         := 800.28;
      lMain.FindField('UnappliedAmt').AsFloat   := 100.28;
      lMain.FindField('Cancelled').AsString     := 'F';
      lMain.FindField('CHANGED').AsString       := 'F';

      V := lBizApp.CreateOleVariantArray(2);
      V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
      V.SetItem(1, '--IV Test--');  //Document Number

      if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
        begin
          lKO.Edit;
          lKO.FindField('KOAmt').AsFloat     := 700.28; // IV Knock Off/Offset Amount
          lKO.FindField('KnockOff').AsString := 'T';
          lKO.Post;
        end;

      lBizObj.Save;
      MessageDlg('AR_PM-DocNo : ''--PM Test--'' Updated...', mtInformation, [mbOK],0);
    end;
  finally
    lBizObj.Close;
  end;
end;

ST_Item

ST_Item Script
procedure TfmMain.dxbb_ST_ItemClick(Sender: TObject);
var lMain, lDtl, lBar, lBizObj, lDockey: Variant;
    lTime : TDateTime;
begin
  lTime := Now;
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizObj := lBizApp.BizObjects.Find('ST_ITEM');
  lMain   := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsUOM');
  lBar    := lBizObj.DataSets.Find('cdsBarcode');

  lDocKey := lBizObj.FindKeyByRef('Code', 'FAIRY');
  try
    if VarIsNull(lDocKey) then begin
      lBizObj.New;
      lMain.FindField('CODE').value := 'FAIRY';
      lMain.FindField('DESCRIPTION').value := 'FAIRY TAIL';
      lMain.FindField('STOCKGROUP').value := 'DEFAULT';
      lMain.FindField('STOCKCONTROL').value := 'T';
      lMain.FindField('ISACTIVE').value := 'T';

      lDtl.Edit; //For 1St UOM
      lDtl.FindField('UOM').AsString := 'PCS';
      lDtl.FindField('Rate').AsFloat := 1;
      lDtl.FindField('RefCost').AsFloat := 10.2;
      lDtl.FindField('RefPrice').AsFloat := 25;
      lDtl.Post;

      lDtl.Append; //For 2nd UOM
      lDtl.FindField('UOM').AsString := 'CTN';
      lDtl.FindField('Rate').AsFloat := 12;
      lDtl.FindField('RefCost').AsFloat := 102;
      lDtl.FindField('RefPrice').AsFloat := 240;
      lDtl.Post;

      lBar.Append; //For 1St UOM Barcode
      lBar.FindField('Barcode').AsString := '123456';
      lBar.FindField('UOM').AsString := 'PCS';
      lBar.Post;

      lBar.Append; //For 2nd UOM Barcode
      lBar.FindField('Barcode').AsString := '7890123';
      lBar.FindField('UOM').AsString := 'CTN';
      lBar.Post;
    end else begin
      lBizObj.Params.Find('Dockey').Value := lDocKey;
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('DESCRIPTION').value := 'FAIRY TAIL WIZARD';

      while lDtl.RecordCount > 0 do begin
        lDtl.First;
        lDtl.Delete;
      end;
      //Insert back with new Price
      lDtl.Append; //For 1St UOM
      lDtl.FindField('UOM').AsString := 'PCS'; //Make sure this always same as b4 delete data
      lDtl.FindField('Rate').AsFloat := 1;     //Make sure this always same as b4 delete data
      lDtl.FindField('RefCost').AsFloat := 22.3;
      lDtl.FindField('RefPrice').AsFloat := 52;
      lDtl.FindField('ISBASE').AsFloat := 1;
      lDtl.Post;;

      lDtl.Append;  //For 2nd UOM
      lDtl.FindField('UOM').AsString := 'CTN'; //Make sure this always same as b4 delete data
      lDtl.FindField('Rate').AsFloat := 12;    //Make sure this always same as b4 delete data
      lDtl.FindField('RefCost').AsFloat := 102.5;
      lDtl.FindField('RefPrice').AsFloat := 260.45;
      lDtl.FindField('ISBASE').AsFloat := 0;
      lDtl.Post;

      while lBar.RecordCount > 0 do begin
        lBar.First;
        lBar.Delete;
      end;

      lBar.Append; //For 1St UOM Barcode
      lBar.FindField('Barcode').AsString := '888888';
      lBar.FindField('UOM').AsString := 'PCS';
      lBar.Post;

      lBar.Append; //For 2nd UOM Barcode
      lBar.FindField('Barcode').AsString := '999999';
      lBar.FindField('UOM').AsString := 'CTN';
      lBar.Post;
    end;
    lBizObj.Save;

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lBizObj.Close;
    lMain := null;
    lDtl := null;
    lBar := null;
    lBizObj := null;
    lBizApp := null;
  end;
end;

ST_Item-Edit

ST_Item Script
procedure TfmMain.dxbb_ST_ItemClick(Sender: TObject);
var lMain, lDtl, lBizObj, lBizApp, lDocKey, V : Variant;
begin
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizObj := lBizApp.BizObjects.Find('ST_ITEM');
  lMain   := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsUOM');

  lDocKey := lBizObj.FindKeyByRef('Code', '--Stock Item Test--');
  lBizObj.Params.Find('DocKey').Value := VarToStr(lDocKey);
  try

    If not VarIsNull(lDocKey) Then begin
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('Description').value := 'Testing - Description';

      V := lBizApp.CreateOleVariantArray(2);
      V.SetItem(0, 'CTN'); //UOM
      V.SetItem(1, '12');  //Rate

      if lDtl.Locate('UOM;Rate', V.AsOleVariant, False, False) then
        begin
          lDtl.Edit;
          lDtl.FindField('RefCost').AsFloat  := 10.20;
          lDtl.FindField('RefPrice').AsFloat := 25.00;
          lDtl.Post;
        end;
      lBizObj.Save;

      MessageDlg('ST_Item-ItemCode : ''--Stock Item Test--'' Updated...', mtInformation, [mbOK],0);
    end;
  finally
    lBizObj.Close;
  end;
end;

SL_IV

SL_IV Script
procedure TfmMain.dxbb_SL_IVClick(Sender: TObject);
var lMain, lDtl, lSN, lBizObj, lBizApp, lDockey, V: Variant;
    lTime : TDateTime;
begin
  lTime := Now;
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizObj := lBizApp.BizObjects.Find('SL_IV');
  lMain   := lBizObj.DataSets.Find('MainDataSet');
  lDtl    := lBizObj.DataSets.Find('cdsDocDetail');
  lSN     := lBizObj.DataSets.Find('cdsSerialNumber');

  V       := lBizApp.CreateOleVariantArray(1);
  V.SetItem(0, '--IV Test--');  //DocNo
  V.SetItem(1, '300-A0001'); //CompanyCode
  lDocKey := lBizObj.FindKeyByRef('DocNo;Code', V.AsOleVariant);

  try
    if VarIsNull(lDocKey) then begin
      lBizObj.New;
      lMain.FindField('DocNo').AsString       := '--IV Test--';
      lMain.FindField('CODE').AsString        := '300-A0001';
      lMain.FindField('DocDate').Value        := '28 Aug 2024';
      lMain.FindField('PostDate').Value       := '28 Aug 2024';
      lMain.FindField('TAXDATE').Value        := '28 Aug 2024';
      lMain.FindField('Description').AsString := 'Sales'; //Information to shown in Statement
      lMain.FindField('Cancelled').AsString   := 'F';
      lMain.Post;

      lDtl.Append; // For Tax Inclusive = True with override Tax Amount
      lDtl.FindField('SEQ').Value            := 1;
      lDtl.FindField('ItemCode').AsString    := 'ANT';
      //lDtl.FindField('ACCOUNT').AsString     := '500-000'; //GL Sales Account if wanted override
      lDtl.FindField('DESCRIPTION').AsString := 'ANTENA';
      lDtl.FindField('QTY').AsFloat          := 1;
      lDtl.FindField('UOM').AsString         := 'UNIT';
      lDtl.FindField('Disc').AsString        := ''; //'5%+3; //Optional(eg 5% plus 3 Discount)
      lDtl.FindField('TAX').AsString         := 'SV6';
      lDtl.FindField('TAXINCLUSIVE').Value   := 1;
      lDtl.FindField('UNITPRICE').AsFloat    := 435; //Including GST UnitPrice
      lDtl.FindField('AMOUNT').AsFloat       := 410.37; //Must Excluding GST (Qty * UnitPrice) // Less 0.01
      lDtl.FindField('TAXAMT').AsFloat       := 24.63; //Extra 0.01

      lDtl.DisableControls; //For Tax Inclusive Only where TaxAmt is not as Calc
      try
        lDtl.FindField('TAXINCLUSIVE').Value := 1;
      finally
        lDtl.EnableControls;
      end;
      lDtl.Post;

      lDtl.Append; // For Tax Inclusive = False with override Tax Amount
      lDtl.FindField('SEQ').Value            := 2;
      lDtl.FindField('ItemCode').AsString    := 'ANT';
      //lDtl.FindField('ACCOUNT').AsString     := '500-000'; //GL Sales Account if wanted override
      lDtl.FindField('DESCRIPTION').AsString := 'ANTENA B';
      lDtl.FindField('QTY').AsFloat          := 1;
      lDtl.FindField('TAX').AsString         := 'SV6';
      lDtl.FindField('UOM').AsString         := 'UNIT';
      lDtl.FindField('TAXINCLUSIVE').Value   := 0;
      lDtl.FindField('UNITPRICE').AsFloat    := 94.43;
      lDtl.FindField('AMOUNT').AsFloat       := 94.43;
      lDtl.FindField('TAXAMT').AsFloat       := 5.66; //Less 0.01
      lDtl.Post;

      lDtl.Append; // For Serial Number
      lDtl.FindField('SEQ').Value            := 3;
      lDtl.FindField('ItemCode').AsString    := 'SN1';
      lDtl.FindField('ACCOUNT').AsString     := '500-000';
      lDtl.FindField('DESCRIPTION').AsString := 'Sales Serial Number Item';

      lSN.Append;
      lSN.FindField('SERIALNUMBER').AsString  := 'SN-00001';
      lSN.Post;

      lSN.Append;
      lSN.FindField('SERIALNUMBER').AsString  := 'SN-00002';
      lSN.Post;

      lDtl.FindField('QTY').AsFloat        := 2;
      lDtl.FindField('UOM').AsString       := 'UNIT';
      lDtl.FindField('TAX').AsString       := 'SV6';
      lDtl.FindField('TAXINCLUSIVE').Value := 0;
      lDtl.FindField('UNITPRICE').AsFloat  := 94.43;
      lDtl.FindField('TAXAMT').AsFloat     := 11.33;
      lDtl.Post;
    end else begin
      lBizObj.Params.Find('Dockey').Value := lDockey;
      lBizObj.Open;
      lBizObj.Edit;
      lMain.FindField('Description').AsString := 'Edited Sales';

      while lDtl.RecordCount > 0 do begin
        lDtl.First;
        lDtl.Delete;
      end;

      lDtl.Append;
      lDtl.FindField('SEQ').Value            := 1;
      lDtl.FindField('ItemCode').AsString    := 'ANT';
      //lDtl.FindField('ACCOUNT').AsString     := '500-000'; //GL Sales Account if wanted override
      lDtl.FindField('DESCRIPTION').AsString := 'ANTENA';
      lDtl.FindField('QTY').AsFloat          := 1;
      lDtl.FindField('UOM').AsString         := 'CTN';
      lDtl.FindField('TAX').AsString         := 'SV6';
      lDtl.FindField('TAXINCLUSIVE').Value   := 0;
      lDtl.FindField('UNITPRICE').AsFloat    := 200;
      lDtl.FindField('AMOUNT').AsFloat       := 200;
      lDtl.FindField('TAXAMT').AsFloat       := 12; //Less 0.01
      lDtl.Post;
    end;
    lBizObj.Save;

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lBizObj.Close;
    lMain := null;
    lDtl := null;
    lSN := null;
    lBizObj := null;
    lBizApp := null;
  end;
end;

Customer.IV.RO

Customer.IV.RO Report Object Script
procedure TfmMain.dxbb_RptObjClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl : TClientDataset;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.IV.RO');
    lRptVar.Params.Find('SelectDate').AsBoolean           := True;
    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2015';
    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2015';
    lRptVar.Params.Find('AllAgent').AsBoolean             := False;
    lRptVar.Params.Find('AgentData').AsBlob               := '----'#13#10'HALIM'; //Filter by Agent code ---- & HALIM
    lRptVar.Params.Find('AllArea').AsBoolean              := True;
//    lRptVar.Params.Find('AreaData').AsBlob                := ; //Not use if AllArea is True
    lRptVar.Params.Find('AllCompany').AsBoolean           := True;
//    lRptVar.Params.Find('CompanyData').AsBlob             := ; //Not use if AllCompany is True
    lRptVar.Params.Find('AllCurrency').AsBoolean          := True;
//    lRptVar.Params.Find('CurrencyData').AsBlob            := ; //Not use if AllCurrenty is True
    lRptVar.Params.Find('AllDocProject').AsBoolean        := True;
//    lRptVar.Params.Find('DocProjectData').AsBlob          := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean   := True;
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob     := ; //Not use if AllCompanyCategory is True
    lRptVar.Params.Find('AllDocument').AsBoolean          := True;
//    lRptVar.Params.Find('DocumentData').AsBlob            := ; //Not use if AllDocument is True
    lRptVar.Params.Find('IncludeCancelled').AsBoolean   := True;
    lRptVar.Params.Find('PrintDocumentStyle').AsBoolean := False;
    lRptVar.Params.Find('AllItemProject').AsBoolean     := True;
    lRptVar.Params.Find('AllPaymentMethod').AsBoolean   := True;
    lRptVar.CalculateReport;

    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocDetail').XMLData; //Detail Data - To link Master Data use Dockey field

    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;

Stock.Item.RO

Stock.Item.RO Report Object Script
procedure TfmMain.dxbb_ST_ITEM_ROClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl, cdsCat : TClientDataset;
    lSQL : string;
begin
  lTime    := Now;
  cdsMain  := TClientDataset.Create(nil);
  cdsDtl   := TClientDataset.Create(nil);
  cdsCat   := TClientDataset.Create(nil);

  lBizApp := CreateOleObject('SQLAcc.BizApp');

  lSQL := 'SELECT * FROM ST_ITEM_CATEGORY ' +
          'WHERE Category IN (''B-MOTOLORA'',''B-MAXIS'')';
  cdsCat.Data := lBizApp.DBManager.Execute(lSQL); //For filtering Category only

  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Stock.Item.RO');
    lRptVar.Params.Find('AllItem').AsBoolean              := True;
    lRptVar.Params.Find('AllStockGroup').AsBoolean        := True;
    lRptVar.Params.Find('AllCustomerPriceTag').AsBoolean  := True;
    lRptVar.Params.Find('AllSupplierPriceTag').AsBoolean  := True;
//    lRptVar.Params.Find('CategoryData').AsBlob            := ; //Not use
//    lRptVar.Params.Find('CategoryTpl').AsBlob             := ; //Not use
//    lRptVar.Params.Find('CustomerPriceTagData').AsBlob    := ; //Not use if AllCustomerPriceTag is True
//    lRptVar.Params.Find('SupplierPriceTagData').AsBlob    := ; //Not use if AllSupplierPriceTag is True
//    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2015'; //Not use if SelectDate is False
//    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2015';
    lRptVar.Params.Find('HasAltStockItem').AsBoolean      := False;
    lRptVar.Params.Find('HasBarcode').AsBoolean           := False;
    lRptVar.Params.Find('HasBOM').AsBoolean               := False;
    lRptVar.Params.Find('HasCategory').AsBoolean          := False;
    lRptVar.Params.Find('HasCustomerItem').AsBoolean      := False;
    lRptVar.Params.Find('HasOpeningBalance').AsBoolean    := False;
    lRptVar.Params.Find('HasPurchasePrice').AsBoolean     := False;
    lRptVar.Params.Find('HasSellingPrice').AsBoolean      := False;
    lRptVar.Params.Find('HasSupplierItem').AsBoolean      := False;
//    lRptVar.Params.Find('ItemData').AsBlob                := 'ANT 1.0'#13#10'COVER'; //Filter by Item code ANT 1.0 & COVER
//    lRptVar.Params.Find('ItemCategoryData').AsBlob        := cdsCat.XMLData; //Not use if SelectCategory is False
    lRptVar.Params.Find('PrintActive').AsBoolean          := True;
    lRptVar.Params.Find('PrintInActive').AsBoolean        := True;
    lRptVar.Params.Find('PrintNonStockControl').AsBoolean := True;
    lRptVar.Params.Find('PrintStockControl').AsBoolean    := True;
    lRptVar.Params.Find('SelectCategory').AsBoolean       := False;
    lRptVar.Params.Find('SelectDate').AsBoolean           := False;
    lRptVar.Params.Find('SortBy').AsString                  := 'Code';
//    lRptVar.Params.Find('StockGroupData').AsBlob        := ; //Not use if AllStockGroup is True
    lRptVar.CalculateReport;

    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData; //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsUOM').XMLData;  //Detail Data - To link Master Data use Code field

    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
    cdsCat.Free;
  end;
end;

Customer.Statement.RO

Customer.Statement.RO Report Object Script
procedure TfmMain.dxbb_StatementClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl : TClientDataset;
    s : string;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  s := '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>'+
       '<FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>'+
       '<FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>'+
       '<FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>'+
       '</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>'+
       '<ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>'+
       '<ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>'+
       '</ROWDATA></DATAPACKET>';
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.Statement.RO');
//  lRptVar.Params.Find('AgentData').AsBlob               := ; //Not use if AllAgent is True
    lRptVar.Params.Find('AgingData').AsString           := s; //Fixed
    lRptVar.Params.Find('AgingOn').AsString             := 'I'; //Fixed
    lRptVar.Params.Find('AllAgent').AsBoolean           := True;
    lRptVar.Params.Find('AllArea').AsBoolean            := True;
    lRptVar.Params.Find('AllCompany').AsBoolean         := False;
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean := True;
    lRptVar.Params.Find('AllControlAccount').AsBoolean  := True;
    lRptVar.Params.Find('AllCurrency').AsBoolean        := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean      := True;
//    lRptVar.Params.Find('AreaData').AsBlob              := ; //Not use if AllArea is True
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob   := ; //Not use if AllCompanyCategory is True
    lRptVar.Params.Find('CompanyData').AsBlob           := '300-A0001'#13#10'300-C0001'; //Filter by Customer Code 300-A0001 & 300-C0001
//    lRptVar.Params.Find('ControlAccountData').AsBlob    := ; //Not use if AllControlAccount is True
//    lRptVar.Params.Find('CurrencyData').AsBlob          := ; //Not use if AllCurrency is True
    lRptVar.Params.Find('DateFrom').AsDate              := '01 Aug 2016';
    lRptVar.Params.Find('DateTo').AsDate                := '31 Aug 2016';
//    lRptVar.Params.Find('DocProjectData').AsBlob        := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('IncludeZeroBalance').AsBoolean := False;
    lRptVar.Params.Find('SelectDate').AsBoolean         := True;
    lRptVar.Params.Find('SortBy').AsString              := 'CompanyCategory;Code;CompanyName;Agent;Area;CurrencyCode;ControlAccount';
    lRptVar.Params.Find('StatementDate').AsDate         := '31 Aug 2016'; // Norm same as DateTo
    lRptVar.Params.Find('StatementType').AsString       := 'O'; //O := Open Item, B := B/F

    lRptVar.CalculateReport;

    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocument').XMLData; //Detail Data - To link Master Data use Code field

    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;

GL Account List For Sales & Purchase 1

GL_Acc Object Script
procedure TfmMain.dxbb_GLAccClick(Sender: TObject);
var BizApp : Variant;
    lDataSet : TClientDataSet;
    ASQL : String;
begin
  //For Debtor List => SpecialAccType = DR 
  //For Creditor List => SpecialAccType = CR 
  BizApp := CreateOleObject('SQLAcc.BizApp');
  lDataSet := TClientDataSet.Create(Self);
  try
     ASQL := 'SELECT A.Code, A.Description FROM GL_ACC A '+
             'LEFT OUTER JOIN GL_ACC B ON (A.Dockey=B.Parent) '+
             'WHERE A.Parent<>-1 ' +
             'AND B.Dockey IS NULL ' +
             'AND A.SpecialAccType = '''' '+
             'ORDER BY A.CODE ';
     lDataSet.Data := BizApp.DBManager.Execute(ASQL);
     lDataset.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file
  finally
    lDataSet.Free;
  end;
end;

GL Account List For Sales & Purchase 2

GL_Acc Object Script
procedure TfmMain.dxbb_GLAccClick(Sender: TObject);
var BizApp, BizObj : Variant;
    lDataSet1, lDataSet2 : TClientDataSet;
    ASQL : String;
begin
  //For Debtor List => SpecialAccType = DR 
  //For Creditor List => SpecialAccType = CR 
  BizApp := CreateOleObject('SQLAcc.BizApp');
  BizObj := BizApp.BizObjects.Find('GL_Acc');

  lDataSet1 := TClientDataSet.Create(Self);
  lDataSet2 := TClientDataSet.Create(Self);
  try
    ASQL :='Parent<>-1 ' +
           'AND (SpecialAccType IS NULL OR SpecialAccType = '''' ' +
           'OR SpecialAccType = '''') ';
    lDataSet1.XMLData:= BizObj.Select('Dockey,Code,Description', ASQL, 'Code', 'SX', '', '');

    lDataSet2.XMLData:= BizObj.Select('Parent', '', 'Code', 'SX', '', '');

    lDataset2.First; // Remove Parent Account
    while not lDataset2.Eof do begin
      if lDataset1.Locate('Dockey', lDataSet2.FindField('Parent').AsString, []) then
        lDataset1.Delete;
      lDataset2.Next;
    end;
    lDataset1.MergeChangeLog;
    lDataset1.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file 
  finally
    lDataSet1.Free;
    lDataSet2.Free;
  end;
end;

Customer.Aging.RO

Customer Aging Report Object Script
procedure TfmMain.dxbb_AgingClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl : TClientDataset;
    s : string;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');

  s := '<?xml version="1.0" standalone="yes"?>  <DATAPACKET Version="2.0"><METADATA><FIELDS>'+
       '<FIELD attrname="ColumnNo" fieldtype="i4" required="true"/><FIELD attrname="ColumnType" fieldtype="string" WIDTH="1"/>'+
       '<FIELD attrname="Param1" fieldtype="i4" required="true"/><FIELD attrname="Param2" fieldtype="i4" required="true"/>'+
       '<FIELD attrname="IsLocal" fieldtype="boolean"/><FIELD attrname="HeaderScript" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1"/>'+
       '</FIELDS><PARAMS/></METADATA><ROWDATA><ROW ColumnNo="0" ColumnType="" Param1="0" Param2="0" IsLocal="FALSE"/>'+
       '<ROW ColumnNo="1" ColumnType="A" Param1="0" Param2="0" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;Current Mth&apos;&#013;end;"/>'+
       '<ROW ColumnNo="2" ColumnType="A" Param1="-1" Param2="-1" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;1 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="3" ColumnType="A" Param1="-2" Param2="-2" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;2 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="4" ColumnType="A" Param1="-3" Param2="-3" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;3 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="5" ColumnType="A" Param1="-4" Param2="-4" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;4 Months&apos;&#013;end;"/>'+
       '<ROW ColumnNo="6" ColumnType="B" Param1="-999999" Param2="-5" IsLocal="FALSE" HeaderScript="ObjectPascal&#013;begin&#013;Value:= &apos;5 Month &amp; above&apos;&#013;end;"/>'+
       '</ROWDATA></DATAPACKET>';
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('Customer.Aging.RO');
    lRptVar.Params.Find('ActualGroupBy').AsString       := 'Code;CompanyName'; //Fixed
//    lRptVar.Params.Find('AgentData').AsBlob               := ; //Not use if AllAgent is True
    lRptVar.Params.Find('AgingData').AsString           := s;
    lRptVar.Params.Find('AgingDate').AsDate             := '31 Aug 2016';
    lRptVar.Params.Find('AgingOn').AsString             := 'I'; //Fixed
    lRptVar.Params.Find('AllAgent').AsBoolean           := True;
    lRptVar.Params.Find('AllArea').AsBoolean            := True;
    lRptVar.Params.Find('AllCompany').AsBoolean         := True;
    lRptVar.Params.Find('AllCompanyCategory').AsBoolean := True;
    lRptVar.Params.Find('AllControlAccount').AsBoolean  := True;
    lRptVar.Params.Find('AllCurrency').AsBoolean        := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean      := True;
//    lRptVar.Params.Find('AreaData').AsBlob            := ; //Not use if AllArea is True
//    lRptVar.Params.Find('CompanyCategoryData').AsBlob := ; //Not use if AllCompanyCategory is True
//    lRptVar.Params.Find('CompanyData').AsBlob         := ; //Not use if AllCompany is True
//    lRptVar.Params.Find('ControlAccountData').AsBlob  := ; //Not use if AllControlAccount is True
//    lRptVar.Params.Find('CurrencyData').AsBlob        := ; //Not use if AllCurrency is True
//    lRptVar.Params.Find('DocProjectData').AsBlob      := ; //Not use if AllDocProject is True
    lRptVar.Params.Find('FilterPostDate').AsBoolean      := True;
//    lRptVar.Params.Find('GroupBy
    lRptVar.Params.Find('IncludePDC').AsBoolean         := False;
    lRptVar.Params.Find('IncludeZeroBalance').AsBoolean := False;
    lRptVar.Params.Find('SortBy').AsString              := 'Code;CompanyName';
    lRptVar.Params.Find('DateTo').AsDate                := '31 Aug 2016';
    lRptVar.Params.Find('IncludeKnockedOffDetail').AsBoolean := False;

    lRptVar.CalculateReport;

    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDocument').XMLData; //Detail Data - To link Master Data use Code field

    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;

GL.CB.RO

GL Cash Book Report Object Script
procedure TfmMain.dxBB_CBClick(Sender: TObject);
var lBizApp, lRptVar : Variant;
    lTime : TDateTime;
    cdsMain, cdsDtl, cdsTax : TClientDataset;
begin
  lTime := Now;
  cdsMain := TClientDataset.Create(nil);
  cdsDtl  := TClientDataset.Create(nil);
  cdsTax  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  try
    lRptVar := null;
    lRptVar := lBizApp.RptObjects.Find('GL.CB.RO');
    lRptVar.Params.Find('AllCurrency').AsBoolean          := True;
    lRptVar.Params.Find('AllDocProject').AsBoolean        := True;
    lRptVar.Params.Find('AllDocument').AsBoolean          := True;
    lRptVar.Params.Find('AllItemProject').AsBoolean       := True;
    lRptVar.Params.Find('AllItemArea').AsBoolean          := True;
    lRptVar.Params.Find('AllItemAgent').AsBoolean         := True;
    lRptVar.Params.Find('AllDocAgent').AsBoolean          := True;
    lRptVar.Params.Find('AllDocArea').AsBoolean           := True;
    lRptVar.Params.Find('AllPaymentMethod').AsBoolean     := False;
//    lRptVar.Params.Find('CurrencyData').AsBlob            := 'Not use if AllCurrency is true

//  For Post Date From & Date To'
    lRptVar.Params.Find('DateFrom').AsDate                := '01/01/2017';
    lRptVar.Params.Find('DateTo').AsDate                  := '31/12/2017';

//    lRptVar.Params.Find('DocProjectData').AsBlob          := //'Not use if AllDocProject is true
//    lRptVar.Params.Find('DocAreaData').AsBlob             := //Not use if AllDocArea is true
//    lRptVar.Params.Find('DocAgentData').AsBlob            := //Not use if AllDocAgent is true
//    lRptVar.Params.Find('ItemAgentData').AsBlob           := //Not use if AllItemAgent is true
    lRptVar.Params.Find('DocType').AsString               := 'PV'; //'PV for Payment Voucher & OR for Official Receipt
//    lRptVar.Params.Find('DocumentData').AsBlob            := //Not use if AllDocument is true
//    lRptVar.Params.Find('GroupBy').AsBlob                 := //If you wanted to grouping the data
    lRptVar.Params.Find('IncludeCancelled').AsBoolean     := False;
//    lRptVar.Params.Find('ItemAreaData').AsBlob            := //Not use if AllItemArea is true
//    lRptVar.Params.Find('ItemProjectData').AsBlob         := //Not use if AllItemProject is true
    lRptVar.Params.Find('PaymentMethodData').AsBlob       := '310-001';
    lRptVar.Params.Find('PrintDocumentStyle').AsBoolean   := True;
    lRptVar.Params.Find('SelectDate').AsBoolean           := True; //For Post Date
//  lRptVar.Params.Find('SelectDocDate').AsBoolean   := True; 'For Doc Date
    lRptVar.Params.Find('SortBy').AsString                := 'PostDate;DocNo';

    lRptVar.CalculateReport;

    cdsMain.XMLData := lRptVar.DataSets.Find('cdsMain').XMLData;      //Master Data
    cdsDtl.XMLData  := lRptVar.DataSets.Find('cdsDetail').XMLData; //Detail Data - To link Master Data use Dockey field
    cdsTax.XMLData  := lRptVar.DataSets.Find('cdsTax').XMLData; //Tax List

    cdsMain.SaveToFile('C:\Temp\_ListM.xml'); //Export To XML file
    cdsDtl.SaveToFile('C:\Temp\_ListD.xml');  //Export To XML file
    cdsTax.SaveToFile('C:\Temp\_ListT.xml');  //Export To XML file

    lTime := Now - lTime;
    MessageDlg(Format('[Elapsed Time: %s ]',[FormatDateTime ('hh:nn:ss:zzz', lTime)]),
               mtInformation, [mbOk], 0);
  finally
    lRptVar := null;
    cdsMain.Free;
    cdsDtl.Free;
  end;
end;

AR_DP

Customer Deposit Script
procedure TForm1.Button1Click(Sender: TObject);
var lMain, lBizObj, lBizApp : Variant;
begin
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');

  lBizObj := lBizApp.BizObjects.Find('AR_DP');
  lMain   := lBizObj.DataSets.Find('MainDataSet');

  try
    lBizObj.New;
    lMain.FindField('DOCKEY').Value         := -1;
    lMain.FindField('DocNo').AsString       := '--DP Test--';
    lMain.FindField('CODE').AsString        := '300-C0001';
    lMain.FindField('DocDate').Value        := '28 Oct 2019';
    lMain.FindField('PostDate').Value       := '28 Oct 2019';
    lMain.FindField('TAXDATE').Value        := '28 Oct 2019';
    lMain.FindField('DEPOSITACCOUNT').AsString := 'PREPAYMENT';
    lMain.FindField('PaymentMethod').AsString  := '320-000'; //Bank or Cash account
    lMain.FindField('Description').AsString    := 'Deposit For Account';
    lMain.FindField('ChequeNumber').AsString   := '';
    lMain.FindField('BankCharge').AsFloat      := 0;
    lMain.FindField('DocAmt').AsFloat          := 1000.00;
    lMain.FindField('Cancelled').AsString      := 'F';

    try
      lBizObj.Save;
    except
      on E: Exception do
        Memo1.Lines.Append(E.Message);
    end;
     lBizObj.Close;
     Memo1.Lines.Append('Done');
//     MessageDlg('Done', mtInformation, [mbOk], 0);
  finally
    lMain := Null;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;

Customer Deposit to Customer Payment

Customer Deposit to Customer Payment Script
procedure TForm1.Button2Click(Sender: TObject);
var lMain, lKO, lBizApp, lBizObj, V : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
  cdsTmp  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');

  try
    lSQL := 'SELECT DOCKEY FROM AR_DP ' +
            'WHERE DOCNO=''--DP Test--'' ';
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);

    if cdsTmp.RecordCount > 0 then begin
      lBizObj := lBizApp.BizObjects.Find('AR_PM');
      lMain   := lBizObj.DataSets.Find('MainDataSet');
      lKO     := lBizObj.DataSets.Find('cdsKnockOff');

      lBizObj.New;
      lMain.FindField('DOCKEY').Value           := -1;
      lMain.FindField('DocNo').AsString         := '--PM Test--'; //Payment Document Number
      lMain.FindField('CODE').AsString          := '300-C0001';
      lMain.FindField('DocDate').Value          := '29 Oct 2019';
      lMain.FindField('PostDate').Value         := '29 Oct 2019';
      lMain.FindField('Description').AsString   := 'Payment for A/c';
      lMain.FindField('PaymentMethod').AsString := 'PREPAYMENT';
      lMain.FindField('DocAmt').AsFloat         := 200;
      lMain.FindField('FROMDOCTYPE').AsString   := 'DP'; //Transfer from Deposit
      lMain.FindField('FROMDOCKEY').Value       := cdsTmp.FindField('Dockey').AsFloat; //Transfer from Deposit
      lMain.FindField('Cancelled').AsString     := 'F';
      lMain.FindField('CHANGED').AsString       := 'F';

      V := lBizApp.CreateOleVariantArray(2);
      V.SetItem(0, 'IV'); //Document Type is either is IV or DN for Sales & PI or SD for Purchase
      V.SetItem(1, 'IV-00003');  //Invoice Document Number

      if lKO.Locate('DocType;DocNo', V.AsOleVariant, False, False) then
        begin
          lKO.Edit;
          lKO.FindField('KOAmt').ASFloat     := 200;
          lKO.FindField('KnockOff').AsString := 'T';
          lKO.Post;
        end;

      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
        lBizObj.Close;
        Memo1.Lines.Append('Done');
      //MessageDlg('AR_PM-DocNo : ''--PM Test--'' Posted...', mtInformation, [mbOK],0);
    end else
       Memo1.Lines.Append('Deposit No. Not found');
  finally
    cdsTmp.Free;
    lBizApp.Logout;
    lMain := Null;
    lBizObj := Null;
    lBizApp := Null;
  end;
end;

AR_DPDTL_REFUND

Customer Deposit Refund Script
procedure TForm1.Button3Click(Sender: TObject);
var lMain, lBizApp, lBizObj : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
  cdsTmp  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');

  try
    lSQL := 'SELECT DOCKEY FROM AR_DP ' +
            'WHERE DOCNO=''--DP Test--'' ';
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);

    if cdsTmp.RecordCount > 0 then begin
      lBizObj := lBizApp.BizObjects.Find('AR_DPDTL_REFUND');
      lMain   := lBizObj.DataSets.Find('MainDataSet');

      lBizObj.New;
      lMain.FindField('DOCKEY').Value          := cdsTmp.FindField('Dockey').AsFloat;
      lMain.FindField('Account').AsString      := '320-000'; //Bank or Cash account
      lMain.FindField('DocDate').Value         := '28 Oct 2019';
      lMain.FindField('PostDate').Value        := '28 Oct 2019';
      lMain.FindField('Description').AsString  := 'Deposit Refund';
      lMain.FindField('ChequeNumber').AsString := '';
      lMain.FindField('BankCharge').AsFloat    := 0;
      lMain.FindField('PAYMENTAMOUNT').AsFloat := 500.00;

      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
       lBizObj.Close;
       Memo1.Lines.Append('Done');
  //     MessageDlg('Done', mtInformation, [mbOk], 0);
    end else
      Memo1.Lines.Append('Deposit No. Not Found');
  finally
    cdsTmp.Free;
    lMain := Null;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;

AR_DPDTL_FORFEIT

Customer Deposit Forfeit Script
procedure TForm1.Button4Click(Sender: TObject);
var lMain, lBizApp, lBizObj : Variant;
    cdsTmp : TClientDataset;
    lSQL : String;
begin
  cdsTmp  := TClientDataset.Create(nil);
  lBizApp := CreateOleObject('SQLAcc.BizApp');
  lBizApp.Login('ADMIN', 'ADMIN', 'D:\Happy\DB\Default.DCF', 'ACC-0110.FDB');

  try
    lSQL := 'SELECT DOCKEY FROM AR_DP ' +
            'WHERE DOCNO=''--DP Test--'' ';
    cdsTmp.Data := lBizApp.DBManager.Execute(lSQL);

    if cdsTmp.RecordCount > 0 then begin
      lBizObj := lBizApp.BizObjects.Find('AR_DPDTL_FORFEIT');
      lMain   := lBizObj.DataSets.Find('MainDataSet');

      lBizObj.New;
      lMain.FindField('DOCKEY').Value          := cdsTmp.FindField('Dockey').AsFloat;
      lMain.FindField('Account').AsString      := '532-000'; //Forfeit account
      lMain.FindField('DocDate').Value         := '28 Oct 2019';
      lMain.FindField('PostDate').Value        := '28 Oct 2019';
      lMain.FindField('Description').AsString  := 'Deposit Forfeit';
      lMain.FindField('Amount').AsFloat        := 150.00;

      try
        lBizObj.Save;
      except
        on E: Exception do
          Memo1.Lines.Append(E.Message);
      end;
       lBizObj.Close;
       Memo1.Lines.Append('Done');
  //     MessageDlg('Done', mtInformation, [mbOk], 0);
    end else
      Memo1.Lines.Append('Deposit No. Not Found');
  finally
    cdsTmp.Free;
    lMain := Null;
    lBizObj := Null;
    lBizApp.Logout;
    lBizApp := Null;
  end;
end;

FAQ

Problem with opening CHM Help files?

  1. Right click the chm file & select Properties
  2. At General tab Click Unblock button.
  3. Click Apply | Ok.

Still can't open CHM file?

  1. Login SQL Accounting
  2. Click Tools | Options | General
  3. Click Register & follow wizard
  4. Exit SQL Accounting
  5. Login SQL Accounting
  6. Run CHM File

Why when I compile my program with stated unknown method or unknown identifier?

If you compiler had error may try add the esfw10.dll file under the SQL Accounting\bin folder

How to make sure I login to correct database?

  • Can use the Common.Agent.RO Report Objects to get the Profile info.
  • Then use the cdsProfile Dataset
- CompanyName Field
- Remark Field

Why after post to SQL Accounting the Description3 (More Description)/Notes field it show like this "M y D e s c r i p t i o n" instead of "My Description"?

Make sure you use .AsString in your code (see example below)
Description3 Field Script/Code

...

 lDtl.FindField('DESCRIPTION3').AsString  := 'Sales Item A More Description'+ #13 + 'I in 2nd line';

...

Can I Ignore Doc No Field & let SQL Accounting to Auto Assign?

Yes but we not recommended as you will lost track when user wanted to know which Doc No in SQL Acc is posted.
To Set Auto Assign set it as below
DocNo Field Script/Code

...

 lMain.FindField('DocNo').AsString  := '<<New>>';

...

lDocNo := lMain.FindField('DocNo').AsString; //To Get docno after post 

Can I Auto Login & Logout SQL Accounting when doing & after Posting?

Yes can below is example script
Only work if that PC is no once is using SQL Accounting
C Sharp
Int32 lBuildNo;
dynamic ComServer;
		
public void CheckLogin()
{            
    lBizType = Type.GetTypeFromProgID("SQLAcc.BizApp");
    ComServer = Activator.CreateInstance(lBizType);
            
    if (!ComServer.IsLogin)
    {
        try
        {
            ComServer.Login(edUN.Text, edPW.Text, edDCF.Text, edDB.Text);
            ComServer.Minimize();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            FreeBiz(ComServer);
        }
    }
    if (ComServer.IsLogin)
    {
        lBuildNo = ComServer.BuildNo;
    }
}
		
public void FreeBiz(object AbizObj)
{
    System.Runtime.InteropServices.Marshal.ReleaseComObject(AbizObj);
}
		
private void btnExport_Click(object sender, EventArgs e)
{
    dynamic BizObject, lMain, lDocKey;

    CheckLogin();
    //'Step 2: Find and Create the Biz Objects
    BizObject = ComServer.BizObjects.Find("Agent");

    //Step 3: Set Dataset
    lMain = BizObject.DataSets.Find("MainDataSet");    //lMain contains master data

    //Step 4: Search
    lDocKey = BizObject.FindKeyByRef("CODE", edCode.Text);
    try
    {
        try
        {
            //Step 5 : Insert or Update
            if (Convert.IsDBNull(lDocKey))
            {
                BizObject.New();
                lMain.FindField("CODE").value = edCode.Text;
                lMain.FindField("DESCRIPTION").value = edDesc.Text;
            }
            else
            {//Edit Data if found
                BizObject.Params.Find("CODE").Value = lDocKey;
                BizObject.Open();
                BizObject.Edit();
                lMain.FindField("DESCRIPTION").value = edDesc.Text;
            }
            //Step 6: Save & Close
            BizObject.Save();
            MessageBox.Show("Done", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
    finally
    {
        BizObject.Close();

        //Step 7 : Logout after done             
        FreeBiz(BizObject);
        ComServer.Logout();
        FreeBiz(ComServer);
    }            
}
Delphi
....
  public
    { Public declarations }
    lBizApp : variant;
  end;
....

procedure TForm1.CheckLogin;
begin
  lBizApp := null;
  lBizApp := CreateOleObject('SQLAcc.BizApp');

  if not lBizApp.IsLogin then begin
    lBizApp.Login(edUN.Text, edPW.Text, edDCF.Text, edDB.Text); //Login with preset setting
    lBizApp.Minimize; //Mininise the SQLAccounting
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var BizObject, lMain : Variant;
begin
  try
    //Begin Loop your data
    try
      CheckLogin;
      BizObject := lBizApp.BizObjects.Find('Agent');
      lMain     := BizObject.DataSets.Find('MainDataSet');
      BizObject.New;
      lMain.FindField('CODE').AsString := 'HALIM';
      lMain.FindField('Description').AsString := 'HALIM 123';	
      BizObject.save;
    except
      on E: Exception do
        MmLog.Lines.Append(E.Message);
    end;
    //
  finally
    BizObject.close;
    BizObject := null;
    lBizApp.Logout;
    lBizApp := null;
  end;
end;
VB Script
'Copy below script & paste to notepad & name it as eg Agent.vbs
Call PostData
 
Function CreateSQLAccServer
  Set CreateSQLAccServer = CreateObject("SQLAcc.BizApp")
End Function
 
Function PostData
Dim ComServer, BizObject
 
  'Step 1: Create Com Server object
  Set ComServer = CreateSQLAccServer 'Create Com Server
  
  Set WScr = CreateObject("WScript.Shell")
  WScript.Sleep 1000 '//Wait 1 second for system loading before proceed

  'Step 2: Force Logout to make sure login correct database
  If ComServer.IsLogin Then 'if user hasn't logon to SQL application
    ComServer.Logout
  END IF
  'Step 3: Login 
  ComServer.Login "ADMIN", "ADMIN", "C:\estream\SQLAccounting\Share\Default.DCF", "ACC-0015.FDB" 

  'Step 4: Find and Create the Biz Objects
  Set BizObject = ComServer.BizObjects.Find("Agent") 
 
  'Step 5: Set Dataset
  Set lMain = BizObject.DataSets.Find("MainDataSet")    'lMainDataSet contains master data

  
  'Step 6 : Posting
    BizObject.New
    lMain.FindField("CODE").AsString          = "_Test_"
    lMain.FindField("Description").AsString   = "Testing 123"

  'Step 7: Save Document
    BizObject.Save
    BizObject.Close
	
  'Step 8: Logout	
    ComServer.Logout
	MsgBox "Done"
End Function

When Post System Prompt Operation aborted Error

This happen when the Login User ID don't had the to Override Sales Min/Max Price &
Use Last Price XXX (In Tools | Options | Unit Price) &
1 of record is below Min Price.

Solution

Can try change the Posting Seq like below (UOM then Qty)
Sequence Field Script/Code

...

   lDetail.Append();
   lDetail.FindField("DtlKey").value = -1;
   lDetail.FindField("DocKey").value = -1;
   lDetail.FindField("Seq").value = 3;
   lDetail.FindField("ItemCode").AsString = "ANT";
   lDetail.FindField("Description").AsString = "Sales Item B";
   //lDetail.FindField("Account").AsString = "500-000"; To override the Sales Account Code
   lDetail.FindField("UOM").AsString = "UNIT";
   lDetail.FindField("Qty").AsFloat = 2;
   //lDetail.FindField("DISC").AsString = "5%+3"; //Optional(eg 5% plus 3 Discount)
   lDetail.FindField("Tax").AsString = "SR";
   lDetail.FindField("TaxRate").AsString = "6%";
   lDetail.FindField("TaxInclusive").value = 0;
   lDetail.FindField("UnitPrice").AsFloat = 100;
   lDetail.FindField("Amount").AsFloat = 200;
   lDetail.FindField("TaxAmt").AsFloat = 12;
   lDetail.Post();

...

How do my system know there is a changes or update in SQLAccounting?

Data Entry

In all Document it had a field call UPDATECOUNT.
Default is null & each changes will +1.
So if you see 2 meaning it had being update 2 times
Only available in
  • Version 1001.858 & above
In Each table it had a field call LASTMODIFIED.
The value is Epoch Time or Unix Time

Master Data

Only available in
  • Version 842.765 & above
  • AP_SUPPLIER (Maintain Supplier)
  • AR_CUSTOMER (Maintain Customer)
  • ST_GROUP (Maintain Stock Group)
  • ST_ITEM (Maintain Stock Item)
  • ST_ITEM_TPL (Maintain Item Template)
  • ST_PRICETAG (Maintain Price Tag)
  • TAX (Maintain Tax)
In Each table it had a field call LASTMODIFIED.
The value is Epoch Time or Unix Time

You can use below function to get the field

vbs
...
Function GetData
Dim lDataSet, lSQL
  lSQL = "SELECT DOCNO, UPDATECOUNT FROM SL_CS "
  lSQL = lSQL & "WHERE UPDATECOUNT IS NOT NULL " 
  lSQL = lSQL & "ORDER BY DOCNO "
  Set lDataSet = ComServer.DBManager.NewDataSet(lSQL)
  
  lDataSet.First
  While (not lDataSet.eof)
    MsgBox "DocNo : " & lDataSet.FindField("DocNo").AsString
    MsgBox "UpdateCount : " & lDataSet.FindField("UPDATECOUNT").AsString
    lDataSet.Next
  Wend
End Function
...
Delphi
...   
procedure TfmMain.dxbb_GetFieldClick(Sender: TObject);
var BizApp : Variant;
    lDataSet : TClientDataSet;
    ASQL : String;
begin
  BizApp := CreateOleObject('SQLAcc.BizApp');
  lDataSet := TClientDataSet.Create(Self);
  try
     ASQL := 'SELECT DOCNO, UPDATECOUNT FROM SL_CS ' +
             'WHERE UPDATECOUNT IS NOT NULL ' +
             'ORDER BY DOCNO ';
     lDataSet.Data := BizApp.DBManager.Execute(ASQL);
     lDataset.SaveToFile('C:\Temp\_List.xml', dfXML); //Export To XML file
  finally
    lDataSet.Free;
  end;
end;
...

Can I control my Stock when I link with other Application?

Yes. We suggest to use Stock Transfer to (eg Location call MOBILE) transfer stock as Reserve to avoid stock over deduct in SQL Accounting
When other Application post to SQL Accounting they just need set the Location to the Reserve Location (eg MOBILE)
Below is example posting with location
Post Location Field Script/Code

...

 lDtl.FindField('UOM').AsString       := 'CTN';
 lDtl.FindField('QTY').AsFloat        := 6;
 lDtl.FindField('Location').AsString  := 'MOBILE';

...

Where to Check the SQL Accounting DCF Path, FileName & FDB FileName?

In Login Screen Click 3 Dot Button then you can see the information
For SQL Accounting Version 5.2023.957.831 and below
SDK-FAQ-01.jpg
For SQL Accounting Version 5.2023.958.832 and above
SDK-FAQ-03.jpg
SDK-FAQ-02.jpg

How to check & What is the value for Advance Credit Control in Maintain Customer

You can use ComServer.DBManager.NewDataSet(lSQL) function to Query the information
lSQL = SELECT * FROM AR_CUSTOMERCRCTRL
You may refer to ControlType column
ControlType Exceed Credit Limit Exceed OverDue Limit
0 UnBlock UnBlock
1 UnBlock Block
2 UnBlock Override
3 Block UnBlock
4 Block Block
5 Block Override
6 Override UnBlock
7 Override Block
8 Override Override
9 Suspended

How to get Error/Exception Message Return from SQL Accounting?

C Sharp
try
{
   BizObject.New();
....
   BizObject.Save();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
Python
   try:
       BizObject.Save()          
   except Exception as e:
       print("Oops!", e)   
VB.Net
Try
  BizObject.[New]
...
  BizObject.Save
Catch ex As Exception
  MsgBox(ex.Message, MsgBoxStyle.Exclamation)
End Try
Delphi
try
  lBizObj.New;
....
  lBizObj.Save;
except
  on E: Exception do
    Memo1.Lines.Text := E.Message;
end;


Why Post to SQL Accounting sometime prompt Catastrophic failure Error?

Possible Problem 1

Make sure you code don't cross over Call action during posting
Eg Posing SL_SO Header partly then suddenly call other object example Check Customer Code Validity
Summary action (Correct Steps)
01. Do Verify 1st (eg Check Customer Code Validity & etc)
02. Post Transactions

Possible Problem 2

Keep Login & Logout till windows not enough time to response
Summary action (Correct Steps)
01. Pull Data from Your application/web
02. Login SQL Accounting 1 time (Auto Login)
03. Do all your requirement actions (eg. verify, query & posting)
    eg Posting Cash Sales & Customer Payment
begin looping
  BizObject = ComServer.BizObjects.Find("SL_CS")
  ....
  BizObject.Save
  BizObject.Close
  FreeBiz(BizObject)
  
  BizObject = ComServer.BizObjects.Find("AR_PM")
  ....
  BizObject.Save
  BizObject.Close
  FreeBiz(BizObject)
  
  Next Record
End looping
04. Logout SQL Accounting 1 time (Auto Logout)
05. Push Data to Your application/web (if any)

Possible Problem 3

Company Profile Logo format had problem.
Solution
01. Click File | Company Profile
02. Export out the Logo by right Click the Company Logo
03. Open the Exported Logo with Photo Editor
04. Just Click File | Save again as jpg.
05. Load Back the Save Logo by right Click the Company Logo
06. Click Save

How to Get the GL Account List for Sales & Purchase?

You can use the function ComServer.DBManager.NewDataSet(lSQL) with the following SQL
SELECT  Code, Description, Description2 FROM GL_ACC A
WHERE (A.Parent<>-1
AND NOT (EXISTS (SELECT Parent FROM GL_ACC B
                 WHERE A.DocKey=B.Parent))
AND (A.SpecialAccType IS NULL OR A.SpecialAccType IN ('', 'AD')))
ORDER BY Code

Can I setup a testing/Staging environment for SQL Accounting?

Yes can, you can self setup or we can help you to setup.
There are 4 types of Testing/Staging
01. Install the Testing SQL Accounting version & Testing Database in the developer PC
02. Install the Live SQL Accounting version & User Backup Database in the developer PC
- Require User Permission for Backup
03. Setup at User PC/Server & using User Backup Database
- Require User Permission for Backup & PC/Server setup
04. Setup at User PC/Server & using Testing Database
- Require User Permission for PC/Server setup

How to Loop & post SQL Accounting?

Below summary how to loop
01. Call ComServer
02. Check Login
03. Call BizObject (eg SL_CS)
04. Begin Loop you data
05. Call Close BizObject (eg BizObject.Close)
06. Continue Call other BizObject (eg AR_PM)
07. Repeat Steps 4 & 5
08. Call Logout
09. Free ComServer

How to post Description3 with Unicode?

You have to convert it to rtf format before set to Description3 field
C Sharp
private static string FormatAsRTF(string DirtyText)
{
    System.Windows.Forms.RichTextBox rtf = new System.Windows.Forms.RichTextBox();
    rtf.Text = DirtyText;
    return rtf.Rtf;
}

....
 lDtl.FindField("DESCRIPTION3").AsString  = FormatAsRTF("ANTENNA ???");
...
VB.Net
Private Shared Function FormatAsRTF(ByVal DirtyText As String) As String
    Dim rtf As System.Windows.Forms.RichTextBox = New System.Windows.Forms.RichTextBox()
    rtf.Text = DirtyText
    Return rtf.Rtf
End Function

....
 lDtl.FindField("DESCRIPTION3").AsString  = FormatAsRTF("ANTENNA ???")
...
Delphi
function TfmMain.PlainTxtToRTF(const AValue:String):String;
var R:TRichEdit;
    M : TStringStream;
begin
  R := TRichEdit.CreateParented(HWND_MESSAGE);
  M := TStringStream.Create('');
  try
    R.WordWrap := False;
    R.Lines.Add(AValue);
    R.Lines.SaveToStream(M);
    Result := M.DataString;
  finally
    R.Free;
    M.Free;
  end;
end;

....
 lDtl.FindField('DESCRIPTION3').AsString  := PlainTxtToRTF('ANTENNA ???');
...
or Can use our build in Utility function (only available from 5.2022.941.822 & above)
....
 lDtl.FindField("Description3").AsString = ComServer.Utility.PlainTextToRichText("ANTENNA ??? ??")
...
PHP
<!DOCTYPE html>
<html>
<body>

<h1>SQL Acc SDK in PHP page</h1>

<?php
echo "Updated 14 Sep 2022<br>";
#This action to show & post Description3 with unicode

$ComServer = null;

function CheckLogin()
{
    global $ComServer;
    $ComServer = new COM("SQLAcc.BizApp", null, CP_UTF8) or die("Could not initialise SQLAcc.BizApp object.");
    $status = $ComServer->IsLogin();

    if ($status == true)
    {
        #$ComServer->Logout();
    }
    $ComServer->Login("ADMIN", "ADMIN", #UserName, Password
                      "C:\eStream\SQLAccounting\Share\Default.DCF",  #DCF file
                      "ACC-0082.FDB"); #Database Name
    
}

function GetData(){
    global $ComServer;
	
    $lSQL = "SELECT Description3 FROM ST_ITEM 
	     WHERE Code='ANT' ";
	
    $lDataSet = $ComServer->DBManager->NewDataSet($lSQL);

    if ($lDataSet->RecordCount > 0) {
	$lDataSet->First();
		
	$rtf = $lDataSet->FindField('Description3')->AsString();
		
        echo $rtf;		
	echo "<br>== <br>";
	echo "<br>Result after RTF: <br>";
	$txt = $ComServer->Utility->RichTextToPlainText($rtf);
	echo "<TEXTAREA rows=10 cols=80 id='edResult1' >".$txt. "</TEXTAREA>";
	echo "<br>== <br>";
	echo "??? ??";
	}else {
    echo "Record Not Found";
    }
}

function PostData(){
	global $ComServer;
	
	$BizObject = $ComServer->BizObjects->Find("ST_AJ");
    $lMain = $BizObject->DataSets->Find("MainDataSet"); 
    $lDetail = $BizObject->DataSets->Find("cdsDocDetail"); 
	
    $BizObject->New();
    $lMain->FindField("DocKey")->value = -1;
    $lMain->FindField("DocNo")->AsString = "<<New>>";
    $lMain->FindField("DocDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("PostDate")->value = "04/20/2020"; #MM/DD/YYYY
    $lMain->FindField("Description")->AsString = "Stock Adjustment";
	
    #Insert Data - Detail - Increase Stock Qty
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 1;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "Sales Item B";
    $lDetail->FindField("Qty")->AsFloat = 2;
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->Post();
    #Insert Data - Detail - Reduce Stock Qty
    $lDetail->Append();
    $lDetail->FindField("DtlKey")->value = -1;
    $lDetail->FindField("DocKey")->value = -1;
    $lDetail->FindField("Seq")->value = 2;
    $lDetail->FindField("ItemCode")->AsString = "ANT";
    $lDetail->FindField("Description")->AsString = "NOKIA CHARGER  ???";
	$lDetail->FindField("Description3")->AsString = $ComServer->Utility->PlainTextToRichText("NOKIA CHARGER ??? ??");
    $lDetail->FindField("Qty")->AsFloat = -5;
    $lDetail->FindField("UOM")->AsString = "UNIT";
    $lDetail->Post();
	
    $BizObject->Save();
    $BizObject->Close();
	
	try{
        $BizObject->Save();
        $BizObject->Close();
	}catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
    }	
}

if (isset($_POST['BtnData']))
{
    try
    {
        CheckLogin();
        GetData();
	echo "<br>";
        echo date("d M Y h:i:s A")." - Done";
	PostData();
	echo "<br>";
        echo date("d M Y h:i:s A")." - Done ST_AJ";			
    }
    finally
    {
        $ComServer->Logout();
        #free the object
        $ComServer = null;
    }
}

?> 
    <form method="post">           
        <input type="submit" name="BtnData"
                value="Get RTF n Post RTF"/> 
    </form> 
</body>
</html>

See also

  • Need assistance? May email to support@sql.com.my