Next Chapter 59 Stock Ledger
PROJECT SOURCE CODE
SPONSORED LINKS
Stock Ledger
'******************************************************************
'******************************************************************
'** Author : Samee Ullah Siddiqui
'** Subject : Stock Ledger Report
'** Date : Saturday, September, 20, 2003
'** Modified : Tuesday, September, 23, 2003
'******************************************************************
'******************************************************************
Dim TEMPRST As ADODB.Recordset
Dim SQL As String
Private Sub CancelCmd_Click()
Unload Me
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Me.ActiveControl.Name = "ArgTxt" Then Exit Sub
If KeyCode = vbKeyReturn Then SendKeys "{TAB}"
If KeyCode = vbKeyEscape Then Call CancelCmd_Click
End Sub
Private Sub Form_Load()
DtFrom.Value = SelectedCompany.FromDate
DtTo.Value = Date
Set TEMPRST = New ADODB.Recordset
TEMPRST.CursorLocation = adUseClient
'Prepare Search Object
With Sobj
.DBConnectString = ConnectString
.SQLString = "SELECT ItemCode, Item_Desc FROM ITEM"
.PopulateList
Set .BoundTextBox = ArgTxt
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
TEMPRST.Close
Set TEMPRST = Nothing
End Sub
Private Sub OKCmd_Click()
Dim SQL As String
If ArgTxt.Tag = "" Then
MsgBox "Please Select Item to generate ledger.", vbCritical, "Missing Value"
ArgTxt.SetFocus
Exit Sub
End If
If DE.StockLgrConn.State = adStateOpen Then DE.StockLgrConn.Close
DE.StockLgrConn.Open ConnectString
Call PrepareStockLedgerData
If DE.rsStockLgrCmd.State = adStateOpen Then DE.rsStockLgrCmd.Close
DE.rsStockLgrCmd.Open "Select * From Stock_Ledger_Temp", DE.StockLgrConn, adOpenStatic, adLockReadOnly, adCmdText
Set StockLgrRpt.DataSource = DE
StockLgrRpt.Sections("ReportHeader").Controls("DtLbl").Caption = "Ledger Date From: " & Format(DtFrom.Value, "dd-mm-yyyy") & " To: " & Format(DtTo.Value, "dd-mm-yyyy")
StockLgrRpt.Sections("ReportHeader").Controls("ItemLbl").Caption = "Item : " & ArgTxt.Text
On Error GoTo ErHand
If Option1(0).Value Then
StockLgrRpt.Show
Else
StockLgrRpt.PrintReport
End If
ErHand:
ErrHandler "StockLgrFrm.CmdPrint"
End Sub
Private Function PrepareStockLedgerData() As Boolean
Dim VoucherType As String
Dim Qty, OpeningQty, SaleQty, SaleReturnQty, PurchaseQty, PurchaseReturnQty, BalanceQty As Double
Dim TempTable As New ADODB.Recordset
TempTable.CursorLocation = adUseClient
Dim rst As New ADODB.Recordset
rst.CursorLocation = adUseClient
DE.StockLgrConn.BeginTrans
'Get Opening Quantity
SQL = "SELECT Ledger.VDATE, Sum(CASE WHEN VTYPE='OP' THEN Qty ELSE 0 END) AS OPQTY, Sum( CASE WHEN VTYPE='PV' THEN Qty ELSE 0 END) AS PVQTY, Sum(CASE WHEN VTYPE='PR' THEN Qty ELSE 0 END ) AS PRQTY, " & _
"Sum(CASE WHEN VTYPE='SV' THEN Qty ELSE 0 END ) AS SVQTY, Sum(CASE WHEN VTYPE='SR' THEN Qty ELSE 0 END ) AS SRQTY From Ledger WHERE (((Ledger.ICODE)='" & ArgTxt.Tag & "') AND (Ledger.VDATE < '" & DtFrom.Value & "')) GROUP BY Ledger.VDATE;"
rst.Open SQL, DE.StockLgrConn, adOpenKeyset, adLockReadOnly, adCmdText
If rst.RecordCount > 0 Then OpeningQty = (IIf(IsNull(rst!OPQTY), 0, rst!OPQTY) + IIf(IsNull(rst!PVQTY), 0, rst!PVQTY) + IIf(IsNull(rst!SRQTY), 0, rst!SRQTY)) - (IIf(IsNull(rst!SVQTY), 0, rst!SVQTY) + IIf(IsNull(rst!PRQTY), 0, rst!PRQTY))
'Delete Old Records from Ledger Temporary Table
DE.StockLgrConn.Execute "DELETE FROM STOCK_LEDGER_TEMP", , adCmdText
'Transaction of Selected Item
If rst.State = adStateOpen Then rst.Close
SQL = "SELECT Ledger.VDATE, Ledger.VNO, Ledger.VTYPE, Sum(Ledger.QTY) AS SumOfQTY, Sale.ACDESC AS PartyName, Purchase.ACDESC AS SupplierName, Purchase.SUPP_INV_NO AS InvoiceNo, Purchase.SUPP_INV_DATE AS InvoiceDate " & _
"FROM Purchase RIGHT JOIN (Sale RIGHT JOIN Ledger ON (Sale.VTYPE = Ledger.VTYPE) AND (Sale.VNO = Ledger.VNO)) ON (Purchase.VNO = Ledger.VNO) AND (Purchase.VTYPE = Ledger.VTYPE) " & _
"WHERE (((Ledger.ICODE)='" & ArgTxt.Tag & "') AND (Ledger.VDATE BETWEEN '" & DtFrom.Value & "' AND '" & DtTo.Value & "')) " & _
"GROUP BY Ledger.VDATE, Ledger.VNO, Ledger.VTYPE, Sale.ACDESC, Purchase.ACDESC, Purchase.SUPP_INV_NO, Purchase.SUPP_INV_DATE ORDER BY LEDGER.VDATE, CONVERT(INT,SUBSTRING(LEDGER.VNO,2,LEN(LEDGER.VNO)-1))"
'MsgBox SQL
rst.Open SQL, DE.StockLgrConn, adOpenKeyset, adLockReadOnly, adCmdText
If Not rst.RecordCount > 0 Then GoTo EndLabel
TempTable.Open "Select * From Stock_Ledger_Temp", DE.StockLgrConn, adOpenKeyset, adLockOptimistic, adCmdText
With TempTable
rst.MoveFirst
Do Until rst.EOF
.AddNew
!vDate = IIf(IsNull(rst!vDate), Null, rst!vDate)
Qty = IIf(IsNull(rst!SumOfQty), 0, rst!SumOfQty)
VoucherType = UCase(IIf(IsNull(rst!VType), "", rst!VType))
!VType = VoucherType
!OPENING = (BalanceQty + OpeningQty)
Select Case VoucherType
Case "SV" 'Sale Voucher
!Vno = "To Sale Voucher No.: " & IIf(IsNull(rst!Vno), "", rst!Vno)
!Desc1 = "Sale To: " & IIf(IsNull(rst!partyname), "", rst!partyname)
!Sale = Qty
SaleQty = Qty
Case "SR" 'Sale Voucher
!Vno = "By Credit Note No.: " & IIf(IsNull(rst!Vno), "", rst!Vno)
!Desc1 = "Party : " & IIf(IsNull(rst!partyname), "", rst!partyname)
!SaleRtrn = Qty
SaleReturnQty = Qty
Case "OP" 'Opening Item Voucher
!Vno = "By Opening Voucher No.: " & IIf(IsNull(rst!Vno), "", rst!Vno)
!OPENING = !OPENING + Qty
OpeningQty = Qty
Case "PV" 'Purchase Voucher
!Vno = "By MRN No.: " & IIf(IsNull(rst!Vno), "", rst!Vno)
!Desc1 = "Supplier Name: " & IIf(IsNull(rst!SupplierName), "", rst!SupplierName)
!Desc2 = "Supplier Invoice No.: " & IIf(IsNull(rst!INVOICENO), "", rst!INVOICENO) & " Date : " & IIf(IsNull(rst!INVOICEDATE), Null, Format(rst!INVOICEDATE, "dd/mm/yyyy"))
!Purchase = Qty
PurchaseQty = Qty
Case "PR" 'Purchase Return
!Vno = "To Debit Note No.: " & IIf(IsNull(rst!Vno), "", rst!Vno)
!Desc1 = "Supplier Name: " & IIf(IsNull(rst!SupplierName), "", rst!SupplierName)
!Desc2 = "Supplier Invoice No.: " & IIf(IsNull(rst!INVOICENO), "", rst!INVOICENO) & " Date : " & IIf(IsNull(rst!INVOICEDATE), Null, Format(rst!INVOICEDATE, "dd/mm/yyyy"))
!PurchaseRtrn = Qty
PurchaseReturnQty = Qty
End Select
BalanceQty = (BalanceQty + OpeningQty + PurchaseQty + SaleReturnQty) - (SaleQty + PurchaseReturnQty)
!BALANCE = BalanceQty
OpeningQty = 0: PurchaseQty = 0: SaleReturnQty = 0: SaleQty = 0: PurchaseReturnQty = 0
rst.MoveNext
Loop
.Update
End With
EndLabel:
DE.StockLgrConn.CommitTrans
PrepareStockLedgerData = True
End Function
'Private Sub Timer11_Timer()
'On Error Resume Next
' If Not (ActiveControl.Name = "ArgTxt") Then
' If Sobj.ListVisible Then Sobj.HideList
' ElseIf (ActiveControl.Name = "ArgTxt") Then
' If Not Sobj.ListVisible Then
' Sobj.ShowList 490, 80, , MDIFrm
' If ActiveControl.Name = "ArgTxt" Then ArgTxt.SetFocus
' End If
' End If
'
'End Sub