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

📄 inv_noorderopin_b.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Inv_NoOrderOpIn_B;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Body, Db, ActnList, AdODB, Grids, DBGridEh, ExtCtrls,
  ComCtrls, ToolWin, Mask, StdCtrls, ExtEdit, DBCtrls, ExtPrintReport, jpeg;

Type
  TFrm_Inv_NoOrderOpIn_B = Class(TFrm_Base_Entry_Body)
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label16: TLabel;
    Extedt_Billno: TExtEdit;
    Extedt_OutCode: TExtEdit;
    medt_Date: TMaskEdit;
    Extedt_memo: TExtEdit;
    cmbbx_WhCode: TComboBox;
    cmbbx_WhPositionCode: TComboBox;
    cmbbx_BillType2Code: TComboBox;
    lbl_OutName: TLabel;
    Label6: TLabel;
    Label9: TLabel;
    lbl_CurrencyName: TLabel;
    lb_Vendortaxrate_Percent: TLabel;
    Panel1: TPanel;
    Label3: TLabel;
    DBText1: TDBText;
    Panel2: TPanel;
    Label11: TLabel;
    DBText2: TDBText;
    DBGridEh1: TDBGridEh;
    AdoQry_RealOpQty: TAdoQuery;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure Extedt_OutCodeExit(Sender: TObject);
    procedure DateCheck(Sender: TObject);
    procedure Act_QuitExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cmbbx_WhCodeChange(Sender: TObject);
    procedure Extedt_OutCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure AdoQry_BodyAfterPost(DataSet: TDataSet);
    procedure AdoQry_BodyBeforePost(DataSet: TDataSet);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure Act_PrintExecute(Sender: TObject);
    procedure cmbbx_BillType2CodeExit(Sender: TObject);
    procedure Act_InsertLineExecute(Sender: TObject);
    procedure Act_ModifyExecute(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure Act_DeleteLineExecute(Sender: TObject);
    procedure Act_NewExecute(Sender: TObject);
    procedure DBGridEh1DblClick(Sender: TObject);
    procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
  private
    Billid,Billmemo,BillwhCode,BillWhPositionCode,Billno,BillTypeCode,
    BillBillType2Code,BilloutName,BilloutCode,BilloutType,BillLoginDate,
    currencyCode,Vendortaxrate_Percent,ExchRate,BillHeadno:string;
    IoType:real;

    procedure checkIOType;
    procedure InitCmbbx_WhPositionCode(whCode:string);
    procedure InitCmbbx_BillType2Code;
    { Private declarations }
  public
    Bill_id:string;
    procedure InitControls;Override;
    procedure SaveHeadData;Override;
    procedure SaveData; Override;//把表头控件写入缓存,不要Post
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,
  EnableControls:String);Override;
    { Public declarations }
  end;

var
  Frm_Inv_NoOrderOpIn_B: TFrm_Inv_NoOrderOpIn_B;

implementation

uses Sys_Global,Inv_NoOrderOpIn_D,Inv_Global,Inv_NoOrderOpIn_RealOpQty_D,
  Inv_NoOrderOpIn_H;
{$R *.DFM}

procedure TFrm_Inv_NoOrderOpIn_B.checkIOType;
begin
  if IoType<>0 then
  if AdoQry_Body.fieldbyname('InvBillqty').asfloat*IoType<0 then
  begin
    DispInfo('同一请领,不能出现正负数量混合的情况!',1);
    abort;
  end;
end;

