PUBLIC go_Form
go_Form = CreateObject("frmForm")
go_Form.Visible = .T.
go_Form.Show
READ Events
CLOSE ALL
CLEAR ALL
*****
DEFINE CLASS frmForm As Form
DIMENSION aItems[1]
cItemCode = ""
Height = 360
Width = 780
MinWidth = This.Width
MinHeight = This.Height
MaxButton = .F.
MinButton = .F.
AutoCenter = .T.
Themes = .F.
ADD OBJECT cboItems as Combobox WITH ;
Top = 18, ;
Left = 12, ;
Height = 24, ;
Width = 180, ;
Style = 2, ;
ColumnCount = 2, ;
ColumnWidths = "150, 0"
PROCEDURE cboItems.Init()
Select cItemDesc, cItemCode FROM ITM ;
ORDER BY 1 ;
INTO ARRAY ThisForm.aItems
DIMENSION ThisForm.aItems[ALEN(ThisForm.aItems, 1) + 1, 2]
AINS(ThisForm.aItems, 1)
ThisForm.aItems[1, 1] = "All"
ThisForm.aItems[1, 2] = "ZZZZZ"
WITH This
.RowSourceType = 5
.RowSource = "ThisForm.aItems"
.Requery()
ENDWITH
This.Value = ThisForm.aItems[1,1]
ENDPROC
PROCEDURE cboItems.LostFocus()
ThisForm.cItemCode = ALLTRIM(This.List[This.ListIndex,2])
ENDPROC
PROCEDURE cboItems.InterActiveChange()
This.LostFocus()
ENDPROC
ADD OBJECT pgfBuySell as PageFrame WITH ;
Top = 60, ;
Left = 12, ;
Width = ThisForm.Width - 24, ;
Height = ThisForm.Height - 72, ;
Anchor = 15, ;
PageCount = 4
PROCEDURE pgfBuySell.Init()
LOCAL loPage, loFrame
FOR I = 1 TO This.pageCount
loPage = This.Pages(i)
loPage.AddObject("grdBuySell","grdBase")
loPage.Caption = ICASE(i = 1, "Bought", i = 2, "Sold", i = 3, "Bought/Sold", "Stock")
ENDFOR
ENDPROC
PROCEDURE POneClick()
SELECT ITM.cItemCode, ITM.cItemDesc, Item_In.dInDate , Item_In.iQuantity ;
FROM ITM ;
JOIN Item_In ON ITM.cItemCode = ITEM_IN.cItemCode ;
WHERE IIF(ThisForm.cItemCode = "ZZZZZ", .T., ITM.cItemCode = ThisForm.cItemCode) ;
ORDER BY 1, 3 ;
INTO CURSOR csrTemp
IF _Tally > 0
LOCATE
WITH This.pgfBuySell.Page1.grdBuySell
.ColumnCount = -1
.RecordSource = "csrTemp"
.Visible = .T.
.Column1.Header1.Caption = "Code"
.Column1.Width = 60
.Column2.Header1.Caption = "Description"
.Column2.Width = 90
.Column3.Header1.Caption = "Date"
.Column3.Width = 78
.Column4.Header1.Caption = "Units"
.Column4.Width = 60
ENDWITH
ELSE
WITH This.pgfBuySell.Page1.grdBuySell
.Visible = .F.
ENDWITH
= MessageBox("Nothing Bought", 16, "Buy", 3000)
ENDIF
This.Refresh()
ENDPROC
PROCEDURE PTwoClick()
SELECT ITM.cItemCode, ITM.cItemDesc, Item_Out.dDateOut, Item_Out.iQuantity * (-1) ;
FROM ITM ;
JOIN Item_Out ON ITM.cItemCode = ITEM_OUT.cItemCode ;
WHERE IIF(ThisForm.cItemCode = "ZZZZZ", .T., ITM.cItemCode = ThisForm.cItemCode) ;
ORDER BY 1, 3 ;
INTO CURSOR csrTemp
IF _Tally > 0
LOCATE
WITH This.pgfBuySell.Page2.grdBuySell
.ColumnCount = -1
.RecordSource = "csrTemp"
.Visible = .T.
.Column1.Header1.Caption = "Code"
.Column1.Width = 60
.Column2.Header1.Caption = "Description"
.Column2.Width = 90
.Column3.Header1.Caption = "Date"
.Column3.Width = 78
.Column4.Header1.Caption = "Units"
.Column4.Width = 60
ENDWITH
ELSE
WITH This.pgfBuySell.Page2.grdBuySell
.Visible = .F.
ENDWITH
= MessageBox("Nothing Sold", 16, "Sell", 3000)
ENDIF
This.Refresh()
ENDPROC
PROCEDURE PThreeClick()
LOCAL liAmount, lcItemCode
SELECT ITM.cItemCode, ITM.cItemDesc, Item_In.dInDate as dDate_In_Out , Item_In.iQuantity AS iQIn_Out ;
FROM ITM ;
JOIN Item_In ON ITM.cItemCode = ITEM_IN.cItemCode ;
WHERE IIF(ThisForm.cItemCode = "ZZZZZ", .T., ITM.cItemCode = ThisForm.cItemCode) ;
UNION ALL ;
SELECT ITM.cItemCode, ITM.cItemDesc, Item_Out.dDateOut as dDate_In_Out, Item_Out.iQuantity * (-1) AS iQIn_Out ;
FROM ITM ;
JOIN Item_Out ON ITM.cItemCode = ITEM_OUT.cItemCode ;
WHERE IIF(ThisForm.cItemCode = "ZZZZZ", .T., ITM.cItemCode = ThisForm.cItemCode) ;
ORDER BY 1, 3 ;
INTO CURSOR csrTemp
IF _Tally > 0
SELECT *, CAST(0 as I) AS iOnStock FROM csrTemp INTO CURSOR csrOnStock READWRITE
SELECT csrOnStock
liAmount = 0
lcItemCode = cItemCode
SCAN
IF cItemCode = lcItemCode
liAmount = liAmount + iQIn_Out
ELSE
lcItemCode = cItemCode
liAmount = iQIn_Out
ENDIF
Replace iOnStock WITH liAmount
ENDSCAN
LOCATE
WITH This.pgfBuySell.Page3.grdBuySell
.ColumnCount = -1
.RecordSource = "csrOnStock"
.Visible = .T.
.Column1.Header1.Caption = "Code"
.Column1.Width = 60
.Column2.Header1.Caption = "Description"
.Column2.Width = 90
.Column3.Header1.Caption = "Date"
.Column3.Width = 78
.Column4.Header1.Caption = "Units"
.Column4.Width = 60
.Column5.Header1.Caption = "OnStock"
.Column5.Width = 60
ENDWITH
ELSE
WITH This.pgfBuySell.Page3.grdBuySell
.Visible = .F.
ENDWITH
= MessageBox("Nothing Bought/Sold", 16, "Buy/Sell", 3000)
ENDIF
This.Refresh()
ENDPROC
PROCEDURE PFourClick()
SELECT ITM.cItemCode, ITM.cItemDesc, Item_In.iQuantity AS iQIn_Out ;
FROM ITM ;
JOIN Item_In ON ITM.cItemCode = ITEM_IN.cItemCode ;
UNION ALL ;
SELECT ITM.cItemCode, ITM.cItemDesc, Item_Out.iQuantity * (-1) AS iQIn_Out ;
FROM ITM ;
JOIN Item_Out ON ITM.cItemCode = ITEM_OUT.cItemCode ;
ORDER BY 1 ;
INTO CURSOR csrTemp
SELECT cItemCode, cItemDesc, SUM(iQIn_Out) ;
FROM csrTemp ;
GROUP BY 1, 2 ;
ORDER BY 1 ;
INTO CURSOR csrTable
LOCATE
WITH This.pgfBuySell.Page4.grdBuySell
.ColumnCount = -1
.RecordSource = "csrTable"
.Visible = .T.
.Column1.Header1.Caption = "Code"
.Column1.Width = 60
.Column2.Header1.Caption = "Description"
.Column2.Width = 90
.Column3.Header1.Caption = "OnStock"
.Column3.Width = 60
ENDWITH
This.Refresh()
ENDPROC
PROCEDURE Init()
BINDEVENT(This.pgfBuySell.Page1,"Click",This,"POneClick")
BINDEVENT(This.pgfBuySell.Page2,"Click",This,"PTwoClick")
BINDEVENT(This.pgfBuySell.Page3,"Click",This,"PThreeClick")
BINDEVENT(This.pgfBuySell.Page4,"Click",This,"PFourClick")
ENDPROC
PROCEDURE Load()
CREATE CURSOR ITM (cItemCode C(5), cItemDesc c(20))
INSERT INTO ITM VALUES ("AAAAA", "Ballpen")
INSERT INTO ITM VALUES ("AAAAB", "Ink")
INSERT INTO ITM VALUES ("AAAAC", "Paper")
INSERT INTO ITM VALUES ("AAAAD", "Chalk")
INSERT INTO ITM VALUES ("AAAAE", "Pencil")
CREATE CURSOR ITEM_IN (cItemCode C(5), dInDate D, iQuantity I)
INSERT INTO ITEM_IN VALUES ("AAAAA", {^2020-12-01}, 72)
INSERT INTO ITEM_IN VALUES ("AAAAA", {^2020-12-02}, 12)
INSERT INTO ITEM_IN VALUES ("AAAAB", {^2020-12-03}, 38)
INSERT INTO ITEM_IN VALUES ("AAAAB", {^2020-12-04}, 18)
INSERT INTO ITEM_IN VALUES ("AAAAB", {^2020-12-05}, 3)
INSERT INTO ITEM_IN VALUES ("AAAAC", {^2017-12-03}, 45)
INSERT INTO ITEM_IN VALUES ("AAAAC", {^2020-12-04}, 32)
INSERT INTO ITEM_IN VALUES ("AAAAD", {^2020-12-04}, 23)
CREATE CURSOR ITEM_OUT (cItemCode C(5), dDateOut D, iQuantity I)
INSERT INTO ITEM_OUT VALUES ("AAAAA", {^2020-12-04}, 12)
INSERT INTO ITEM_OUT VALUES ("AAAAA", {^2020-12-05}, 11)
INSERT INTO ITEM_OUT VALUES ("AAAAA", {^2020-12-06}, 7)
INSERT INTO ITEM_OUT VALUES ("AAAAA", {^2020-12-07}, 3)
INSERT INTO ITEM_OUT VALUES ("AAAAA", {^2020-12-08}, 14)
INSERT INTO ITEM_OUT VALUES ("AAAAB", {^2018-03-16}, 10)
INSERT INTO ITEM_OUT VALUES ("AAAAB", {^2018-03-15}, 9)
INSERT INTO ITEM_OUT VALUES ("AAAAC", {^2018-04-20}, 11)
ENDPROC
PROCEDURE Destroy()
CLEAR Events
ThisForm.Release
ENDPROC
ENDDEFINE
DEFINE CLASS grdBase AS Grid
Top = 12
Left = 12
Height = 240
Width = 732
RowHeight = 24
BackColor = RGB(0, 250, 250)
AllowRowSizing = .F.
HeaderHeight = 21
AllowHeaderSizing = .F.
DeleteMark = .F.
Anchor = 15
Visible = .F.
ENDDEFINE
*****