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

医药行业

开发平台:

Delphi

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