⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pfm_fdtcdok.pas

📁 POS收银系统
💻 PAS
字号:
unit pfm_fdtcdok;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls, Mask,
  Buttons, pvar_lib;

type
  Tfm_fdtcdok = class(TForm)
    DataSource1: TDataSource;
    Query1: TQuery;
    GroupBox1: TGroupBox;
    TV1: TTreeView;
    DBGrid1: TDBGrid;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    BBtnRevise: TBitBtn;
    Label2: TLabel;
    BBtnThd: TBitBtn;
    DBEdit2: TDBEdit;
    Splitter1: TSplitter;
    Label3: TLabel;
    SProc1: TStoredProc;
    Label4: TLabel;
    Edit1: TEdit;
    Label5: TLabel;
    Edit2: TEdit;
    DateTimePicker1: TDateTimePicker;
    Label6: TLabel;
    Label7: TLabel;
    TabfdThd: TTable;
    BatMove1: TBatchMove;
    Query2: TQuery;
    Table1: TTable;
    DataSource2: TDataSource;
    CbBox1: TComboBox;
    Query2id: TIntegerField;
    Query2fdmc: TStringField;
    Query2spbm: TStringField;
    Query2sptxm: TStringField;
    Query2spnum: TFloatField;
    Query2oldspnum: TFloatField;
    Query2spmc: TStringField;
    Query2ckmc: TStringField;
    Query2djhm: TStringField;
    Query2rq: TDateTimeField;
    Query2jsrm: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure BBtnReviseClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BBtnThdClick(Sender: TObject);
    procedure TV1Click(Sender: TObject);
    procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    procedure Query2AfterOpen(DataSet: TDataSet);
    procedure Table1AfterPost(DataSet: TDataSet);
    procedure CbBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fm_fdtcdok: Tfm_fdtcdok;

implementation

uses pfm_fdthdselck;

{$R *.DFM}
var
CompFdmc:TstringList;
GridColName:Tstringlist;
thdLsh:integer;
procedure Tfm_fdtcdok.FormCreate(Sender: TObject);
var
tvnoderoot:TTreeNode;
//i:integer;
begin
    CompFdmc:=TStringlist.create;
    GridColName:=TStringlist.create;
    GridColName.add('fdmc=分店名称');
    GridColName.add('spbm=商品编码');
    GridColName.add('sptxm=商品条形码');
    GridColName.add('spnum=确认退仓商品数量');
    GridColName.add('oldspnum=退仓商品数量');
    GridColName.add('spmc=商品名称');
    GridColName.add('jsrm=经办人码');
    GridColName.add('rq=日期');
    GridColName.add('ckmc=仓库名称');
    GridColName.add('djhm=单据号码');
    query1.SQL.add('select fdmc,fdset from t_fendianxx');
    query1.open;
    tvnoderoot:=TV1.Items.add(nil,'全部分店');
    compFdmc.add('全部分店=all');
    while not query1.Eof do
    begin
        TV1.Items.Addchild(tvnoderoot,query1.fieldbyname('fdmc').asstring);
        compFdmc.add(query1.fieldbyname('fdmc').asstring + '='+query1.fieldbyname('fdset').asstring);
        query1.Next;

    end;
    query1.active:=false;
    query1.sql.clear;
    query1.SQL.add('select ckmc from t_ckxx');
    query1.open;
    while not query1.Eof do
    begin
        cbbox1.items.add(query1.fieldbyname('ckmc').asstring);
        query1.next;
    end;

   //利用存储过程取得提货单的最大流水号

    sproc1.Prepare;
    SProc1.Params[1].value:='tb_mdtcd';
    Sproc1.ExecProc;
    thdLsh:=sproc1.Params[2].value+1;
    sproc1.UnPrepare;
    edit1.text:=inttostr(thdlsh);


end;




procedure Tfm_fdtcdok.BBtnReviseClick(Sender: TObject);
begin
   if table1.State=dsEdit then
    begin
        table1.post;
   end;
end;

procedure Tfm_fdtcdok.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    CompFdmc.free;
    GridColName.free;
    Action:=CaFree;
end;

