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

📄 pfm_pfdmx.pas

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

interface

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

type
  Tfm_pfdmx = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label18: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit18: TDBEdit;
    DBEdit23: TDBEdit;
    DBEdit24: TDBEdit;
    DBEdit25: TDBEdit;
    DBEdit26: TDBEdit;
    DBEdit27: TDBEdit;
    DBEdit28: TDBEdit;
    DBEdit29: TDBEdit;
    DBEdit30: TDBEdit;
    DBEdit31: TDBEdit;
    DBEdit32: TDBEdit;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label5: TLabel;
    Label16: TLabel;
    Label11: TLabel;
    Label21: TLabel;
    Label20: TLabel;
    Label22: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Query3: TQuery;
    Query3spbm: TStringField;
    Query3sptxm: TStringField;
    Query3spmc: TStringField;
    Query3ggxh: TStringField;
    Query3dengji: TStringField;
    Query3zhuangtai: TStringField;
    Query3baozhuangdw: TStringField;
    Query3baozhuangsl: TStringField;
    Query3hh: TStringField;
    Query3gysmc: TStringField;
    Query3cd: TStringField;
    Query3xsfs: TStringField;
    Query3wsjj: TFloatField;
    Query3jhsl: TFloatField;
    Query3wsdj: TFloatField;
    Query3xssl: TFloatField;
    Query3yhl: TFloatField;
    Query3splb: TStringField;
    DataSource3: TDataSource;
    BitBtn_quit: TBitBtn;
    BBtn_yskcl: TBitBtn;
    GroupBox3: TGroupBox;
    LView1: TListView;
    Panel1: TPanel;
    Edit11: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit12: TEdit;
    Label6: TLabel;
    Edit13: TEdit;
    Query1: TQuery;
    Label15: TLabel;
    Edit7: TEdit;
    Label14: TLabel;
    Edit5: TEdit;
    Label17: TLabel;
    Edit6: TEdit;
    lbltishi: TLabel;
    BBtnpfd: TBitBtn;
    BBtncancel: TBitBtn;
    BBtnSave: TBitBtn;
    BBtndel: TBitBtn;
    Edit14: TEdit;
    Label7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BBtn_yskclClick(Sender: TObject);
    procedure Edit11KeyPress(Sender: TObject; var Key: Char);
    procedure Edit12KeyPress(Sender: TObject; var Key: Char);
    procedure Edit13KeyPress(Sender: TObject; var Key: Char);
    procedure Edit7KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure BBtndelClick(Sender: TObject);
    procedure BBtnpfdClick(Sender: TObject);
    procedure BBtncancelClick(Sender: TObject);
    procedure BBtnSaveClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Edit14KeyPress(Sender: TObject; var Key: Char);
    procedure LView1Click(Sender: TObject);
  private
    { Private declarations }
    function MyCheckData():boolean;
    function GetSpxx(spcode:string):boolean;
  public
    { Public declarations }
  end;

var
  fm_pfdmx: Tfm_pfdmx;
implementation

uses pfm_yfkcl;



{$R *.DFM}

procedure Tfm_pfdmx.FormCreate(Sender: TObject);
var
i:integer;
lvcol:TListColumn;
begin
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='商品编码';
    lvcol.width:=60;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='商品条形码';
    lvcol.width:=110;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='商品名称';
    lvcol.width:=120;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='商品数量';
    lvcol.width:=80;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='批发价';
    lvcol.width:=80;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='折扣';
    lvcol.width:=80;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='合同号';
    lvcol.width:=100;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='单据号';
    lvcol.width:=100;
    lvcol:=lview1.Columns.Add();
    lvcol.Caption:='发票号';
    lvcol.width:=100;

    for i:= 0 to componentcount-1 do
    begin
        if components[i].ClassName='TEdit' then
        begin
            (components[i] as tedit).text:='';
        end;
    end;

end;

function Tfm_pfdmx.MyCheckData():boolean;
begin

        myCheckData:=true;
end;
procedure Tfm_pfdmx.FormClose(Sender: TObject; var Action: TCloseAction);
begin
        action:=caFree;
end;

procedure Tfm_pfdmx.BBtn_yskclClick(Sender: TObject);
begin
 if application.MessageBox('是否进货明细单录入完成,#13填写应付款单','注意',MB_YESNO)=ID_NO then
  begin
      exit;
  end;

  fm_yfkcl:=tfm_yfkcl.create(application);
  fm_yfkcl.Edit1.Text:=edit1.text;
  fm_yfkcl.edit2.text:=edit2.text;
  fm_yfkcl.showmodal;
end;

