📄 sales.pas
字号:
procedure TSalesForm.dbneQTYExit(Sender: TObject);
begin
LineGrid.DataSource.DataSet.Post;
LineGrid.SetFocus;
end;
procedure TSalesForm.dbneD1Exit(Sender: TObject);
begin
LineGrid.SetFocus;
end;
function TSalesForm.SavingAll: Boolean;
begin
DM1.qSales.Edit;
DM1.qSales.FieldByName('TRTIME').Value:=time;
DM1.qSales.FieldByName('TRSISA').Value:=DM1.qSales.FieldValues['CSISA'];
DM1.qSales.FieldByName('J_ANGSURAN').Value:=DM1.qSales.FieldValues['CJANG'];
DM1.qSales.FieldByName('TRDUE').Value:=DM1.qSales.FieldValues['GRANDTOTAL'];
//DM1.qSales.FieldByName('TRNO').Value:=AutoFakNo;
try
DM1.qSalesLine.DisableControls;
DM1.qSalesLine.First;
while not DM1.qSalesLine.Eof do
begin
if DM1.qSaleslineQTY.Value<=0 then
begin
DM1.qSalesline.Delete
end else
begin
DM1.qSalesLine.Edit;
DM1.qSalesLine.FieldByName('TRNO').Value:=DM1.qSales.FieldValues['TRNO'];
DM1.qSalesLineNETPRICE.Value:=DM1.qSalesLineCSUBTOTAL.Value/DM1.qSalesLineQTY.Value;
DM1.qSalesline.Post;
end;
DM1.qSalesLine.Next;
end;
finally
DM1.qSalesLine.EnableControls;
end;
//DM1.qSales.Post;
try
DM1.dtaCon.StartTransaction;
DM1.qSalesline.ApplyUpdates; DM1.qSalesline.CommitUpdates;
DM1.qSales.ApplyUpdates; DM1.qSalesline.CommitUpdates;
//PostingSales;
PiutangCard;
DM1.dtaCon.Commit;
Result:= True;
except
on E : Exception do
begin
ShowMessage(E.Message);
DM1.dtaCon.Rollback;
Result:= False;
end;
end;
end;
procedure TSalesForm.btnSaveClick(Sender: TObject);
begin
if SavingAll then
begin
if Confirm('Print Faktur Penjualan ?'
+CHR(13)+'FAKTUR-NO.# '+ DM1.qSales.fieldbyname('TRNO').Value) Then DirectPrint;
end;
Close;
end;
procedure TSalesForm.DirectPrint;
var
ReportName: string;
begin
ReportName:='Nota';
with frxreport1 do
begin
terbilang := '#'+UpperCase(ConvertToWords(DM1.qSalesTRDUE.Value, True))+'#';
LoadFromFile(ExtractFilePath(ParamStr(0)) + '..\Reports\'+ReportName+'.fr3');
PrepareReport;
PrintOptions.ShowDialog:=False;
PrintOptions.PageNumbers:='1';
Print;
end;
end;
procedure TSalesForm.frxReport1GetValue(const VarName: String;
var Value: Variant);
begin
if CompareText(VarName, 'status') = 0 then Value := '';
if CompareText(VarName, 'terbilang') = 0 then Value := terbilang;
end;
procedure TSalesForm.btnCancelClick(Sender: TObject);
begin
with SQLp do
begin
Script.Clear;
Script.Add('DELETE FROM REGSPNO WHERE SPNO=:nSP ;');
ParamByName('nSP').Value:=SPNOEDIT.Field.Value;
Execute;
end;
Close;
end;
procedure TSalesForm.dsSalesDataChange(Sender: TObject; Field: TField);
begin
//terbilang := '#'+UpperCase(ConvertToWords(DM1.qSalesGRANDTOTAL.Value, True))+'#';
//if (DM1.qSalesHITLIMIT.Value<=0) and not (SjLgnSource.DataSet.FieldByName('LGNCODE').IsNull) then JvImage1.Visible:=true else JvImage1.Visible:=false;
if (DM1.qSalesGRANDTOTAL.Value<=0) or
(LKSalesman.Value='0') or (LkJTempo.Value='0') then
btnSave.Enabled:=False else btnSave.Enabled:=true;
end;
procedure TSalesForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
//DM1.lgnBySales.Close;DM1.salesmanBySales.Close;DM1.ItemBySales.Close;
end;
procedure TSalesForm.PostingSales;
var
PrevRecord: TBookMark;
begin
//Posting Item kepada Inventory
PrevRecord := DM1.qSALESLINE.GetBookmark;
try
DM1.qSALESLINE.DisableControls;
DM1.qSALESLINE.First;
while not DM1.qSALESLINE.Eof do
begin
with qSQL do
begin
Close;
SQL.clear;
SQL.Add('UPDATE ITEM,SALESLINE SET ITEM.ONHAND = '+
'ITEM.ONHAND - :nQTY,SALESLINE.POSTED=1 '+
'WHERE ITEM.ITEMCODE=:nCode AND SALESLINE.TRNO=:nTRNO');
ParamByName('nCode').Value :=DM1.qSalesLineITEMCODE.Value;
ParamByName('nQTY').Value :=DM1.qSalesLineQTY.Value;
ParamByName('nTRNO').Value :=DM1.qSalesTRNO.Value;
ExecSQL;
end;
DM1.qSALESLINE.Next;
end;
finally
DM1.qSALESLINE.EnableControls;
if PrevRecord <> nil then
begin
DM1.qSALESLINE.GotoBookmark(PrevRecord);
DM1.qSALESLINE.FreeBookmark(PrevRecord);
end;
end;
//Posting Piutang Langganan dari table sales
try
DM1.qSales.DisableControls;
with qSQL do
begin
Close;
SQL.clear;
SQL.Add('UPDATE LGN,SALES SET LGN.CURBAL = '+
'LGN.CURBAL + :nBAL,SALES.POSTED=1 '+
'WHERE LGN.LGNCODE=:nCode AND SALES.TRNO=:nTRNO');
ParamByName('nCode').Value :=DM1.qSalesLGNCODE.Value;
ParamByName('nBal').Value :=DM1.qSalesTRDUE.Value;
ParamByName('nTRNO').Value :=DM1.qSalesTRNO.Value;
ExecSQL;
end;
finally
DM1.qSales.EnableControls;
end;
end;
procedure TSalesForm.PiutangCard;
var
i:integer;
N:integer;
a:integer;
x:integer;
p:Double; //uang muka yg dibayar...
sqltext: string;
begin
{if DM1.qSalesTRDP.Value <> 0 then
p:=DataMod.SJLINEDISCOUNT.Value/DataMod.SJLINEANGSURAN.Value else p:=0;
}
if DM1.qSalesJTEMPO.Value='BULAN' then
begin
DM1.qSalesLINE.First;
N:=DM1.qSalesANGSURAN.AsInteger;
a:=0;
for i:=1 to N do begin
a:=a+30;
with SQLp do
begin
Script.Clear;
sqltext:= 'INSERT INTO SALESPAYCARD (SPNO,PAYNO,DUEDATE,LGNCODE,AMOUNT,PAYED) VALUES '+
'(:nSP,:ni,:ndue,:nLgn,:njang,0);';
Script.Add(sqltext);
ParamByName('nSP').Value:=DM1.qSalesTRNO.Value;
ParamByName('ni').Value:=i;
ParamByName('ndue').AsDate:=(DM1.qSalesTRDATE.Value+a);
ParamByName('nLgn').Value:=DM1.qSalesLGNCODE.Value;
ParamByName('njang').Value:=DM1.qSalesJ_ANGSURAN.Value;
Execute;
end;
//HK1.SetPosition(i,N);
end;
end;
if DM1.qSalesJTEMPO.Value='MINGGU' then
begin
DM1.qSalesLINE.First;
N:=DM1.qSalesANGSURAN.AsInteger;
a:=0;
for i:=1 to N do begin
a:=a+7;
with SQLp do
begin
Script.Clear;
sqltext:= 'INSERT INTO SALESPAYCARD (SPNO,PAYNO,DUEDATE,LGNCODE,AMOUNT,PAYED) VALUES '+
'(:nSP,:ni,:ndue,:nLgn,:njang,0);';
Script.Add(sqltext);
ParamByName('nSP').Value:=DM1.qSalesTRNO.Value;
ParamByName('ni').Value:=i;
ParamByName('ndue').AsDate:=(DM1.qSalesTRDATE.Value+a);
ParamByName('nLgn').Value:=DM1.qSalesLGNCODE.Value;
ParamByName('njang').Value:=DM1.qSalesJ_ANGSURAN.Value;
Execute;
end;
//HK1.SetPosition(i,N);
end;
end;
if DM1.qSalesJTEMPO.Value='HARI' then
begin
DM1.qSalesLINE.First;
N:=DM1.qSalesANGSURAN.AsInteger;
for i:=1 to N do begin
with SQLp do
begin
Script.Clear;
sqltext:= 'INSERT INTO SALESPAYCARD (SPNO,PAYNO,DUEDATE,LGNCODE,AMOUNT,PAYED) VALUES '+
'(:nSP,:ni,:ndue,:nLgn,:njang,0);';
Script.Add(sqltext);
ParamByName('nSP').Value:=DM1.qSalesTRNO.Value;
ParamByName('ni').Value:=i;
ParamByName('ndue').AsDate:=(DM1.qSalesTRDATE.Value+i);
ParamByName('nLgn').Value:=DM1.qSalesLGNCODE.Value;
ParamByName('njang').Value:=DM1.qSalesJ_ANGSURAN.Value;
Execute;
end;
//HK1.SetPosition(i,N);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -