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

📄 choose_fhd.pas

📁 省级集邮品管理ERP
💻 PAS
字号:
{*******************************************************}
{                                                       }
{                   选择入库依据单                      }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
省级集邮票管理,省级零枚票管理
地市集邮票管理

*)

{
//注意:对于所有票品都适用,有:零枚票、集邮票、集邮品、购入票

有关表:
  出库计划单表、出库计划单面值表
数据来源:
  分配单号: 出库计划单表(状态为0 且 根据出库计划单号判断类别,如:生成零枚,
             则只列出零枚票分配单号)
  分配票品:出库计划单面值表
功能:
算法:
更新有关表:关系单位数据表
备注: 出库计划单表状态字段值:0--未生成发货单   1--已生成发货单
}
unit Choose_FHD;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FormBase, StdCtrls, Buttons, Db, DBTables, Grids, DBGrids, DBCtrls,
  ExtCtrls, SqlStrings;

type
  TfrmSJ_chooseJYFHD = class(TFFormBase)
    CBo_yjdh: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    DBGrid1: TDBGrid;
    DS_ckfhpp: TDataSource;
    Label3: TLabel;
    DS_rkxz: TDataSource;
    Qry_rkxz: TQuery;
    DBLCB_rkxz: TDBLookupComboBox;
    Lbl_ckxz: TLabel;
    RG_yf: TRadioGroup;
    Qry_TMP: TQuery;
    USQL_fhpp: TUpdateSQL;
    Qry_kf: TQuery;
    DS_kf: TDataSource;
    SQLs_txfhpp: TSqlStrings;
    Qry_tkfhpp: TQuery;
    Qry_tkfhppFHDH: TStringField;
    Qry_tkfhppTDM: TStringField;
    Qry_tkfhppSL: TFloatField;
    Qry_tkfhppSJ: TFloatField;
    Qry_tkfhppZK: TFloatField;
    Qry_tkfhppJSJ: TFloatField;
    Qry_tkfhppDWDM: TStringField;
    Qry_tkfhppDWMC: TStringField;
    Qry_tkfhppZH: TStringField;
    Qry_tkfhppPP: TStringField;
    Qry_tkfhppKFDM: TStringField;
    Qry_tkfhppkf: TStringField;
    Qry_tkfhppMZ: TFloatField;
    procedure FormCreate(Sender: TObject);
    procedure CBo_yjdhClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    VL_sl_ckxz: TStringList;
    VL_sl_lydw: TStringList;
    Fio_TYPE: TIO_TYPE;
    procedure DoAPPRKD;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmSJ_chooseJYFHD: TfrmSJ_chooseJYFHD;
function ExeSJ_FHD(io_typ: TIO_TYPE): Boolean;

implementation

uses datas,pub, SY_RKDSC;

{$R *.DFM}

function ExeSJ_FHD(io_typ: TIO_TYPE): Boolean;
const
  fhdh = 'select a.fhdh, b.RCKXZMC, c.DWJC DWMC from %s a, %s b, TGS_GXDWSJB C where a.CKXZ=b.RCKXZDM and C.DWDM=a.DWDM and a.fhdh not in (select nvl(yjdh, -1) from %s)';
begin
  Application.CreateForm(TfrmSJ_chooseJYFHD, frmSJ_chooseJYFHD); {TFFormBase1, FFormBase1}
  with frmSJ_chooseJYFHD do {FFormBase1}
  try
    Fio_TYPE := io_typ;
    Qry_tkfhpp.SQL := SQLs_txfhpp.FSqlText[io_typ];
    Qry_kf.ParamByName('YGDM').AsString := VG_USERID;
    Qry_kf.Open;
    Qry_rkxz.Open;
    if Qry_rkxz.IsEmpty then
      CHQMsgBox('基础数据——入库性质未初始化!请与开发商联系!');
    case io_typ of
      io_jyp:
        AssignSqlStr(data.qrytmp, format(fhdh, ['tk_jyfhd', 'TG_JRCKXZDM', 'tks_jyrkd']));
      io_txp:
        AssignSqlStr(data.qrytmp, format(fhdh, ['tk_txfhd', 'TG_TRCKXZDM', 'tks_txrkd']));
    end;
    data.qrytmp.Open;
    while not data.qrytmp.Eof do
    begin
      CBo_yjdh.Items.Add(data.qrytmp.Fields[0].AsString);
      VL_sl_ckxz.Add(data.qrytmp.FieldByName('RCKXZMC').AsString);
      VL_sl_lydw.Add(data.qrytmp.FieldByName('DWMC').AsString);
      data.qrytmp.Next;
    end;
    CBo_yjdh.ItemIndex := 0;
    CBo_yjdhClick(nil);
    result := ShowModal = MB_OK;
  finally
    Free;
  end;
end;

procedure TfrmSJ_chooseJYFHD.FormCreate(Sender: TObject);
begin
  inherited;
  VL_sl_ckxz := TStringList.Create;
  VL_sl_lydw := TStringList.Create;
end;

procedure TfrmSJ_chooseJYFHD.CBo_yjdhClick(Sender: TObject);
begin
  inherited;
  if VL_sl_ckxz.Count > 0 then
    Lbl_ckxz.Caption := VL_sl_lydw.Strings[CBo_yjdh.ItemIndex] +
      '(' + VL_sl_ckxz.Strings[CBo_yjdh.ItemIndex] + ')'
  else
    Lbl_ckxz.Caption := '';

  Qry_tkfhpp.Close;
  Qry_tkfhpp.Params[0].AsString := CBo_yjdh.Text;
  Qry_tkfhpp.Open;
  Qry_tkfhpp.Edit;
end;

procedure TfrmSJ_chooseJYFHD.BitBtn1Click(Sender: TObject);
var
  v_s_msg: string;

  function CheckKF: boolean;
  begin
    Result := false;
    Qry_tkfhpp.DisableConstraints;
    Qry_tkfhpp.First;
    while not Qry_tkfhpp.Eof do
    begin
      if Qry_tkfhpp.FieldByName('KF').IsNull then
      begin
        Result := true;
        break;
      end;
      Qry_tkfhpp.Next;
    end;
    Qry_tkfhpp.EnableConstraints;
  end;

  function CheckNotNull(var AmsgStr: string): boolean;
  begin
    Result := true;
    if CBo_yjdh.Text = '' then
    begin
      AmsgStr := '请选择入库依据单号!';
      exit;
    end;
    if DBLCB_rkxz.Text = '' then
    begin
      AmsgStr := '请选择入库性质!';
      exit;
    end;
    if CheckKF then
    begin
      AmsgStr := '请选择票品入库库房!';
      exit;
    end;
    Result := false;
  end;
begin
  inherited;
  if CheckNotNull(v_s_msg) then
  begin
    CHQMsgBox(v_s_msg);
    exit;
  end;

  frmSY_RKD.queding := true;
  frmSY_RKD.ckdh := CBo_yjdh.Text;
  frmSY_RKD.yjdh := CBo_yjdh.Text;
  DoAPPRKD;
  close;

end;

procedure TfrmSJ_chooseJYFHD.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  if VL_sl_ckxz <> nil then
  begin
    VL_sl_ckxz.Free;
    VL_sl_lydw.Free;
  end;
end;

