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

📄 ckd_unit.pas

📁 餐营的数据核算,模拟入库,出库,库存.对餐营的流程详细叙述
💻 PAS
字号:
unit CKD_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBGridEh, ImgList, Menus, TFlatSpeedButtonUnit, Grids, StdCtrls,
  DBCtrls, DBCtrlsEh, DBLookupEh, Mask, Buttons, ToolWin, ComCtrls,
  ExtCtrls,DB, ADODB;

type
  TCKD_Form = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Label1: TLabel;
    Shape3: TShape;
    Shape4: TShape;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    CoolBar1: TCoolBar;
    ScrollBox1: TScrollBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn11: TBitBtn;
    DBEditEh1: TDBEditEh;
    DBDateTimeEditEh1: TDBDateTimeEditEh;
    DBMemo1: TDBMemo;
    DBGridEh1: TDBGridEh;
    Label8: TLabel;
    Label9: TLabel;
    DBLookupComboboxEh2: TDBLookupComboboxEh;
    DBLookupComboboxEh3: TDBLookupComboboxEh;
    FlatSpeedButton1: TFlatSpeedButton;
    FlatSpeedButton2: TFlatSpeedButton;
    FlatSpeedButton3: TFlatSpeedButton;
    FlatSpeedButton4: TFlatSpeedButton;
    Label10: TLabel;
    DBEditEh2: TDBEditEh;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    DBIL: TImageList;
    DELADOQ: TADOQuery;
    qryExec: TADOQuery;
    qryExec1: TADOQuery;
    BitBtn6: TBitBtn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtn10Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure FlatSpeedButton1Click(Sender: TObject);
    procedure FlatSpeedButton2Click(Sender: TObject);
    procedure FlatSpeedButton3Click(Sender: TObject);
    procedure FlatSpeedButton4Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    function BS(M:integer):integer;
    procedure CKITEMADDSHOW;
    { Public declarations }
  end;

var
  CKD_Form: TCKD_Form;

implementation

uses DMUnit, CKITEMADD_Unit, RPTUnit, U_CheckRights;

{$R *.dfm}

procedure TCKD_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=cafree;
end;

procedure TCKD_Form.FormDestroy(Sender: TObject);
begin
  CKD_Form:=nil;
end;

procedure TCKD_Form.BitBtn10Click(Sender: TObject);
begin
Close;
end;

procedure TCKD_Form.FormCreate(Sender: TObject);
begin
  with DM.CG_ADOQ do
  begin
    Close;
    Open;
  end;
  with DM.STOCK_ADOQ do
  begin
    Close;
    Open;
  end;
  with DM.CKDM_ADOQ do
  begin
    Close;
    Open;
  end;
  with DM.CKDP_ADOT do
  begin
    Close;
    OPen;
  end;
end;

procedure TCKD_Form.BitBtn1Click(Sender: TObject);
begin
  if DM.CKDM_ADOQ.State in [DSBROWSE] then
    DM.CKDM_ADOQ.Append;
    BS(0);
end;

function TCKD_Form.BS(M: integer): integer;
begin
  if M=0 then
  begin
    DBMemo1.Enabled:=True;
    DBDateTimeEditEh1.Enabled:=True;
    DBLookupComboboxEh2.Enabled:=True;
    DBLookupComboboxEh3.Enabled:=True;
    DBEditEh2.Enabled:=True;
  end;
  if M=1 then
  begin
    DBMemo1.Enabled:=false;
    DBDateTimeEditEh1.Enabled:=false;
    DBLookupComboboxEh2.Enabled:=false;
    DBLookupComboboxEh3.Enabled:=false;
    DBEditEh2.Enabled:=false;
  end;
end;

procedure TCKD_Form.CKITEMADDSHOW;
begin
  if Application.FindComponent('CKITEMADD_FORM')<>nil then
    CKITEMADD_FORM.Show else
    begin
      CKITEMADD_FORM:=TCKITEMADD_FORM.Create(Application);
      CKITEMADD_FORM.Show;
    end;