procedure Tfm_fdtcdok.BBtnThdClick(Sender: TObject);
var
cnt:integer;
thnum:integer;
sptxm:string;
spbm,djhm:string;
fdset:string;
dbfile:string;
i:integer;
begin
    if length(edit2.text)=0 then
    begin
        showmessage('请选择分店');
        exit;
    end;

    cnt:=0;
    query2.First;
    while not query2.Eof do
    begin
        if query2.FieldByName('spnum').asinteger>query2.FieldByName('oldspnum').asinteger then
        begin
            showmessage('确认退仓商品['+query2.FieldByName('spmc').asstring
            +']不能大于原来的退仓商品数量');
            exit;
        end;
        cnt:=cnt+1;
        query2.Next;
    end;
    label3.caption:='退仓商品种类共'+inttostr(cnt)+'种';
    if cnt=0 then exit;
    //生成退仓单和退仓单明细
    query1.sql.clear;
    query1.SQL.add('insert into tb_mdtcd(lsh,ckmc,thfd,rq) values('+
    inttostr(thdlsh)+','''+cbbox1.text+''','''+edit2.text+''','''+datetostr(now())+''')');
    query1.ExecSQL;
    query1.close;
    query2.First;
    while not query2.Eof do
    begin
        sptxm:=query2.FieldByName('sptxm').asstring;
        spbm:=query2.FieldByName('spbm').asstring;
        thnum:=query2.FieldByName('spnum').asinteger;
        djhm:=query2.FieldByName('djhm').asstring;
        if thnum=0 then continue;
        query1.SQL.clear;
        query1.sql.Add('insert into tb_mdtcdmx(lsh,spbm,sptxm,tcnum,djhm) values('+inttostr(thdlsh)+','''+spbm+''','''+sptxm+''','+inttostr(thnum)+','''+djhm+''')');
        query1.ExecSQL;
        query1.close;
        query2.Next;
    end;

    fdset:=CompFdmc.Values[edit2.Text];
    dbfile:='comdata\retfddata\retfdtcd'+fdset+'.db';
    batmove1.mode:=batCopy;
    if fileExists(dbfile) then
    begin
        if application.messagebox(pchar(tv1.Selected.Text+'的退仓单还没传送出去,是追加新纪录按YES,覆盖按NO'),
        pchar('生成确认退仓单'),MB_YESNO)=IDYES then
        begin
            batmove1.Mode:=batAppend;
        end;
    end;

   tabFdthd.tablename:=dbfile;

   //保存提货内容到dbf文件中
   batmove1.Source:=query2;
   Batmove1.Execute;
   query2.active:=false;
   query1.sql.Clear;
   query1.sql.add('delete from tab_fdtcd where fdmc='''+edit2.text+''' and ckmc='''+cbbox1.text+'''');
   query1.ExecSQL;
   query1.close;
   query2.active:=true;
   dbgrid1.Refresh;
   for i:=0 to dbgrid1.columns.count-1 do
    begin
        dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
    end;
    AddOptRecord('生成分店退货确认单:流水号('+inttostr(thdlsh)+'),仓库代码('+cbbox1.text+'),分店代码('+edit2.text+')');
end;
procedure Tfm_fdtcdok.TV1Click(Sender: TObject);
begin
    if tv1.selected.Level=1 then
    begin
        query2.Filter:='fdmc='''+tv1.selected.Text+'''';
        query2.Filtered:=true;
        edit2.text:=tv1.selected.text;
    end
    else
    begin
        edit2.text:='';
    end;

end;

procedure Tfm_fdtcdok.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
{    if lowercase(field.fieldName)='spnum' then
    begin
         if field.AsInteger<=query2.Fieldbyname('stocknum').asinteger then
            (sender as tdbgrid).Canvas.Font.Color:=clGreen

         else
            (sender as tdbgrid).Canvas.Font.Color:=clRed;
    end;
     (sender as tdbgrid).DefaultDrawDataCell(Rect, Field, State);   }
 //如果确认数量大于库存数量
    if (query2.fieldbyname('spnum').asfloat<>query2.fieldbyname('oldspnum').asfloat) and (not(gdselected in state)) then
    begin
        (sender as tdbgrid).Canvas.Brush.Color:=RGB(219,253,253);
        (sender as tdbgrid).Canvas.font.Color:=clred;
    end;
     (sender as tdbgrid).DefaultDrawDataCell(Rect, Field, State);
end;

procedure Tfm_fdtcdok.Query2AfterOpen(DataSet: TDataSet);
var
i:integer;
begin
   for i:=0 to dbgrid1.columns.count-1 do
    begin
        dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
    end;
end;

procedure Tfm_fdtcdok.Table1AfterPost(DataSet: TDataSet);
var
i:integer;
begin
    query2.close;
    query2.open;
    for i:=0 to dbgrid1.columns.count-1 do
    begin
        dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
    end;
    
        //dbgrid1.Refresh;
end;

procedure Tfm_fdtcdok.CbBox1Change(Sender: TObject);
var
i:integer;
begin
   table1.Close;
   query2.close;
   query2.ParamByName('ckmc').asstring:=cbbox1.text;
   query2.Open;
   table1.Open;
 {  for i:=0 to dbgrid1.columns.count-1 do
    begin
        dbgrid1.columns[i].Title.caption:=GridColName.values[dbgrid1.columns[i].FieldName];
    end;}
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -