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

📄 sj_jypfhdck.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:

{*******************************************************}
{                                                       }
{                     集邮票发货审核                    }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{               编制:中软金马项目开发组                }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级库房管理模块 集邮票部分的 发货审核菜单调用。
*)
{
[与零枚票对照]
  表对照
    A 零枚票发货单         -> 集邮票品发货单
    B 零枚出库票品         -> 集邮出库票品
    C 袋数重量表           -> 集邮袋数重量表
    D 包号版号表(出库单)  -> 集邮包号版号(出库单)
  字段对照
    B
     图代码 -> 票品代码
     售价   -> 销价
     面值   -
     原价   +
     进价   +
    D
     进价   +

有关表:
  集邮票品发货单、集邮出库票品、集邮袋数重量表、集邮包号版号(出库单)
数据来源:
  出库单计划号:集邮票品发货单依据单号的GROUP BY
  发货单号:  集邮票品发货单的发货单号
  发货单主信息:集邮票品发货单
  发货单详细信息:集邮出库票品
  包袋:集邮袋数重量表
  包号版本号:集邮包号版号(出库单)
功能:
算法:
  1.输入的库房号必须在库房表中存在
  2.对起始版号、终止版本号数据修改时要较验,即不能重复
  3.当修改完成保存数据时,需要作如下操作:
    A. 装票日期、封装袋数、出库日期、库管员、备注保存到集邮票品发货单中
       修改集邮票品发货单的在途状态为'1'
    B. 记录库存数据
      零枚票品库存
        票品代码:集邮出库票品.票品代码
        库房代码:集邮出库票品.库房号
        原价:集邮出库票品.原价
        进价:集邮出库票品.进价
        销价:集邮出库票品.销价
        库位号:集邮出库票品.库位号
        票品类别:通过票品代码判断(?)
        IF 出库性质 = '待销毁出库' THEN
          待销毁库存 = 待销毁库存 - 集邮出库票品.数量
        ELSE IF 出库性质 = '预付出库' THEN
          预付库存 = 预付库存 - 集邮出库票品.数量
        ELSE 库存总枚数 = 库存总枚数 + 集邮出库票品.数量
        变更标志:NULL(?)
        备注:NULL
      包号版号表(库存)
        起始版号:包号版号表(出库单).起始版本号
        终止版号: 包号版号表(出库单).终止版本号
    C. 记帐
        集邮票总帐表
        集邮票总分户帐表  (集邮票总分户帐明细表)
        集邮票明细分类帐
        集邮票进发存明细帐表
        集邮票明细分类帐(库管员)
        集邮票品库存(库管)
        集邮票品库存(业务部)
更新有关表:
  集邮票品发货单、集邮出库票品、集邮袋数重量表、集邮包号版号(出库单)
备注:
  对操作员要较验权限,不能浏览其它库房的入库单
}
unit SJ_JYPFHDCK;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FORMBASE, ExtCtrls, ModiPanel, StdCtrls, Mask, DBCtrls, Grids, DBGrids,
  CurrEdit, RXDBCtrl, ToolEdit, ComCtrls, Buttons, DBTables, Db,
  RxQuery, sqlstrings, RXCtrls;