end;

procedure TCKD_Form.N1Click(Sender: TObject);
begin
  if DBEditEh2.Text='审核' then Exit;
  DM.CKDP_ADOT.Append;
  CKITEMADDSHOW;
end;

procedure TCKD_Form.N2Click(Sender: TObject);
begin
  if DBEditEh2.Text='审核' then Exit;
  DM.CKDP_ADOT.Edit;
  CKITEMADDSHOW;
end;

procedure TCKD_Form.N3Click(Sender: TObject);
begin
  if DBEditEh2.Text='审核' then Exit;
  if DM.CKDP_ADOT.RecordCount<=0 then Exit;
  if Application.MessageBox('是否确认删除该条采购明细数据?', '提示',
     MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDYES then
     DM.CKDP_ADOT.Delete;
end;

procedure TCKD_Form.BitBtn2Click(Sender: TObject);
begin
  if DBEditEh2.Text='审核' then Exit;
  if DM.CKDM_ADOQ.RecordCount<=0 then Exit;
  if DM.CKDM_ADOQ.State in [DSBROWSE] then
    DM.CKDM_ADOQ.Edit;
    BS(0);
end;

procedure TCKD_Form.BitBtn3Click(Sender: TObject);
var
  CKDNO:string;
begin
  CKDNO:=DBEditEh1.Text;
  if DBEditEh2.Text='审核' then Exit;
  if DM.RKDM_ADOQ.RecordCount<=0 then Exit;
  if Application.MessageBox('是否确认删除该条入库单数据,如果删除,将删除所有入库明细数据?', '提示',
     MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDYES then
  with DELADOQ do
  begin
    Close;
    SQL.Clear;
    SQL.Add('DELETE CKD_P WHERE CKD_NO='''+CKDNO+'''');
    ExecSQL;
  end;
     DM.CKDM_ADOQ.Delete;//删除明细表数据
end;

procedure TCKD_Form.BitBtn4Click(Sender: TObject);
begin
   IF (Trim(DBLookupComboboxEh2.Text)='') or (Trim(DBLookupComboboxEh3.Text)='') then  Exit;
  if DM.CKDM_ADOQ.State in [DSINSERT,DSEDIT] then
     DM.CKDM_ADOQ.FieldByName('CKD_BS').AsString:='未审核';
     DM.CKDM_ADOQ.Post;
     BS(1);
end;

procedure TCKD_Form.BitBtn5Click(Sender: TObject);
begin
  DM.CKDM_ADOQ.Cancel;
  BS(1);
end;

procedure TCKD_Form.FlatSpeedButton1Click(Sender: TObject);
begin
  DM.CKDM_ADOQ.First;
end;

procedure TCKD_Form.FlatSpeedButton2Click(Sender: TObject);
begin
  DM.CKDM_ADOQ.Prior;
end;

procedure TCKD_Form.FlatSpeedButton3Click(Sender: TObject);
begin
  DM.CKDM_ADOQ.Next;
end;

procedure TCKD_Form.FlatSpeedButton4Click(Sender: TObject);
begin
  DM.CKDM_ADOQ.Last;
end;

procedure TCKD_Form.BitBtn11Click(Sender: TObject);
var
  OutAmt:integer;
begin

   if (not DM.CKDM_ADOQ.Active) and (DM.CKDM_ADOQ.RecordCount<=0) then
  exit;
  if (not DM.CKDP_ADOT.Active) and (DM.CKDP_ADOT.RecordCount<=0) then
  exit;

  if DBEditEh2.Text='审核' then
  begin
    ShowMessage('该笔出库单已经审核!');
    Exit;
  end;

  //判断出库数量

  if application.MessageBox('是否对该笔数据进行审核,如果审核则该笔出库数据将不能修改,同时将减少库存!','系统提示',mb_yesno)=mrno then
  Exit;
  try
    IF DM.ADOC.InTransaction then DM.ADOC.RollbackTrans ;
    DM.ADOC.BeginTrans ;
    with qryExec do
    begin
      Close;
      SQl.Clear;
      SQL.Add('UPDATE CKD_M SET CKD_BS=''审核'' where CKD_NO='''+DBEditEh1.Text+'''');
      ExecSQL;
    end;
    with DM.CKDP_ADOT do
    begin
      First;
      while not Eof do
      begin
        OutAmt:=FieldByName('ITEM_NUM').AsInteger+FieldByName('ITEM_SHNUM').AsInteger;
        if OutAmt>0 then
        begin
          qryExec.Close;
          qryExec.SQL.Clear ;
          qryExec.SQL.Add('select * from stock');
          qryExec.SQL.Add('where RKD_ITEMNAME=:RKD_ITEMNAME order by RKD_TIME,RKD_NUM ');
          qryExec.Parameters.ParamByName('RKD_ITEMNAME').Value :=trim(FieldByName('ITEM_NO').AsString);
          qryExec.Open;
          while not qryExec.Eof do
          begin
            if OutAmt<=0 then break;
            if OutAmt>=qryExec.FieldByName('RKD_NUM').AsInteger then
            begin
              OutAmt:=OutAmt-qryExec.fieldbyName('RKD_NUM').AsInteger;
              qryExec1.Close;
              qryExec1.SQL.Clear ;
              qryExec1.SQL.Add('Update stock set RKD_NUM=0 where RKD_NO=:RKD_NO and RKD_ITEMNAME=:RKD_ITEMNAME');
              qryExec1.Parameters.ParamByName('RKD_NO').Value :=qryExec.fieldbyName('RKD_NO').AsString ;
              qryExec1.Parameters.ParamByName('RKD_ITEMNAME').Value :=trim(FieldByName('ITEM_NO').AsString);
              qryExec1.ExecSQL ;
            end
            else begin
              qryExec1.Close;
              qryExec1.SQL.Clear ;
              qryExec1.SQL.Add('Update stock set RKD_NUM=RKD_NUM-(:RKD_NUM) where RKD_NO=:RKD_NO AND RKD_ITEMNAME=:RKD_ITEMNAME');
              qryExec1.Parameters.ParamByName('RKD_NUM').Value:=OutAmt;
              qryExec1.Parameters.ParamByName('RKD_NO').Value :=qryExec.fieldbyName('RKD_NO').AsString ;
              qryExec1.Parameters.ParamByName('RKD_ITEMNAME').Value :=trim(FieldByName('ITEM_NO').AsString) ;
              qryExec1.ExecSQL ;
              OutAmt:=0;
            end;
            qryExec.Next;
          end;
        end;
        Next;
      end;
    end; 
    DM.ADOC.CommitTrans ;
  Except
    DM.ADOC.RollbackTrans ;
  end;
  DM.CKDM_ADOQ.Refresh;
  DM.CKDP_ADOT.Refresh;
end;

procedure TCKD_Form.BitBtn6Click(Sender: TObject);
begin
  RPTDM.CKDP_Rpt.LoadFromFile(ExtractFilePath(ParamStr(0)) +   'RPT/出库单.frf');
  RPTDM.CKDP_Rpt.ShowReport;
end;

procedure TCKD_Form.FormShow(Sender: TObject);
begin
  BitBtn6.Enabled:=CheckRights('出库单编制','打印');
  BitBtn1.Enabled:=CheckRights('出库单编制','新单');
  BitBtn2.Enabled:=CheckRights('出库单编制','修改');
  BitBtn3.Enabled:=CheckRights('出库单编制','删除');
  BitBtn4.Enabled:=CheckRights('出库单编制','保存');
  BitBtn5.Enabled:=CheckRights('出库单编制','取消');
  BitBtn11.Enabled:=CheckRights('出库单编制','审核');
end;

end.

⌨️ 快捷键说明

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