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

📄 grp_rkfh.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 GRP_RKFH;

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_GRP_RKFH = 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;
    DBDateEdit1: TDBDateEdit;
    Label10: TLabel;
    UpdateSQL1: TUpdateSQL;
    DataSource2: TDataSource;
    qryRKDPP: TQuery;
    UpdateSQL2: TUpdateSQL;
    DataSource3: TDataSource;
    DBGrid3: TDBGrid;
    qryRKD: TRxQuery;
    BitBtn5: TBitBtn;
    Label12: TLabel;
    Panel3: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Label8: TLabel;
    BitBtn7: TBitBtn;
    DateEdit1: TDateEdit;
    BitBtn6: TBitBtn;
    StoredProc2: TStoredProc;
    qryRKDPPRKDH: TStringField;
    qryRKDPPPPDM: TStringField;
    qryRKDPPJJ: TFloatField;
    qryRKDPPKFDM: TStringField;
    qryRKDPPKWH: TStringField;
    qryRKDPPSL: TFloatField;
    qryRKDPPBZ: TStringField;
    qryRKDPPZH: TStringField;
    qryRKDPPTMC: TStringField;
    qryRKDPPKFMC: TStringField;
    qryRKDPPPPDW: TStringField;
    DBEdit1: TDBEdit;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure qryRKDUpdateError(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 qryRKDPPJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure qryRKDPPJJSetText(Sender: TField; const Text: string);
    procedure qryRKDAfterScroll(DataSet: TDataSet);
  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_GRP_RKFH: Boolean;

var
  Frm_GRP_RKFH: TFrm_GRP_RKFH;

implementation

uses datas, Pub;

{$R *.DFM}

function Show_GRP_RKFH: Boolean;
begin
  Result := false;
  Application.CreateForm(TFrm_GRP_RKFH, Frm_GRP_RKFH);
  with Frm_GRP_RKFH do
  try
    if CheckRight(Frm_GRP_RKFH, [ModiPanel1, BitBtn5, BitBtn6]) then
      result := ShowModal = MB_OK;
  finally
    Free;
  end;
end;

procedure TFrm_GRP_RKFH.SetState(Value: TdataState);
  procedure SetControls(Value: Boolean);
  begin
    Panel1.Enabled := Value;
    DBEdit1.ReadOnly := Value;
    DBDateEdit1.ReadOnly := Value;
    DBGrid3.ReadOnly := Value;
    BitBtn5.Enabled := Value and not (qryRKD.IsEmpty or qryRKDPP.isempty);
    BitBtn6.Enabled := Value and not (qryRKD.IsEmpty or qryRKDPP.isempty);
  end;
begin
  if not qryRKD.Active then
  begin
    FDtState := dtBrowse;
    ModiPanel1.ChangeMode(FDtState = dtBrowse);
    SetControls(FDtState = dtBrowse);
    exit;
  end;

  if (Value in [dtEdit, dtInsert]) and
    isChecked(io_grp, False, qryRKD.FieldbyName('rkdh').Asstring) then
  begin
    CHQMsgBox('该入库单已经复核,不能修改!');
    exit;
  end;

  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  SetControls(FDtState = dtBrowse);
  with qryRKD do
    case FDtstate of
      dtBrowse:
        begin
          //          qryRKDPP.Datasource := DataSource2;
        end;
      dtinsert:
        begin
          Append;
          //          qryRKDPP.Datasource := nil;
        end;
      dtedit:
        begin
          //          qryRKDPP.Datasource := nil;
          Edit;
          if FieldByName('RKRQ').AsString = '' then
            FieldByName('RKRQ').AsDateTime := GetSYSDate;
        end;
    end;
end;

function TFrm_GRP_RKFH.Save: Boolean;
begin
  result := True;

  with qryRKD do                                            {query}
  begin
    Database.StartTransaction;
    try
      qryRKD.ApplyUpdates;
      qryRKDPP.ApplyUpdates;
      Database.Commit;
    except
      result := False;
      if Database.InTransaction then
        Database.RollBack;
      if errMsg = '' then

⌨️ 快捷键说明

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