type
  Tfrm_JYPFHDCK = class(TFFormBase)
    ModiPanel1: TModiPanel;
    Panel1: TPanel;
    DBGrid2: TDBGrid;
    Panel2: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label9: TLabel;
    DBEdit8: TDBEdit;
    DBDateEdit1: TDBDateEdit;
    Label10: TLabel;
    Label11: TLabel;
    DBDateEdit2: TDBDateEdit;
    Label12: TLabel;
    RxDBCalcEdit1: TRxDBCalcEdit;
    USQL_FHDH: TUpdateSQL;
    DS_FHDH: TDataSource;
    qryFHDPP: TQuery;
    USQL_FHDPP: TUpdateSQL;
    DS_FHDPP: TDataSource;
    qryBD: TQuery;
    USQL_BD: TUpdateSQL;
    DS_BD: TDataSource;
    qryBHBH: TQuery;
    USQL_BHBH: TUpdateSQL;
    DS_BHBH: TDataSource;
    DBGrid1: TDBGrid;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    DBGrid4: TDBGrid;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    DBGrid3: TDBGrid;
    qryFHD: TRxQuery;
    BitBtn5: TBitBtn;
    StoredProc1: TStoredProc;
    qryFHDPPFHDH: TStringField;
    qryFHDPPPPDM: TStringField;
    qryFHDPPJJ: TFloatField;
    qryFHDPPKFDM: TStringField;
    qryFHDPPKWH: TStringField;
    qryFHDPPSL: TFloatField;
    qryFHDPPYJ: TFloatField;
    qryFHDPPXJ: TFloatField;
    qryFHDPPZH: TStringField;
    qryFHDPPTJC: TStringField;
    qryFHDPPKFMC: TStringField;
    qryFHDPPPPDW: TStringField;
    Panel3: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    BitBtn6: TBitBtn;
    Label1: TLabel;
    BitBtn7: TBitBtn;
    DateEdit1: TDateEdit;
    qryBHBHFHDH: TStringField;
    qryBHBHPPDM: TStringField;
    qryBHBHBLSH: TFloatField;
    qryBHBHQSBH: TStringField;
    qryBHBHZZBH: TStringField;
    qryBHBHZH: TStringField;
    qryBHBHTJC: TStringField;
    Qryban: TQuery;
    QrybanTDM: TStringField;
    QrybanBLSH: TFloatField;
    QrybanBJC: TStringField;
    DS_ban: TDataSource;
    qryBHBHbz: TStringField;
    Panel4: TPanel;
    BitBtn8: TBitBtn;
    Qrybao: TQuery;
    DS_bao: TDataSource;
    QrybaoBJC: TStringField;
    QrybaoBS: TFloatField;
    QrybaoBZLSH: TFloatField;
    Qry_ban1: TQuery;
    StringField1: TStringField;
    FloatField1: TFloatField;
    StringField2: TStringField;
    DS_ban1: TDataSource;
    Panel5: TPanel;
    Label6: TLabel;
    Label13: TLabel;
    Edt_qsbao: TEdit;
    DBLB_ban: TDBLookupComboBox;
    Label15: TLabel;
    Edt_zzbao: TEdit;
    Label14: TLabel;
    Edt_qsban: TEdit;
    Label16: TLabel;
    Edt_zzban: TEdit;
    DBLB_bao: TDBLookupComboBox;
    Label8: TLabel;
    BBt_Send: TBitBtn;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure qryBDAfterInsert(DataSet: TDataSet);
    procedure qryBHBHAfterInsert(DataSet: TDataSet);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure qryFHDUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure qryFHDPPJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure qryFHDPPJJSetText(Sender: TField; const Text: string);
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure qryFHDAfterScroll(DataSet: TDataSet);
    procedure DBLB_banCloseUp(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure Edt_zzbaoExit(Sender: TObject);
    procedure Edt_qsbaoExit(Sender: TObject);
    procedure BBt_SendClick(Sender: TObject);
  private
    { Private declarations }
    FDtState: TDataState;
    function Save: Boolean;
    procedure SetState(Value: TdataState);
    procedure InitData;
    function CheckBill(ID: string): Boolean;
  public
    { Public declarations }
  end;

function Show_JYPFHDCK: Boolean;
var
  frm_JYPFHDCK: Tfrm_JYPFHDCK;

implementation

uses datas, Pub,SJ_JYPFHDDY, SJ_JYPFHDDY0, SJ_FHDFS;
{$R *.DFM}

function Show_JYPFHDCK: Boolean;
begin
  Result := false;
  Application.CreateForm(Tfrm_JYPFHDCK, frm_JYPFHDCK); {TFFormBase1, FFormBase1}
  with frm_JYPFHDCK do {FFormBase1}
  try
    if CheckRight(frm_JYPFHDCK, [ModiPanel1, BitBtn5, BitBtn6]) then
      result := ShowModal = MB_OK;
  finally
    Free;
  end;
end;

procedure Tfrm_JYPFHDCK.SetState(Value: TdataState);
var
  v_b_modiBHBH: boolean; //是否只修改包号版号(修改已复核过的出库单包号版号)
  procedure SetControls(Value: Boolean);
  begin
    DBDateEdit1.ReadOnly := not (not Value and qryFHD.FieldByName('HDR').IsNull);
    DBDateEdit2.ReadOnly := DBDateEdit1.ReadOnly;
    RxDBCalcEdit1.ReadOnly := DBDateEdit1.ReadOnly;
    DBEdit7.ReadOnly := Value;
    Panel1.Enabled := Value;
    DBGrid4.ReadOnly := Value;
    DBGrid3.ReadOnly := Value;

    BitBtn1.Enabled := not (Value);
    BitBtn2.Enabled := not (Value);
    BitBtn8.Enabled := not (Value);
    BitBtn5.Enabled := Value and not (qryFHD.IsEmpty or qryFHDPP.isempty);
    BitBtn6.Enabled := Value and not (qryFHD.IsEmpty or qryFHDPP.isempty);
  end;
begin
  v_b_modiBHBH := false;
  if not qryFHD.Active then
  begin
    FDtState := dtBrowse;
    ModiPanel1.ChangeMode(FDtState = dtBrowse);
    SetControls(FDtState = dtBrowse);
    exit;
  end;

  if (Value in [dtEdit, dtInsert]) and
    isChecked(io_jyp, True, qryFHD.FieldbyName('fhdh').Asstring) then
  begin
    if qryFHD.FieldbyName('HDR').AsString <> VG_UserName then
    begin
      CHQMsgBox('对不起,您只能修改自己的发货单');
      exit;
    end
    else
      v_b_modiBHBH := true;
  end;

  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  SetControls(FDtState = dtBrowse);
  with qryFHD do
    case FDtstate of
      dtBrowse:
        begin
        end;
      dtinsert:
        begin
          Append; {append}
        end;
      dtedit:
        begin
          if not v_b_modiBHBH then
          begin
            Edit;
            if FieldByName('CKRQ').AsString = '' then
              FieldByName('CKRQ').AsDateTime := GetsysDate;
            if FieldByName('ZPRQ').AsString = '' then
              FieldByName('ZPRQ').AsDateTime := GetsysDate;
          end
{          else if qryBHBH.IsEmpty then
          begin
            qryFHDPP.First;
            while not qryFHDPP.Eof do
            begin
              qryBHBH.Append;
              qryBHBH.Post;
              qryFHDPP.Next;
            end;
          end; }
        end;
    end;
  SetBHBHCtls(Panel5, Value);
end;

function Tfrm_JYPFHDCK.Save: Boolean;
begin
  result := true;
  with qryBD do {query}
  begin
    First;
    while not Eof do
    begin
      if (FieldByName('FHDH').Asstring = '') or (FieldByName('DZBH').Asstring = '') then
      begin
        CHQMsgBox('包装袋编号不能为空!');
        result := False;
        Break;
      end;
      Next;
    end;
  end;

  with qryBHBH do {query}
  begin
    First;
    while not Eof do
    begin //FHDH, PPDM, QSBH, ZZBH
      if (FieldByName('FHDH').Asstring = '') or (FieldByName('PPDM').Asstring = '')
        or (FieldByName('QSBH').Asstring = '') or (FieldByName('ZZBH').Asstring = '') then
      begin
        CHQMsgBox('起始版号、终止版号不能为空!');
        result := False;
        Break;
      end;
      Next;
    end;
  end;
  if not result then exit;

  with qryFHD do {query}
  begin
    Database.StartTransaction;
    try
      qryFHD.ApplyUpdates;
      qryFHDPP.ApplyUpdates;
      qryBD.ApplyUpdates;
      qryBHBH.ApplyUpdates;
      Database.Commit;
    except
      result := False;
      if Database.InTransaction then Database.RollBack;
      if errMsg = '' then
        raise
      else
        raise exception.Create(errMsg);
    end;
  end;
  qryFHD.CommitUpdates;
  qryFHDPP.CommitUpdates;
  qryBD.CommitUpdates;
  qryBHBH.CommitUpdates;

  SetState(dtBrowse);
end;

procedure Tfrm_JYPFHDCK.ModiPanel1BtnClick(Index: TBtnVisible);
var
  jycx: string;
begin
  inherited;
  case index of
    bnAdd:
      ; //SetState(dtInsert)
    bnDelete:
      if CHQMsgBox(MSG_DELETE, 2) = IDYES then
        with qryFHD do {query}
        begin
          Database.StartTransaction;
          try
            Delete; {query1}
            Database.Commit;
          except
            if Database.InTransaction then Database.RollBack;
            if errMsg = '' then
              raise
            else
              raise exception.Create(errMsg);
          end;
        end;
    bnEdit:
      begin
        if qryFHDPP.IsEmpty then
          exit;
        SetState(dtEdit);
      end;
    bnSave:
      Save;
    bnCancel:
      if CHQMsgBox('取消编辑, 确定吗?', 2) = IDYES then
      begin
        qryFHD.CancelUpdates;
        qryFHDPP.CancelUpdates;
        qryBD.CancelUpdates;
        qryBHBH.CancelUpdates;

⌨️ 快捷键说明

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