procedure Tfm_pfdmx.Edit11KeyPress(Sender: TObject; var Key: Char);
var
ListItem:Tlistitem;
begin
    //商品编码或条形码
    if key<>#13 then exit;
    if getspxx(edit11.text)=false then
    begin
        edit11.text:='';
        lbltishi.caption:='没有这个商品';
        exit;
    end;
    if not query3.eof then
    begin

        ListItem:=LView1.items.Insert(0);
        ListItem.Caption:=query3.fieldbyname('spbm').asstring;
        LIstItem.SubItems.add(query3.fieldbyname('sptxm').asstring);
        LIstItem.SubItems.add(query3.fieldbyname('spmc').asstring);
        LIstItem.SubItems.add('1');// 2-进货数量
        LIstItem.SubItems.add(query3.fieldbyname('wsdj').asstring);//3-无税单价
        LIstItem.SubItems.add('100');//4-折扣
        LIstItem.SubItems.add(edit7.text);//5-合同号
        LIstItem.SubItems.add(edit5.text);//6-单据号
        LIstItem.SubItems.add(edit6.text);//7-发票号
        ListItem.selected:=true;
        edit12.text:='1';
        edit13.Text:=query3.fieldbyname('wsdj').asstring;

        edit12.SetFocus;
    end
    else
    begin
        edit11.text:='';
        lbltishi.caption:='没有这个商品';
    end;


end;
function Tfm_pfdmx.GetSpxx(spcode:string):boolean;
var
spcodelen:integer;
tmpstr:string;
begin
    spcodelen:=length(spcode);
    if spcodelen<=6 then
    begin
         tmpstr:='000000'+spcode;
         spcode:=copy(tmpstr,spcodelen+1,6);
         spcodelen:=6;
    end
    else if spcodelen<>13 then //输入的编码位数>6但不是13位
    begin
        GetSpxx:=false;
        exit;
    end;
    edit11.text:=spcode;
    query3.close;
    query3.sql.clear;
    if spcodelen=6 then
    begin
        query3.sql.add('select * from t_spxx where spbm='''+spcode+'''');
    end
    else
    begin
        query3.sql.add('select * from t_spxx where sptxm='''+spcode+'''');
    end;
    query3.open;
    GetSpxx:=true;
end;
procedure Tfm_pfdmx.Edit12KeyPress(Sender: TObject; var Key: Char);
var
retcode,num:integer;

begin
    if key<>#13 then exit;

        if lview1.SelCount=0 then exit;
        val((sender as Tedit).text,num,retcode);
        if retcode=0 then
        begin
            lview1.Selected.SubItems.strings[2]:=(sender as Tedit).text;
            lbltishi.caption:='请输入商品的进货单价';
            edit13.SetFocus;
        end
        else
        begin
            lbltishi.caption:='请输入整数';
            (sender as tedit).text:='';
        end;

end;

procedure Tfm_pfdmx.Edit13KeyPress(Sender: TObject; var Key: Char);
begin
    if key<>#13 then exit;
    if lview1.SelCount=0 then exit;
    try
        strtofloat((sender as tedit).text);
        lview1.Selected.SubItems.strings[3]:=(sender as tedit).text;
        lbltishi.caption:='请输入折扣率';
        edit14.setfocus;
    except
        on EConvertError do
        begin
            lbltishi.caption:='你输入的不是数字';
        end;
    end;
end;

procedure Tfm_pfdmx.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
    if key<>#13 then exit;
    if lview1.SelCount=0 then exit;
    lview1.Selected.SubItems.strings[5]:=(sender as tedit).text;
    edit5.setfocus;
    lbltishi.caption:='请输入单据号码';
end;

procedure Tfm_pfdmx.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
    if key<>#13 then exit;
    if lview1.SelCount=0 then exit;
    lview1.Selected.SubItems.strings[6]:=(sender as tedit).text;
    edit6.setfocus;
    lbltishi.caption:='请输入发票号';
end;

procedure Tfm_pfdmx.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
    if key<>#13 then exit;
    if lview1.SelCount=0 then exit;
    lview1.Selected.SubItems.strings[7]:=(sender as tedit).text;
    edit1.setfocus;
    lbltishi.caption:='请输入商品编码或条形码';
    edit11.setfocus;
end;

procedure Tfm_pfdmx.BBtndelClick(Sender: TObject);
begin
    if lview1.SelCount=0 then exit;
    if application.MessageBox(pchar('确定要删除选中进货记录'),pchar('警告'),mb_YESNO)<>IDYES then exit;

    lview1.Selected.Delete;
end;

procedure Tfm_pfdmx.BBtnpfdClick(Sender: TObject);
begin
    fm_pfdsel:=Tfm_pfdsel.create(self);
    if fm_pfdsel.showmodal=IdOK then
    begin
        edit3.text:=datetimetostr(fm_pfdsel.mDateTime);
        edit1.text:=inttostr(fm_pfdsel.mLsh);
        edit2.text:=fm_pfdsel.mpfdw;
        edit4.text:=fm_pfdsel.mkhmc;
        edit8.text:=fm_pfdsel.mJbrm;
        edit9.text:=fm_pfdsel.mShrm;
        edit10.text:=fm_pfdsel.mCzym;
    end;
    fm_pfdsel.free;
end;

procedure Tfm_pfdmx.BBtncancelClick(Sender: TObject);
begin
    close;
end;

procedure Tfm_pfdmx.BBtnSaveClick(Sender: TObject);
var
insertsql:string;
lsh,pfdw,rq,khmc,jbrm,shrm,czym:string;
spbm,sptxm,pfnum,pfdj,djhm,yhl,hthm,fph:string;
i:integer;
begin
   if application.MessageBox(pchar('保存后而退出?'),pchar('警告'),mb_YESNO)<>IDYES then exit;
   if edit1.text='' then
   begin
        showmessage('还未填写批发单');
        exit;
   end;
   if lview1.Items.Count<1 then
   begin
        showmessage('尚未录入批发单明细记录');
        exit;
   end;
   lsh:=edit1.text;
   pfdw:=edit2.text;
   datetimetostring(rq,'yyyy-mm-dd',strtodatetime(edit3.text));
   khmc:=edit4.text;
   jbrm:=edit8.text;
   shrm:=edit9.text;
   czym:=edit10.text;
   query1.Active:=false;
   query1.sql.clear;
   insertsql:='insert into tb_pfd(lsh,pfdw,khmc,rq,czym,jbrm,shrm) values(';
   query1.sql.add(insertsql);
   insertsql:=lsh+','''+pfdw+''','''+khmc+''','''+rq+''','''+czym+''','''+jbrm+''','''+shrm+''')';
   query1.sql.add(insertsql);
   query1.ExecSQL;
   for i:=0 to lview1.items.count-1 do
   begin
       spbm:=lview1.items[i].caption;
       sptxm:=lview1.items[i].subitems[0];
       pfnum:=lview1.items[i].subitems[2];
       pfdj:=lview1.items[i].subitems[3];
       yhl:=lview1.items[i].subitems[4];
       hthm:=lview1.items[i].subitems[5];
       djhm:=lview1.items[i].subitems[6];
       fph:=lview1.items[i].subitems[7];
       query1.sql.clear;
       query1.sql.add('insert into tb_pfdmx(lsh,spbm,sptxm,pfnum,pfdj,yhl,djhm,hthm,fph) values(');
       query1.sql.add(lsh+','''+spbm+''','''+sptxm+''','+pfnum+','+pfdj+','+yhl+','''+djhm+''','''+hthm+''','''+fph+''')');
       query1.ExecSQL;
   end;
   lview1.Items.Clear;
   AddOptRecord('生成批发单:流水号('+lsh+'),仓库代码('+pfdw+'),客户代码('+khmc+')');
   close;
end;

procedure Tfm_pfdmx.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    if lview1.Items.count=0 then exit;
    if application.MessageBox(pchar('不保存而退出?'),pchar('警告'),mb_YESNO)<>IDYES then
    canclose:=false;
end;

procedure Tfm_pfdmx.Edit14KeyPress(Sender: TObject; var Key: Char);
var
retcode,num:integer;
begin
    if key<>#13 then exit;

        if lview1.SelCount=0 then exit;
        val((sender as Tedit).text,num,retcode);
        if retcode=0 then
        begin
            lview1.Selected.SubItems.strings[4]:=(sender as Tedit).text;
            if (num<0) or (num>=100) then
            begin
                lbltishi.caption:='折扣必须在0~100之间';
                (sender as tedit).text:='';
                exit;
            end;
            lbltishi.caption:='请输入合同号';
            edit7.SetFocus;
        end
        else
        begin
            lbltishi.caption:='请输入整数';
            (sender as tedit).text:='';
        end;
end;
procedure Tfm_pfdmx.LView1Click(Sender: TObject);
var
i:integer;
begin
    if lview1.SelCount>0 then
    begin
         i:=lview1.Selected.Index; 
       edit11.text:=lview1.items[i].caption;//spbm
       //sptxm:=lview1.items[i].subitems[0];
       edit12.text:=lview1.items[i].subitems[2];//pfnum
       edit13.text:=lview1.items[i].subitems[3];//pfdj
       edit14.text:=lview1.items[i].subitems[4];//yhl
       edit7.text:=lview1.items[i].subitems[5];//hthm
       edit5.text:=lview1.items[i].subitems[6];//hthm
       edit6.text:=lview1.items[i].subitems[7];//fph
    end;
end;

end.

⌨️ 快捷键说明

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