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

医药行业

开发平台:

Delphi

  1. unit uty;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, Grids, DBGridEh, ComCtrls, Buttons, Mask, DBCtrlsEh,
  6.   DBLookupEh,upreview,udm;
  7. type
  8.   Tfty = 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.     BitBtn3: TBitBtn;
  26.     procedure FormShow(Sender: TObject);
  27.     procedure DBGridEh1ColExit(Sender: TObject);
  28.     procedure saveClick(Sender: TObject);
  29.     procedure retClick(Sender: TObject);
  30.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  31.     procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  32.       Shift: TShiftState);
  33.     procedure BitBtn3Click(Sender: TObject);
  34.   private
  35.     function  check():boolean;
  36.     { Private declarations }
  37.   public
  38.     { Public declarations }
  39.   end;
  40. implementation
  41. {$R *.dfm}
  42. procedure Tfty.FormShow(Sender: TObject);
  43. begin
  44.   adodm.tcr.Close;
  45.   adodm.tcr.Open;
  46.   label3.caption:=datetimetostr(date());
  47.   adodm.tdw.Filter:=' 出入<> 0 ' ;
  48.   adodm.tdw.Filtered:=true;
  49. end;
  50. procedure Tfty.DBGridEh1ColExit(Sender: TObject);
  51. begin
  52.   if (trim(adodm.tcr.FieldByName('ypid').AsString)<>'') and (trim(adodm.tcr.FieldByName('数量').AsString)<>'')  then
  53.    if  adodm.tkc.Locate('ypid',adodm.tcr.Fieldvalues['ypid'],[])  then
  54.       begin
  55.        if adodm.tkc.FieldByName('数量').AsInteger<adodm.tcr.FieldByName('数量').AsInteger then
  56.         begin
  57.           showmessage('库存数量:'+adodm.tkc.FieldByName('数量').Asstring+'    不足以支付');
  58.           adodm.tcr.Edit;
  59.           adodm.tcr.FieldByName('数量').AsString:='';
  60.           dbgrideh1.col:=2;
  61.         end
  62.       end
  63.    else
  64.     begin
  65.     showmessage('该药品没有库存');
  66.     adodm.tcr.Edit;
  67.     adodm.tcr.FieldByName('药品简码').AsString:='';
  68.     dbgrideh1.col:=1;
  69.    end;
  70.  adodm.tcr.Edit;
  71.  adodm.tcr.Edit;
  72.   if dbgrideh1.Columns[dbgrideh1.Col-1].FieldName='数量'     then
  73.   try
  74.    adodm.tcr.FieldByName('金额').AsFloat:=adodm.tcr.FieldByName('数量').Asinteger*adodm.tcr.FieldByName('单价').Asfloat ;
  75.   except
  76.   end;
  77.   if dbgrideh1.Columns[dbgrideh1.Col-1].FieldName='单价'    then
  78.   try
  79.    adodm.tcr.FieldByName('金额').AsFloat:=adodm.tcr.FieldByName('数量').Asinteger*adodm.tcr.FieldByName('单价').Asfloat ;
  80.   except
  81.   end;
  82.   if dbgrideh1.Columns[dbgrideh1.Col-1].FieldName='金额'    then
  83.   try
  84.    adodm.tcr.FieldByName('单价').AsFloat:=adodm.tcr.FieldByName('金额').Asfloat/adodm.tcr.FieldByName('数量').Asinteger ;
  85.   except
  86.   end;
  87. end;
  88. function Tfty.check: boolean;
  89. begin
  90.   result:=true;
  91.  if trim(dw.Text)='' then
  92.    begin
  93.     showmessage('请选择一个购药单位,如果没有出现在列表中,请添加!');
  94.     result:=false;
  95.     exit;
  96.     end;
  97.  if adodm.tcr.RecordCount<=0 then
  98.    begin
  99.     showmessage('请录入退出的药品信息!');
  100.     result:=false;
  101.     exit;
  102.    end;
  103. end;
  104. procedure Tfty.saveClick(Sender: TObject);
  105. begin
  106.  
  107.   if not check then
  108.   exit;
  109.   adodm.ctemp.Parameters.ParamValues['@lx']:='ty';
  110.   adodm.ctemp.Execute;
  111.   edit2.Text:=adodm.ctemp.Parameters.ParamValues['@bh'];
  112.     {GETbh}
  113.   adodm.tcr.First;
  114.   while not adodm.tcr.Eof do
  115.   begin
  116.     adodm.tcr.Edit;
  117.     adodm.tcr.FieldByName('编号').AsString:=trim(edit2.Text);
  118.     adodm.tcr.FieldByName('入库单位').AsInteger:=adodm.tdw.fieldbyname('clientid').AsInteger;
  119.     if trim(ren.Text)<>'' then
  120.     adodm.tcr.FieldByName('开票人').Asinteger:=adodm.tyg.fieldbyname('ygid').Asinteger;
  121.     adodm.tcr.FieldByName('操作人').Asstring:=trim(edit1.Text);
  122.     adodm.tcr.FieldByName('类型').Asstring:='退药';
  123.     adodm.tcr.fieldbyname('出入').asboolean:=false;
  124.     adodm.tcr.FieldByName('日期').Asdatetime:=date;
  125.     if adodm.tkc.Locate('ypid',adodm.tcr.FieldValues['ypid'],[]) then
  126.     begin
  127.       adodm.tkc.Edit;
  128.       adodm.tcr.FieldByName('成本金额').AsFloat:=adodm.tkc.FieldByName('购进单价').Asfloat*adodm.tcr.FieldByName('数量').Asfloat;
  129.       adodm.tkc.FieldByName('数量').AsInteger:=adodm.tkc.FieldByName('数量').AsInteger-adodm.tcr.FieldByName('数量').AsInteger;
  130.       adodm.tkc.FieldByName('购进金额').Asfloat:=adodm.tkc.FieldByName('购进金额').Asfloat-adodm.tcr.FieldByName('金额').Asfloat;
  131.       adodm.tkc.FieldByName('购进单价').Asfloat:=adodm.tkc.FieldByName('购进金额').Asfloat/adodm.tkc.FieldByName('数量').AsInteger;
  132.       adodm.tkc.Post;
  133.     end  ;
  134.    adodm.tcr.Next;
  135.    end;
  136.    adodm.tcr.UpdateBatch();
  137.    dbgrideh1.Enabled:=false;
  138.    if print.Checked then
  139.    begin
  140.    fpreview.frrk.FindObject('memo1').Memo.Text:=label1.Caption;
  141.    fpreview.frrk.ShowReport;
  142.    fpreview.ShowModal;
  143.    end;
  144.    save.Enabled:=false;
  145. end;
  146. procedure Tfty.retClick(Sender: TObject);
  147. begin
  148.  dbgrideh1.Enabled:=true;
  149.  adodm.tcr.close;
  150.  adodm.tcr.Open;
  151.  edit2.Text:='';
  152.  save.Enabled:=true;
  153. end;
  154. procedure Tfty.FormClose(Sender: TObject; var Action: TCloseAction);
  155. begin
  156. try
  157. adodm.tcr.CancelUpdates;
  158. adodm.tcr.Close;
  159. except
  160. end;
  161. action:=cafree;
  162. end;
  163. procedure Tfty.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  164.   Shift: TShiftState);
  165. begin
  166. if (key=vk_down) and adodm.tcr.Eof   then
  167. begin
  168. sendmessage(dbgrideh1.Handle,wm_keydown,vk_tab,0);
  169. adodm.tcr.Append;
  170. dbgrideh1.Col:=1;
  171. end;
  172. end;
  173. procedure Tfty.BitBtn3Click(Sender: TObject);
  174. begin
  175. close;
  176. end;
  177. end.