procedure TfrmSJ_chooseJYFHD.DoAPPRKD;
var
  rkdh: string;
  tkrkd: string;
  date: tdatetime;
  tkrkpp: string;
  yjsql: string;
  yj: integer;
  bhbh: string;
  v_s_sql: string;

  procedure GetNewRKDH;
  begin
    with frmSY_RKD.StoredProc1 do
    begin
      ParamByName('BILLID').Asstring := 's_rkd';
      case Fio_type of
        io_jyp:
          ParamByName('SORTCODE').Asstring := 'J';
        io_txp:
          ParamByName('SORTCODE').Asstring := 'T';
      end;
      ParamByName('DEPARTMENT').Asstring := VG_UnitID;
      ParamByName('CYEAR').AsInteger := RG_yf.ItemIndex;
      ExecProc;
      rkdh := Params[0].asstring;
    end;
  end;
  procedure DoAppRKD;
  begin
    with frmSY_RKD.Qry_RKD do
    begin
      Append;
      fieldbyname('rkdh').asstring := rkdh;
      fieldbyname('yjdh').asstring := CBo_yjdh.Text;
      fieldbyname('rkxz').asstring := DBLCB_rkxz.KeyValue;
      fieldbyname('lydw').asstring := Qry_tkfhpp.Fieldbyname('DWDM').AsString;
      fieldbyname('jszt').asstring := '0';
      fieldbyname('zbr').asstring := VG_USERNAME;
    end;
  end;
begin
  with frmSY_RKD do
  begin
    data.DM.StartTransaction;
    try
      GetNewRKDH; //生成发货单号
      DoAppRKD; //insert into TKS_JYRKD
      Qry_tkfhpp.First; //insert into TKS_JYRKPP
      while not Qry_tkfhpp.eof do
      begin
        with Qry_RKPP do
        begin
          append;
          fieldbyname('rkdh').asstring := rkdh;
          fieldbyname('kfdm').asstring := Qry_tkfhpp.FieldByName('KFDM').AsString;
          fieldbyname('sl').asinteger := Qry_tkfhpp.FieldByName('sl').AsInteger;
          fieldbyname('zk').asinteger := Qry_tkfhpp.FieldByName('zk').AsInteger;
          fieldbyname('jsj').asinteger := Qry_tkfhpp.FieldByName('jsj').AsInteger;
          fieldbyname('ppdm').asstring := Qry_tkfhpp.FieldByName('tdm').AsString;
          fieldbyname('jj').asFloat := Qry_tkfhpp.FieldByName('jsj').AsFloat + Qry_tkfhpp.FieldByName('sj').AsFloat * Qry_tkfhpp.FieldByName('zk').AsFloat / 100;

          fieldbyname('xj').asinteger := Qry_tkfhpp.FieldByName('sj').AsInteger;

          case FIo_type of
            io_jyp:
              v_s_sql := 'TYS_JYPPKC';
            io_txp:
              v_s_sql := 'TYS_TXPPKC';
            io_yp:
              v_s_sql := 'TYS_YPPKC';
            io_grp:
              v_s_sql := 'TYS_GRPPKC';
          end;
          AssignSQLstr(data.qrytmp, 'select XJ from ' + v_s_sql + ' where PPDM=''' + Qry_tkfhpp.FieldByName('tdm').AsString + '''');
          data.qrytmp.Open;
          if not data.qrytmp.IsEmpty then
            fieldbyname('xj').asinteger := data.qrytmp.Fields[0].AsInteger;
{              end;
            io_txp:
              begin
                fieldbyname('tudm').asstring := Qry_tkfhpp.FieldByName('tdm').AsString;
                fieldbyname('mz').asFloat := Qry_tkfhpp.FieldByName('jsj').AsFloat + Qry_tkfhpp.FieldByName('sj').AsFloat * Qry_tkfhpp.FieldByName('zk').AsFloat / 100;
                fieldbyname('sj').asinteger := Qry_tkfhpp.FieldByName('sj').AsInteger;
              end;
          end;}
        end;
        Qry_tkfhpp.Next;
      end;
      Qry_RKD.ApplyUpdates;
      Qry_RKPP.ApplyUpdates;
      Qry_tkfhpp.CancelUpdates;
      data.DM.Commit;
    except
      data.DM.Rollback;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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