📄 sales.pas
字号:
unit Sales;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, JvGradientCaption, ImgList, DB, ComCtrls,
StdCtrls, Buttons, JvExControls, JvComponent, JvDBLookup, Grids, DBGrids,
JvExDBGrids, JvDBGrid, JvDBUltimGrid, DBNumEdit, JvToolEdit,
JvDBControls, JvExMask, DBCtrls, Mask, JvStaticText, JclStrings, JclDateTime,
ZAbstractRODataset,ZAbstractDataset, ZDataset, JvDBGridFooter, ExtCtrls,
JvExExtCtrls, JvImage, DynamicSkinForm, ovcbase, ovcef, ovcpb, ovcnf,
ovcdbnf, ovcpf, ovcdbpf, rxToolEdit, rxCurrEdit, RXDBCtrl, DBNumEditAlt;
type
TSalesForm = class(TForm)
LineSource: TDataSource;
SjLgnSource: TDataSource;
dsSales: TDataSource;
GroupBox1: TGroupBox;
LgnEdit: TJvDBComboEdit;
Memo1: TMemo;
GB2: TGroupBox;
SPNOEDIT: TDBEdit;
SJDateEdit: TJvDBDateEdit;
JvStaticText2: TJvStaticText;
GroupBox3: TGroupBox;
LineGrid: TJvDBUltimGrid;
dbneD1: TDBNumEdit;
GroupBox4: TGroupBox;
JvStaticText1: TJvStaticText;
DBEdit1: TDBEdit;
JvStaticText5: TJvStaticText;
DBEdit2: TDBEdit;
btnSave: TBitBtn;
btnCancel: TBitBtn;
dsSalesman: TDataSource;
dbneQTY: TDBNumEdit;
dsSatItem: TDataSource;
JvStaticText3: TJvStaticText;
LkSat: TJvDBLookupCombo;
dsItemBySales: TDataSource;
JvDBGrid1: TJvDBGrid;
frxReport1: TfrxReport;
spDynamicSkinForm1: TspDynamicSkinForm;
JvStaticText4: TJvStaticText;
JvStaticText7: TJvStaticText;
LkJtempo: TJvDBLookupCombo;
JvStaticText6: TJvStaticText;
LKSalesman: TJvDBLookupCombo;
Bevel1: TBevel;
JvStaticText9: TJvStaticText;
DBEdit3: TDBEdit;
JvStaticText8: TJvStaticText;
JCCEdit: TDBNumEdit;
JvStaticText10: TJvStaticText;
dbneDP: TDBNumEditAlt;
procedure PickLgnNo(Sender: TObject);
procedure PickPartNo(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure LineGridKeyPress(Sender: TObject; var Key: Char);
procedure LineGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SjLgnSourceDataChange(Sender: TObject; Field: TField);
procedure JCCEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure LkSatChange(Sender: TObject);
procedure dbneQTYKeyPress(Sender: TObject; var Key: Char);
procedure dbneD2Exit(Sender: TObject);
procedure dbneQTYExit(Sender: TObject);
procedure dbneD1Exit(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure dsSalesDataChange(Sender: TObject; Field: TField);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure frxReport1GetValue(const VarName: String;
var Value: Variant);
private
function CodeValidate: Boolean;
procedure PostingSales;
function SavingAll: Boolean;
procedure DirectPrint;
procedure PiutangCard;
public
procedure Enter(nSP: String);
end;
var
SalesForm: TSalesForm;
terbilang: string;
implementation
uses DataMod1, Main, FuncLib, FindItem, FindLgn, RPreview, NumberToWords,
SelectGudang;
{$R *.dfm}
procedure TSalesForm.Enter(nSP: String);
begin
SelectGudangForm:=TSelectGudangForm.Create(nil);
if SelectGudangForm.ShowModalCODE = mrOk then
begin
try
DM1.lgnBySales.Close;DM1.ItemBySales.Close;
with DM1.qSales do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM SALES WHERE TRNO=:nSP ');
ParamByName('nSP').Value:=nSP;
Open;
end;
DM1.qSales.Append;
DM1.qSalesTRNO.Value:=nSP;
finally
MainForm.CreateMDIChild(TSalesForm);
end;
end else
begin
Abort;
end;
end;
procedure TSalesForm.PickLgnNo(Sender: TObject);
begin
FindLgnForm:=TFindLgnForm.Create(Self);
if FindLgnForm.ShowModalCODE = mrOk then
begin
DM1.qSALES.Edit;
DM1.qSALESLGNCODE.Value := FindLgnForm.CODE;
end;
end;
procedure TSalesForm.PickPartNo(Sender: TObject);
begin
DM1.qSaleslineITEMCODE.FocusControl;
FindItemForm:=TFindItemForm.Create(Self);
if FindItemForm.ShowModalCODE = mrOk then
begin
if not DM1.qSalesline.Locate('ITEMCODE',FindItemForm.CODE,[]) then
begin
DM1.qSalesline.Append;
DM1.qSALESLINE.Edit;
DM1.qSALESLINEITEMCODE.Value := FindItemForm.CODE;
if CodeValidate then LineGrid.SelectedField:=DM1.qSalesLineQTY;
end else
begin
LineGrid.SelectedField:=DM1.qSalesLineQTY;
end;
end;
end;
function TSalesForm.CodeValidate: Boolean;
begin
//if DM1.ItemBySales.State in [dsInActive] then PickPartNo(linegrid);
if DM1.ItemBySales.RecordCount<>0 then
begin
Result:=True;
DM1.qSalesLine.Edit;
DM1.qSalesLineITEMNAME.Value := DM1.ItemBySales.FieldValues['ITEMNAME'];
DM1.qSalesLinePRICE.Value := DM1.ItemBySales.FieldValues['SELLPRICE'];
DM1.qSalesLineSAT.Value := DM1.ItemBySales.FieldValues['SAT'];
end else
begin
Result:=False;
DM1.qSalesLine.Delete;
end;
end;
procedure TSalesForm.FormCreate(Sender: TObject);
begin
DateSeparator := '-'; ShortDateFormat := 'dd/mm/yyyy';
Top := 1; Left := 1; Width := 785; Height := 495;
end;
procedure TSalesForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
if not (ActiveControl is TDBGrid) then
begin
key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end
end;
procedure TSalesForm.LineGridKeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['a'..'z'] then Dec(Key,32);
if (key = Chr(9)) then LineGrid.SelectedField := DM1.qSaleslineITEMCODE;
if (key = #13) then
begin
with TJvDBUltimGrid(ActiveControl) do
begin
if selectedindex = 1 then
begin
if CodeValidate then SelectedField:=DM1.qSalesLineQTY;
end else if SelectedField = DM1.qSalesLineQTY then
begin
SelectedField:=DM1.qSalesLineDISC_1;
end else if SelectedField = DM1.qSalesLineDISC_1 then
begin
SelectedField:=LineSource.DataSet.FieldByName('ITEMCODE');
//if (DM1.qSalesLine.RecordCount<=11) and (DM1.itemBySalesHITSALDO.Value>=0) and (DM1.qSalesLineQTY.Value>0) then DM1.qSalesLine.Append;
if (DM1.qSalesLine.RecordCount<=11) and (DM1.qSalesLineQTY.Value>0) then DM1.qSalesLine.Append;
end;
end;
end;
end;
procedure TSalesForm.LineGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=(vk_f1) then PickPartNo(Sender);
if (Shift = [ssCtrl]) and (Key = VK_DELETE) then Key := 0;
if (key in [vk_next, vk_insert]) then key:=0;
If (key in [vk_delete]) and (DM1.qSalesLine.State in [dsBrowse]) then
DM1.qSalesLine.Delete;
end;
procedure TSalesForm.SjLgnSourceDataChange(Sender: TObject; Field: TField);
begin
Memo1.Clear;
if DM1.LgnBySales.RecordCount=1 then
begin
Memo1.Text := SjLgnSource.DataSet.FieldValues['JENIS']+' - '+
SjLgnSource.DataSet.FieldValues['NAMALGN']+#13#10+
SjLgnSource.DataSet.FieldValues['ADDRESS']+'-'+
SjLgnSource.DataSet.FieldValues['CITY'];
end;
end;
procedure TSalesForm.JCCEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=(vk_return) then Perform(WM_NEXTDLGCTL, 0, 0);
end;
procedure TSalesForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=caFree;
end;
procedure TSalesForm.LkSatChange(Sender: TObject);
begin
DM1.qSalesLinePRICE.Value:=dsSatItem.DataSet.FieldValues['SELLPRICE'];
end;
procedure TSalesForm.dbneQTYKeyPress(Sender: TObject; var Key: Char);
begin
//if Key in ['a'..'z'] then Dec(Key,32);
end;
procedure TSalesForm.dbneD2Exit(Sender: TObject);
begin
LineGrid.SetFocus;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -