Upf.pas
上传用户:jiete_yjc
上传日期:2010-02-11
资源大小:422k
文件大小:8k
源码类别:

医药行业

开发平台:

Delphi

  1. unit Upf;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, Grids, DBGridEh, ComCtrls, Buttons, 
  6.   DBLookupEh,upreview,udm, DBSumLst, DBCtrlsEh, sncCurrency, Mask;
  7. type
  8.   Tfpf = class(TForm)
  9.     DBGridEh1: TDBGridEh;
  10.     Label1: TLabel;
  11.     TabControl1: TTabControl;
  12.     TabControl2: TTabControl;
  13.     Label2: TLabel;
  14.     Label3: TLabel;
  15.     dw: TDBLookupComboboxEh;
  16.     Label4: TLabel;
  17.     Edit1: TEdit;
  18.     Label5: TLabel;
  19.     Label6: TLabel;
  20.     ren: TDBLookupComboboxEh;
  21.     Edit2: TEdit;
  22.     print: TCheckBox;
  23.     save: TBitBtn;
  24.     ret: TBitBtn;
  25.     Label7: TLabel;
  26.     Label8: TLabel;
  27.     sum1: TDBSumList;
  28.     sncCurrencyLabel1: TsncCurrencyLabel;
  29.     sf: TsncCurrencyEdit;
  30.     zq: TsncCurrencyEdit;
  31.     BitBtn3: TBitBtn;
  32.     procedure FormShow(Sender: TObject);
  33.     procedure DBGridEh1ColExit(Sender: TObject);
  34.     procedure saveClick(Sender: TObject);
  35.     procedure retClick(Sender: TObject);
  36.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  37.     procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  38.       Shift: TShiftState);
  39.     procedure sfExit(Sender: TObject);
  40.     procedure DBGridEh1ColEnter(Sender: TObject);
  41.     procedure dwChange(Sender: TObject);
  42.     procedure dwExit(Sender: TObject);
  43.     procedure renChange(Sender: TObject);
  44.     procedure BitBtn3Click(Sender: TObject);
  45.     procedure renExit(Sender: TObject);
  46.   private
  47.     function  check():boolean;
  48.     { Private declarations }
  49.   public
  50.     { Public declarations }
  51.   end;
  52.   var dwfilter:string;
  53. implementation
  54. {$R *.dfm}
  55. procedure Tfpf.FormShow(Sender: TObject);
  56. begin
  57.  // showmessage(inttostr(height));
  58.   try
  59.   adodm.tcr.Close;
  60.   adodm.tcr.Open;
  61.   except
  62.   showmessage('mistake;');
  63.   end;
  64.   dwfilter:= ' 出入<>1 and clientid>=0';
  65.   label3.caption:=datetimetostr(date());
  66.   adodm.tdw.Filter:=' 出入<>1 and clientid>=0' ;
  67.   adodm.tdw.Filtered:=true;
  68.   dw.Text:='顾客';
  69. end;
  70. procedure Tfpf.DBGridEh1ColExit(Sender: TObject);
  71. begin
  72.  if (trim(adodm.tcr.FieldByName('ypid').AsString)<>'') and (trim(adodm.tcr.FieldByName('数量').AsString)<>'')  then
  73.    if  adodm.tkc.Locate('ypid',adodm.tcr.Fieldvalues['ypid'],[])  then
  74.       begin
  75.        if adodm.tkc.FieldByName('数量').AsInteger<adodm.tcr.FieldByName('数量').AsInteger then
  76.         begin
  77.           showmessage('库存数量:'+adodm.tkc.FieldByName('数量').Asstring+'    不足以支付');
  78.           adodm.tcr.Edit;
  79.           adodm.tcr.FieldByName('数量').AsString:='';
  80.           dbgrideh1.col:=2;
  81.         end
  82.         else
  83.         begin
  84.         if  adodm.typzdk.Locate('id',adodm.tcr.Fieldvalues['ypid'],[]) then
  85.         begin
  86.         adodm.tcr.edit;
  87.         adodm.tcr.FieldByName('单价').Asfloat:=adodm.typzdk.fieldbyname('批发价').asfloat
  88.         end
  89.         else showmessage('发生错误,请手工录入该商品的单价');
  90.         end
  91.       end
  92.    else
  93.     begin
  94.     showmessage('该药品没有库存');
  95.     adodm.tcr.Edit;
  96.     adodm.tcr.FieldByName('药品简码').AsString:='';
  97.     dbgrideh1.col:=1;
  98.    end;
  99.   if (adodm.tcr.FieldByName('单价').AsString<>'') and  (adodm.tcr.FieldByName('数量').Asstring<>'') then
  100.     begin
  101.             adodm.tcr.edit;
  102.     adodm.tcr.FieldByName('金额').AsFloat:=adodm.tcr.FieldByName('数量').Asinteger*adodm.tcr.FieldByName('单价').Asfloat ;
  103.     end  ;
  104. end;
  105. function Tfpf.check: boolean;
  106. begin
  107.   result:=true;
  108.  if trim(dw.Text)='' then
  109.    begin
  110.     showmessage('请选择一个购药单位,如果没有出现在列表中,请添加!');
  111.     result:=false;
  112.     exit;
  113.     end;
  114.  if trim(ren.Text)='' then
  115.    begin
  116.     showmessage('请选择开票人,如果没有出现在列表中,请添加!');
  117.     result:=false;
  118.     exit;
  119.     end;
  120.  if adodm.tcr.RecordCount<=0 then
  121.    begin
  122.     showmessage('请录入销售的药品信息!');
  123.     result:=false;
  124.     exit;
  125.    end;
  126. end;
  127. procedure Tfpf.saveClick(Sender: TObject);
  128. begin
  129.  
  130.   if not check then
  131.   exit;
  132.   adodm.ctemp.Parameters.ParamValues['@lx']:='pf';
  133.   adodm.ctemp.Execute;
  134.   edit2.Text:=adodm.ctemp.Parameters.ParamValues['@bh'];
  135.     {GETbh}
  136.   adodm.tcr.First;
  137.   while not adodm.tcr.Eof do
  138.   begin
  139.     adodm.tcr.Edit;
  140.     adodm.tcr.FieldByName('编号').AsString:=trim(edit2.Text);
  141.     if trim(dw.Text)<>'' then
  142.     adodm.tcr.FieldByName('入库单位').AsInteger:=adodm.tdw.fieldbyname('clientid').AsInteger;
  143.     
  144.     adodm.tcr.FieldByName('开票人').Asinteger:=adodm.tyg.fieldbyname('ygid').Asinteger;
  145.     adodm.tcr.FieldByName('操作人').Asstring:=trim(edit1.Text);
  146.     adodm.tcr.FieldByName('类型').Asstring:='批发';
  147.     adodm.tcr.fieldbyname('出入').asboolean:=false;
  148.     adodm.tcr.FieldByName('日期').Asdatetime:=date;
  149.     
  150.     if adodm.tkc.Locate('ypid',adodm.tcr.FieldValues['ypid'],[]) then
  151.     begin
  152.       adodm.tkc.Edit;
  153.       adodm.tkc.FieldByName('数量').AsInteger:=adodm.tkc.FieldByName('数量').AsInteger-adodm.tcr.FieldByName('数量').AsInteger;
  154.       adodm.tkc.FieldByName('购进金额').Asfloat:=adodm.tkc.FieldByName('购进单价').Asfloat*adodm.tkc.FieldByName('数量').Asfloat;
  155.       adodm.tcr.FieldByName('成本金额').AsFloat:=adodm.tkc.FieldByName('购进单价').Asfloat*adodm.tcr.FieldByName('数量').Asfloat;
  156.       adodm.tkc.Post;
  157.     end  ;
  158.    adodm.tcr.Next;
  159.    end;
  160.    adodm.tcr.UpdateBatch();
  161.    dbgrideh1.Enabled:=false;
  162.    if print.Checked then
  163.    begin
  164.    fpreview.frrk.FindObject('memo27').Memo.Text:='开票人:'+ren.text;
  165.    fpreview.frrk.ShowReport;
  166.    fpreview.ShowModal;
  167.    fpreview.frrk.FindObject('memo27').Memo.Text:='经办人(签字):'  ;
  168.    end;
  169.    save.Enabled:=false;
  170. end;
  171. procedure Tfpf.retClick(Sender: TObject);
  172. begin
  173.  dbgrideh1.Enabled:=true;
  174.  adodm.tcr.close;
  175.  adodm.tcr.Open;
  176.  edit2.Text:='';
  177.  save.Enabled:=true;
  178.  sf.Value:=0;
  179.  zq.Value:=0;
  180.  dw.Text:='顾客';
  181. end;
  182. procedure Tfpf.FormClose(Sender: TObject; var Action: TCloseAction);
  183. begin
  184. try
  185. adodm.tcr.CancelBatch();
  186. except
  187. showmessage('取消失败');
  188. end;
  189. try
  190. adodm.tcr.Close;
  191. except
  192. showmessage('关闭失败');
  193. end;
  194. action:=cafree;
  195. end;
  196. procedure Tfpf.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  197.   Shift: TShiftState);
  198. begin
  199. if (key=vk_down) and adodm.tcr.Eof   then
  200. BEGIN
  201.  sendmessage(dbgrideh1.Handle,wm_keydown,vk_tab,0); 
  202.  adodm.tcr.Append;
  203.  dbgrideh1.Col:=1;
  204. end;
  205. end;
  206. procedure Tfpf.sfExit(Sender: TObject);
  207. var aa:real;
  208. begin
  209. sum1.Activate(true);
  210. //showmessage(floattostr(sum1.SumCollection[0].SumValue));
  211. zq.Value:=0;
  212. if sf.Value=0 then
  213. begin
  214. exit;
  215. sum1.Active:=false;
  216. end;
  217. try
  218.   aa:=sf.Value;
  219.   aa:=aa-sum1.SumCollection[0].SumValue;
  220.   if aa<0 then
  221.   begin
  222.   showmessage('所付金额不足!!');
  223.   sf.SetFocus;
  224.   end
  225.   else
  226.   zq.value:=aa;
  227. except
  228.   sf.SetFocus;
  229. end;
  230.  sum1.Active:=false;
  231. end;
  232. procedure Tfpf.DBGridEh1ColEnter(Sender: TObject);
  233. begin
  234. sf.Value:=0;
  235. zq.Value:=0;
  236. end;
  237. procedure Tfpf.dwChange(Sender: TObject);
  238. begin
  239. if trim(dw.Text)<>'' then
  240.  begin
  241.   adodm.tdw.DisableControls;
  242.   adodm.tdw.filtered:=false;
  243.   adodm.tdw.Filter:='(简码 like '''+trim(dw.text)+'%'' and '+dwfilter+') or (名称 like '''+trim(dw.text)+'%'' and '+dwfilter+')';
  244.   //showmessage(adodm.tdw.Filter);
  245.   adodm.tdw.Filtered:=true;
  246.   adodm.tdw.EnableControls;
  247.  end
  248. else
  249.   adodm.tdw.Filter:=dwfilter;
  250.   adodm.tdw.Filtered:=true;
  251. end;
  252. procedure Tfpf.dwExit(Sender: TObject);
  253. begin
  254. if not adodm.tdw.Locate('名称',dw.Text,[]) then
  255. begin
  256.   dw.SetFocus;
  257.   showmessage('没有此单位,请重新录入!');
  258. end;
  259. end;
  260. procedure Tfpf.renChange(Sender: TObject);
  261. begin
  262. if trim(ren.Text)<>'' then
  263.  begin
  264.   adodm.tyg.DisableControls;
  265.   adodm.tyg.filtered:=false;
  266.   adodm.tyg.Filter:=' 姓名 like '''+trim(ren.text)+'%'' or '+'员工编号 like '''+trim(ren.text)+'%''';
  267.   //showmessage(adodm.tdw.Filter);
  268.   adodm.tyg.Filtered:=true;
  269.   adodm.tyg.EnableControls;
  270.  end
  271. else
  272.   adodm.tyg.Filtered:=false;
  273. end;
  274. procedure Tfpf.BitBtn3Click(Sender: TObject);
  275. begin
  276. close;
  277. end;
  278. procedure Tfpf.renExit(Sender: TObject);
  279. begin
  280.  if not adodm.tyg.Locate('姓名',ren.Text,[]) then
  281. begin
  282.   ren.SetFocus;
  283.   showmessage('没有此人,请重新录入!');
  284. end;
  285. end;
  286. end.