procedure TFrm_Inv_NoOrderOpIn_B.InitCmbbx_WhPositionCode(whCode:string);
begin
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.Add('select WhPositionCode,WhPositionName '+
            ' from WhPosition  '+
            ' where whCode='''+whCode+''''+
              ' and WhPositionType<>1 '+
              ' and BackFlushWhP=0 '+
              ' Order by WhPositionCode ');

    open;
    cmbbx_WhPositionCode.clear;
    if not Eof then
    begin
      First;
      while not Eof do
      begin
        cmbbx_WhPositionCode.Items.Add(fieldbyname('WhPositionCode').asstring+' '+fieldbyname('WhPositionName').asstring);
        Next;
      end;
      cmbbx_WhPositionCode.Itemindex:=0;
    end;
  end;
end;

procedure TFrm_Inv_NoOrderOpIn_B.InitCmbbx_BillType2Code;
begin
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.Add('select BillType2Code,BillType2Name '+
            ' from BillType2  '+
            ' where io2=0');
    open;
    cmbbx_BillType2Code.clear;
    if not Eof then
    begin
      First;
      while not Eof do
      begin
        cmbbx_BillType2Code.Items.Add(fieldbyname('BillType2Code').asstring+' '+fieldbyname('BillType2Name').asstring);
        Next;
      end;
    end;
  end;
end;


procedure TFrm_Inv_NoOrderOpIn_B.InitControls;
begin//初始化Form上的控件
  inherited;
  //这两个参数是回传到基类后控制价格及金额的显示格式
  AmountFields:='InvBillnotaxAmount,InvBillAmount,';
  PriceFields:='InvBillnotaxPrice,InvBillPrice,';
  FreeFields:='RealOpQty,realopScrAp_Percent,RealOpQtynew,realopScrAp_Percentnew,';
  //初始化仓库
  if Status<>'Add' then
    ExtEdt_BillNo.Text:=Billno
  else
    ExtEdt_BillNo.Text:='';

  if (showflag=True) and (status<>'Add') then
     exit;

  initUsablewhcmbx(AdoQry_tmp,userCode,cmbbx_WhCode,False);
  //初始化单据类型
  initcmbbx_BillType2Code;
  //初始化入库对象

  //如果是增加,让InvBillNO=-1
  if Status<>'Add' then
    if showflag=False then
      Bill_ID:=AdoQry_Head.fieldbyname('InvBillid').AsString
    else
      Bill_ID:=Billid
  else
    Bill_ID:='-1';

  //取得相应的记录显示于DBGIRD
  if status='Add' then
  begin
    with AdoQry_Body do
    begin
      Close;
      sql.clear;
      sql.Add('select '+
              '   bl.InvBillid,'+
              '   bl.InvBilllineno,'+
              '   bl.InvBillqty,'+
              '   bl.ItemCode,'+
              '   i.ItemName,'+
              '   u.UomName,'+
              '   bl.BilllineremArk,'+
              '   bl.Batchno,'+
              '   bl.InvBillPrice,'+
              '   bl.InvBillAmount,'+
              '   bl.InvBillnotaxPrice,'+
              '   bl.InvBillnotaxAmount,'+
              '   bl.InvBillPricec,'+
              '   bl.InvBillAmountc,'+
              '   bl.InvBillnotaxPricec,'+
              '   bl.InvBillnotaxAmountc '+
              ' from InvInBillline bl,Item i,Uom u '+
              ' where bl.InvBillid='+Bill_id+
              '   and bl.ItemCode=i.ItemCode '+
              '   and i.UomCode=u.UomCode '+
              '  Order by bl.InvBilllineno ');
      open;
    end;
    AdoQry_RealOpQty.Connection :=AdoQry_tmp.Connection;
    AdoQry_RealOpQty.Close;
    AdoQry_RealOpQty.SQL.Text:='Select RealOpQty.InvBillId'
      +',RealOpQty.InvBillLineNo'
      +',RealOpQty.ItemCode'
      +',Item2.ItemName'
      +',RealOpQty.Ite_ItemCode'
      +',RealOpQty.Ite_ItemCode+'' ''+Item1.ItemName As Ite_ItemName'
      +',RealOpQty.RealOpQty'
      +',RealOpQty.RealOPScrAp_Percent'
      +',RealOpQty.RealOpQtyNew'
      +',RealOpQty.RealOPScrAp_PercentNew'
      +' From RealOpQty'
      +' Left Join Item Item1 On RealOpQty.Ite_ItemCode=Item1.ItemCode'
      +' Left Join Item Item2 On RealOpQty.ItemCode=Item2.ItemCode'
      +' Where RealOpQty.InvBillId='+Bill_id;
    AdoQry_RealOpQty.Open;
    AdoQry_RealOpQty.Sort:='Ite_ItemCode,ItemCode';
  end
  else
  begin
    if AdoQry_Head.fieldbyname('currencyCode').asstring='00' then
    with AdoQry_Body do
    begin
      Close;
      sql.clear;
      sql.Add('select '+
              '   bl.InvBillid,'+
              '   bl.InvBilllineno,'+
              '   bl.InvBillqty,'+
              '   bl.ItemCode,'+
              '   i.ItemName,'+
              '   u.UomName,'+
              '   bl.BilllineremArk,'+
              '   bl.Batchno,'+
              '   bl.InvBillPrice,'+
              '   bl.InvBillAmount,'+
              '   bl.InvBillnotaxPrice,'+
              '   bl.InvBillnotaxAmount '+
              ' from InvInBillline bl,Item i,Uom u '+
              ' where bl.InvBillid='+Bill_id+
              '   and bl.ItemCode=i.ItemCode '+
              '   and i.UomCode=u.UomCode '+
              '  Order by bl.InvBilllineno ');
        open;
    end
    else
    with AdoQry_Body do
    begin
      Close;
      sql.clear;
      sql.Add('select '+
              '   bl.InvBillid,'+
              '   bl.InvBilllineno,'+
              '   bl.InvBillqty,'+
              '   bl.ItemCode,'+
              '   i.ItemName,'+
              '   u.UomName,'+
              '   bl.BilllineremArk,'+
              '   bl.Batchno,'+
              '   bl.InvBillPricec as InvBillPrice,'+
              '   bl.InvBillAmountc as InvBillAmount,'+
              '   bl.InvBillnotaxPricec as InvBillnotaxPrice,'+
              '   bl.InvBillnotaxAmountc as InvBillnotaxAmount'+
              ' from InvInBillline bl,Item i,Uom u '+
              ' where bl.InvBillid='+Bill_id+
              '   and bl.ItemCode=i.ItemCode '+
              '   and i.UomCode=u.UomCode '+
              '  Order by bl.InvBilllineno ');
        open;
    end;
    AdoQry_RealOpQty.Connection :=AdoQry_tmp.Connection;
    AdoQry_RealOpQty.Close;
    AdoQry_RealOpQty.SQL.Text:='Select RealOpQty.InvBillId'
      +',RealOpQty.InvBillLineNo'
      +',RealOpQty.ItemCode'
      +',Item2.ItemName'
      +',RealOpQty.Ite_ItemCode'
      +',RealOpQty.Ite_ItemCode+'' ''+Item1.ItemName As Ite_ItemName'
      +',RealOpQty.RealOpQty'
      +',RealOpQty.RealOPScrAp_Percent'
      +',RealOpQty.RealOpQtyNew'
      +',RealOpQty.RealOPScrAp_PercentNew'
      +' From RealOpQty'
      +' Left Join Item Item1 On RealOpQty.Ite_ItemCode=Item1.ItemCode'
      +' Left Join Item Item2 On RealOpQty.ItemCode=Item2.ItemCode'
      +' Where RealOpQty.InvBillId='+Bill_id;
    AdoQry_RealOpQty.Open;
    AdoQry_RealOpQty.Sort:='Ite_ItemCode,ItemCode';
  end;


  with AdoQry_Head do
  begin
    lb_Vendortaxrate_Percent.Caption:='0'+'%';
    if status<>'Add' then
    begin
       act_insertline.Enabled :=False;
       act_Deleteline.Enabled :=False;
       act_Modify.Enabled :=False;
       if fieldbyname('InvBillno').asstring<>'' then
       begin
         InitCmBxText(Cmbbx_WhCode,fieldbyname('whCode').asstring);
         //初始化货位
         cmbbx_WhCodeChange(cmbbx_WhCode);
         InitCmBxText(Cmbbx_WhPositionCode,fieldbyname('WhPositionCode').asstring);
         InitCmBxText(Cmbbx_BillType2Code,fieldbyname('BillType2Code').asstring);
         Extedt_OutCode.text:=fieldbyname('outCode').asstring;
         medt_Date.text:=fieldbyname('InvBilldate').asstring;
         lbl_OutName.Caption:=fieldbyname('outName').asstring;
         Extedt_Billno.text:=fieldbyname('InvBillno').asstring;
         Extedt_memo.text:=fieldbyname('InvBillremArk').asstring;
         lb_Vendortaxrate_Percent.Caption:=fieldbyname('InvBilltaxrate').asstring+'%';
         lbl_CurrencyName.Caption:=fieldbyname('currencyCode').asstring;
       end
       else
       begin
         InitCmBxText(Cmbbx_WhCode,BillwhCode);
         //初始化货位
       //  cmbbx_WhCodeexit(cmbbx_WhCode);
         InitCmBxText(Cmbbx_WhPositionCode,BillWhPositionCode);
         InitCmBxText(Cmbbx_BillType2Code,BillBillType2Code);
         Extedt_OutCode.text:=BilloutCode;
         lbl_OutName.Caption:=BilloutName;
         Extedt_Billno.text:=Billno;
         Extedt_memo.text:=Billmemo;
         medt_Date.text:=BillLoginDate;
       end;
    end
    else
    begin
      InitCmBxText(Cmbbx_WhCode,fieldbyname('whCode').asstring);
      //初始化货位
      cmbbx_WhCodeChange(cmbbx_WhCode);
      InitCmBxText(Cmbbx_WhPositionCode,fieldbyname('WhPositionCode').asstring);
      InitCmBxText(Cmbbx_BillType2Code,fieldbyname('BillType2Code').asstring);
      Extedt_OutCode.text:=fieldbyname('outCode').asstring;
      medt_Date.text:=LoginDate;//fieldbyname('InvBilldate').asstring;
      lbl_OutName.Caption:=fieldbyname('outName').asstring;
      Extedt_Billno.text:='';
    end;
  end;
  currencyCode:='00';
  lbl_CurrencyName.Caption:='00 人民币';
  Vendortaxrate_Percent:='0';
  ExchRate:='1';

  IoType:=0;

  //单据类型
  BillTypeCode:=Param1;

end;


procedure TFrm_Inv_NoOrderOpIn_B.SetStatus(CurrentStatus:String;var AnswerStatus,
  EnableControls:String);
begin//指明当前状态,定义Enable=True的控件
  inherited;
  if CurrentStatus='Add' then
  begin
    AnswerStatus:='Add';
    EnableControls:='Extedt_memo,';
  end
  else if CurrentStatus='ReadOnly' then
  begin
    AnswerStatus:='ReadOnly';
    EnableControls:='';
  end;
end;

procedure TFrm_Inv_NoOrderOpIn_B.SaveHeadData;
begin

⌨️ 快捷键说明

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