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

📄 sj_ypfhdck.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_YPFHDCK;

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_YPFHDCK = 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;
    UpdateSQL1: TUpdateSQL;
    DataSource2: TDataSource;
    qryFHDPP: TQuery;
    DataSource3: TDataSource;
    DBGrid3: TDBGrid;
    qryFHD: TRxQuery;
    BitBtn5: TBitBtn;
    StoredProc1: TStoredProc;
    UpdateSQL2: TUpdateSQL;
    Panel3: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Label8: TLabel;
    BitBtn7: TBitBtn;
    DateEdit1: TDateEdit;
    BitBtn6: TBitBtn;
    qryFHDPPFHDH: TStringField;
    qryFHDPPPPDM: TStringField;
    qryFHDPPJJ: TFloatField;
    qryFHDPPKFDM: TStringField;
    qryFHDPPKWH: TStringField;
    qryFHDPPSL: TFloatField;
    qryFHDPPYJ: TFloatField;
    qryFHDPPXJ: TFloatField;
    qryFHDPPZH: TStringField;
    qryFHDPPMC: TStringField;
    qryFHDPPKFMC: TStringField;
    qryFHDPPPPDW: TStringField;
    BBt_Send: TBitBtn;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure qryBHBHAfterInsert(DataSet: TDataSet);
    procedure BitBtn5Click(Sender: TObject);
    procedure qryFHDUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure qryFHDPPUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure qryFHDPPJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure qryFHDPPJJSetText(Sender: TField; const Text: string);
    procedure qryFHDAfterScroll(DataSet: TDataSet);
    procedure BBt_SendClick(Sender: TObject);
  private
    { Private declarations }
    FDtState: TDataState;
    function Save: Boolean;
    procedure SetState(Value: TdataState);
    procedure InitData;
    function check(id: string): boolean;
  public
    { Public declarations }
  end;

function Show_YPFHDCK: Boolean;
var
  frm_YPFHDCK: Tfrm_YPFHDCK;

implementation

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

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

procedure Tfrm_YPFHDCK.SetState(Value: TdataState);
  procedure SetControls(Value: Boolean);
  begin
    Panel1.Enabled := Value;
    DBEdit7.ReadOnly := Value;
    DBDateEdit1.ReadOnly := Value;
    DBDateEdit2.ReadOnly := Value;
    RxDBCalcEdit1.ReadOnly := Value;
    DBGrid3.ReadOnly := Value;
    BitBtn5.Enabled := Value and not (qryFHD.IsEmpty or qryFHDPP.isempty);
    ;
    BitBtn6.Enabled := Value and not (qryFHD.IsEmpty or qryFHDPP.isempty);
    ;
  end;
begin
  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_yp, True, qryFHD.FieldbyName('fhdh').Asstring) then
  begin
    CHQMsgBox('该入库单已经复核,不能修改!');
    exit;
  end;

  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  SetControls(FDtState = dtBrowse);
  with qryFHD do
    case FDtstate of
      dtBrowse:
        begin
//          qryFHDPP.Datasource := DataSource2;
        end;
      dtinsert:
        begin
          Append; {append}
//          qryFHDPP.Datasource := nil;
        end;
      dtedit:
        begin
//          qryFHDPP.Datasource := nil;
          Edit;
          if FieldByName('CKRQ').AsString = '' then
            FieldByName('CKRQ').AsDateTime := GetsysDate;
          if FieldByName('ZPRQ').AsString = '' then
            FieldByName('ZPRQ').AsDateTime := GetsysDate;
        end;
    end;
end;

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

  SetState(dtBrowse);
end;

procedure Tfrm_YPFHDCK.ModiPanel1BtnClick(Index: TBtnVisible);
begin
  inherited;
  case index of
    bnAdd: SetState(dtInsert);
    bnDelete:
      if CHQMsgBox(MSG_DELETE, 2) = IDYES then
        with qryFHD do {query}
        begin
          Database.StartTransaction;
          try

⌨️ 快捷键说明

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