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

📄 sy_gryprkdsc.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 SY_GRYPRKDSC;

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, RXCtrls, Spin, SqlStrings;

type
  Pdwdm = ^Tdwdm;
  Tdwdm = record
    dwdm: string;
    dwmc: string;
  end;
  Prkxz = ^Trkxz;
  Trkxz = record
    rkxzdm: string;
    rkxzmc: string;
  end;
  Tfrm_GRYPRKDSC = class(TFFormBase)
    ModiPanel1: TModiPanel;
    Panel1: TPanel;
    DBG_RKD: TDBGrid;
    Panel2: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    DS_RKD: TDataSource;
    qry_RKD: TQuery;
    USQL_RKDGR: TUpdateSQL;
    qry_RKDPP: TQuery;
    USQL_RKDPPGR: TUpdateSQL;
    StoredProc1: TStoredProc;
    DS_RKDPP: TDataSource;
    DBG_RKDPP: TDBGrid;
    Qry_KFB: TQuery;
    Panel_Head: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Label6: TLabel;
    SEd_Y: TSpinEdit;
    Label9: TLabel;
    SEd_M: TSpinEdit;
    RG_yf: TRadioGroup;
    DBLCBo_dw: TDBLookupComboBox;
    Qry_dw: TQuery;
    DS_dw: TDataSource;
    DBDE_kdrq: TDBDateEdit;
    DBEdt_zbr: TDBEdit;
    qry_RKDPPZH: TStringField;
    qry_RKDPPTMC: TStringField;
    qry_RKDPPPPDM: TStringField;
    qry_RKDPPJJ: TFloatField;
    qry_RKDPPKFDM: TStringField;
    qry_RKDPPYJ: TFloatField;
    qry_RKDPPXJ: TFloatField;
    qry_RKDPPSL: TFloatField;
    qry_RKDPPBZ: TStringField;
    qry_RKDPPRKDH: TStringField;
    qry_RKDPPKWH: TStringField;
    qry_RKDPPZK: TFloatField;
    qry_RKDPPJSJ: TFloatField;
    qry_RKDPPDW: TStringField;
    qry_RKDPPJSJE: TFloatField;
    qry_RKDPPYXJ: TFloatField;
    qry_RKDPPkfmc: TStringField;
    USQL_RKDYP: TUpdateSQL;
    USQL_RKDPPYP: TUpdateSQL;
    SqlS_RKD: TSqlStrings;
    SqlS_RKDPP: TSqlStrings;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure SEd_YChange(Sender: TObject);
    procedure qry_RKDPPJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure qry_RKDPPJJSetText(Sender: TField; const Text: string);
    procedure qry_RKDPPZKChange(Sender: TField);
    procedure qry_RKDPPAfterInsert(DataSet: TDataSet);
  private
    { Private declarations }
    FDtState: TDataState;
    io_Type: TIO_TYPE;
    function Save: Boolean;
    procedure SetState(Value: TdataState);
    procedure DoDelFHD;
    procedure Print_RKD;
  public
    { Public declarations }
    recordcount: integer;
    sj: array of double;
    xj: array of double;
    tdm: array of string;
    tmc: array of string;
    zh: array of string;
    queding: boolean;
    editpd: boolean;
    insertmode: boolean;
  end;

function ExeSY_GRYPRKD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
var
  frm_GRYPRKDSC: Tfrm_GRYPRKDSC;

implementation

uses datas, pub, SHOW_PP, SJ_RKDDY, SJ_RichEdit;
{$R *.DFM}

function ExeSY_GRYPRKD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
begin
  Application.CreateForm(Tfrm_GRYPRKDSC, frm_GRYPRKDSC);
  with frm_GRYPRKDSC do
  try
    Tag := ATag;
    Caption := '邮资票品管理信息系统——' + pCaption[integer(io_typ)] + '业务';
    if CheckRight(frm_GRYPRKDSC, [ModiPanel1]) then
    begin
      io_type := io_typ;
      Qry_RKD.SQL := Sqls_RKD.FSqlText[io_typ];
      Qry_RKDPP.SQL := Sqls_RKDPP.FSqlText[io_typ];
      case io_type of
        io_yp:
          begin
            qry_RKD.UpdateObject := USQL_RKDYP;
            qry_RKDPP.UpdateObject := USQL_RKDPPYP;
          end;
        io_grp:
          begin
            qry_RKD.UpdateObject := USQL_RKDGR;
            qry_RKDPP.UpdateObject := USQL_RKDPPGR;
          end;
      end;

      SEd_Y.OnChange := nil;
      SEd_M.OnChange := nil;
      SEd_Y.Value := VG_Year;
      SEd_M.Value := VG_Month;
      SEd_Y.OnChange := SEd_YChange;
      SEd_M.OnChange := SEd_YChange;
      SEd_YChange(nil);
      Qry_RKDPP.Open;
      result := ShowModal = MB_OK;
    end;
  finally
    Free;
  end;
end;

procedure Tfrm_GRYPRKDSC.SetState(Value: TdataState);
var
  i: integer;
  procedure SetControls(Value: Boolean);
  begin
    Panel1.Enabled := Value;
    RG_yf.Enabled := not value;
    DBG_RKDPP.ReadOnly := Value;
    DBLCBo_dw.ReadOnly := value;
    DBDE_kdrq.ReadOnly := value;
    DBEdt_zbr.ReadOnly := value;
  end;
begin
  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  SetControls(FDtState = dtBrowse);
  for i := 2 to 7 do
    if Value = dtBrowse then
      DBG_RKDPP.Columns[i].Color := cl3DLight
    else
      DBG_RKDPP.Columns[i].Color := clInfoBK;
end;

procedure Tfrm_GRYPRKDSC.DoDelFHD;
begin
  try
    data.DM.StartTransaction;
    with qry_RKDPP do
    begin
      DataSource := nil;
      DisableConstraints;
      while not IsEmpty do
        Delete;
      EnableConstraints;
    end;
    Qry_RKDPP.ApplyUpdates;
    Qry_RKD.Delete;
    Qry_RKD.ApplyUpdates;
    data.DM.Commit;
  except
    data.DM.Rollback;
    raise Exception.Create('数据保存错误');
    exit;
  end;
  Qry_RKD.CommitUpdates;
  Qry_RKDPP.CommitUpdates;
  Qry_RKDPP.DataSource := DS_RKD;
  Qry_RKDPP.EnableConstraints;
  SetState(dtBrowse);
end;

function Tfrm_GRYPRKDSC.Save: Boolean;
var
  rkdh: string;

  function DoRefreshRKDH: boolean;
  begin
    Result := true;
    if Qry_RKD.FieldByName('RKDH').AsString = '' then
    begin
      with StoredProc1 do
      begin
        ParamByName('BILLID').Asstring := 's_rkd';
        case io_type of
          io_yp:
            ParamByName('SORTCODE').Asstring := 'P';
          io_grp:
            ParamByName('SORTCODE').Asstring := 'G';
        end;
        ParamByName('DEPARTMENT').Asstring := VG_UnitID;
        ParamByName('CYEAR').AsInteger := RG_yf.ItemIndex;
        ExecProc;
        rkdh := Params[0].asstring;
      end;
      Qry_RKD.FieldByName('RKDH').AsString := rkdh;
    end;

    with Qry_RKDPP do
    begin
      disablecontrols;
      first;
      while not Eof do
      begin
        edit;
        FieldByName('RKDH').AsString := Qry_RKD.FieldByName('RKDH').AsString;
        if (FieldByName('SL').AsFloat = 0) or (FieldByName('JJ').AsFloat = 0)
          or not ((FieldByName('ZK').AsFloat = 0) xor (FieldByName('JSJ').AsFloat = 0)) then
        begin
          Result := false;
          EnableControls;
          CHQMsgBox('请设置入库票品的数量及价格!');
          exit;
        end;
        Next;
      end;
      EnableControls;
    end;
  end;
begin
  if Qry_RKD.FieldByName('LYDW').IsNull or Qry_RKD.FieldByName('KDRQ').IsNull then
  begin
    CHQMsgBox('来源单位和开单日期不能为空!');
    exit;
  end;

  Qry_RKDPP.First;
  while not Qry_RKDPP.Eof do
  begin
    if Qry_RKDPP.fieldbyname('kfdm').asstring = '' then
    begin
      CHQMsgBox('库房号不能为空!');
      exit;
    end;
    Qry_RKDPP.Next;
  end;

  if not DoRefreshRKDH then
    exit;

⌨️ 快捷键说明

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