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

📄 jm_fhdsc.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*******************************************************}
{                                                       }
{                         营业员分票                     }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在地市pub营业员分票模块,地市集邮票管理,地市集邮品管理,地市市场购入票里面调用。

*)
{
[与通信票对照]
  表对照
    A 通信票发货单         -> 集邮票品发货单
    B 通信出库票品         -> 集邮出库票品
    C 出库计划单表         -> 集邮票出库计划单表
    D 出库计划单面值表     -
    E 出库计划单票品表     -> 集邮出库计划单票品表
    F 通信票品库存         -> 集邮票品库存
  字段对照
    B
     图代码 -> 票品代码
     售价   -> 销价
     面值   -
     原价   +
     进价   +
    F
     库存总枚数 -> 库存总套数
     售价   -> 销价
     面值   -
     原价   +
     进价   +

[有关表]
  1.集邮票品发货单、集邮出库票品、集邮票出库计划单表、集邮出库计划单票品表
  2.集邮票品库存
[数据来源]
  出库单计划号:集邮票品发货单依据单号的GROUP BY
  发货单号:  集邮票品发货单的发货单号
  发货单主信息:集邮票品发货单
  发货单详细信息:集邮出库票品
[功能]
   增加:进入CHOOSE_FPD模块,并根据出库计划单生成发货单
[算法]
   集邮票品发货单
     发货单号:自动生成(此号要能区分票品类别)
     依据单号:集邮票出库计划单表.出库计划单号
     出库性质:集邮票出库计划单表.出库性质
     去向单位:集邮出库计划单票品表.单位代码
     开单日期:NULL
     在途状态:0
     勾核日期:NULL
     结算状态:0
     装票日期: NULL
     封装袋数:NULL
     出库日期:NULL
     登记日期:NULL
     主管人:NULL
     库管员:NULL
     核对人:NULL
     制表人: 当前操作员
     备注:NULL
   集邮出库票品
     票品代码:集邮出库计划单票品表.票吕代码
     进价:集邮出库计划单票品表.进价
     库房号:NULL
     库位号:NULL
     数量:集邮出库计划单票品表.分配数量
     原价:集邮出库计划单票品表.原价
     销价:集邮出库计划单票品表.销价
     折扣:集邮出库计划单票品表.折扣
     结算价:集邮出库计划单票品表.结算价
[更新有关表]
  集邮票品发货单、集邮出库票品
[备注]
  本模块其实分两部分(通过出库日期OR库管员判断是否此过程):
  1.发货单生成
    这个步骤不能对主管人、核对人操作
  2.发货单核对
    这个步骤可以对主管人、核对人操作,这时需要操作如下:
    A 记录主管人、核对人、登记日期到集邮票品发货单中
    B 新增记录到集邮票品库存中,字段对应如下:
      集邮票品库存
        票品代码:集邮出库票品.票品代码
        库房代码:集邮出库票品.库房号
        进价:集邮出库票品.进价
        原价:集邮出库票品.原价
        销价:集邮出库票品.销价
        库位号:集邮出库票品.库位号
        票品类别:通过票品代码判断(?)
        IF 出库性质 = '待销毁出库' THEN
          待销毁库存 = 待销毁库存 - 集邮出库票品.数量
        ELSE IF 出库性质 = '预付出库' THEN
          预付库存 = 预付库存 - 集邮出库票品.数量
        ELSE 库存总枚数 = 库存总枚数 + 集邮出库票品.数量
        变更标志:NULL(?)
        备注:NULL
      包号版号表(库存)
        起始版号:包号版号表(出库单).起始版本号
        终止版号: 包号版号表(出库单).终止版本号
    C 登帐
        总帐(集邮票品总帐):
        分类帐(集邮票品明细分类帐):
        分户帐(集邮票品总分户帐):
        进销存(集邮票品进销存表):
}

unit JM_FHDSC;

interface

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

type
  Tfrm_FHDSC = class(TFFormBase)
    ModiPanel1: TModiPanel;
    DS_fhd: TDataSource;
    DS_ckpp: TDataSource;
    Panel4: TPanel;
    XttxTitle: TRxLabel;
    Lbl_user: TLabel;
    rxQry_fhd: TRxQuery;
    RxQry_ckpp: TQuery;
    UpdateSQL1: TUpdateSQL;
    UpdateSQL2: TUpdateSQL;
    RxQry_ckppFHDH: TStringField;
    RxQry_ckppLB: TStringField;
    RxQry_ckppPPDM: TStringField;
    RxQry_ckppJJ: TFloatField;
    RxQry_ckppSL: TFloatField;
    RxQry_ckppYJ: TFloatField;
    RxQry_ckppXJ: TFloatField;
    RxQry_ckppJSJ: TFloatField;
    RxQry_ckppZK: TFloatField;
    RxQry_ckppZH: TStringField;
    RxQry_ckppPPMC: TStringField;
    Qry_kcsl: TQuery;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel5: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBGrid3: TDBGrid;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit6: TDBEdit;
    DBDateEdit1: TDBDateEdit;
    Panel1: TPanel;
    Label8: TLabel;
    DBG_fhd: TDBGrid;
    CBo_checked: TCheckBox;
    Rgp_ppfl: TRadioGroup;
    RxQry_ckppKFDM: TStringField;
    SqlStrings1: TSqlStrings;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Qry_jycxXJSetText(Sender: TField; const Text: string);
    procedure Qry_jycxXJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_jycxJSJSetText(Sender: TField; const Text: string);
    procedure Qry_jycxJSJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_jycxJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure Qry_jycxJJSetText(Sender: TField; const Text: string);
    procedure CBo_checkedClick(Sender: TObject);
    procedure DBG_fhdDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure RxQry_ckppJJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure RxQry_ckppJJSetText(Sender: TField; const Text: string);
    procedure RxQry_ckppXJGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure RxQry_ckppXJSetText(Sender: TField; const Text: string);
    procedure Rgp_ppflClick(Sender: TObject);
    procedure RxQry_ckppBeforeInsert(DataSet: TDataSet);

  private
    { Private declarations }
    L_type: TIO_Type;
    LB_type: string;
    FDtState: TDataState;
    function Save: Boolean;
    procedure DoDeleteFHD;
    procedure SetState(currdtState: TDataState);
    property DtState: TDataState read FDtState write SetState;
    function CheckKC: Integer; //检测分配的票品 数量是否超出库存
  public
    { Public declarations }
    queding: boolean;
    ckdh: string;
    Sarr: array[0..2] of string;
    function Execute_FHDSC(const sysDB: TDataBase): Boolean;
    procedure PPLB_StateChange; //票品类别改变
  end;

var
  frm_FHDSC: Tfrm_FHDSC;
procedure SHOW_MS_HTCK(FType: TIO_TYPE); //(后)后台分配出库

implementation

{$R *.DFM}
uses
  datas,JM_data, pub,
  JM_FHDSC_GETPP, JM_RKDRPT;

procedure SHOW_MS_HTCK(FType: TIO_TYPE); //(后)后台分配出库
begin
  Application.CreateForm(Tfrm_FHDSC, frm_FHDSC);
  with frm_FHDSC do
  try
    if Execute_FHDSC(data.DM) then
    begin
      L_Type := FType;
      case L_type of
        io_jyp:
          begin
            Rgp_ppfl.ItemIndex := 0;
            lb_type := '0';
          end;
        io_yp:
          begin
            Rgp_ppfl.ItemIndex := 1;
            lb_type := '1';
          end;
        io_grp:
          begin
            Rgp_ppfl.ItemIndex := 2;
            lb_type := '2';
          end;
      end;
      Cbo_checkedclick(nil);
      Caption := Application.Title;
      showmodal;
    end;
  finally
    Release;
  end;
end;

function Tfrm_FHDSC.Execute_FHDSC(const sysDB: TDataBase): Boolean;
begin
  Result := true;
  try
    Lbl_user.Caption := ' 操作员:' + VG_UserName;
    rxQry_fhd.Close;
    rxQry_fhd.DataBaseName := sysDB.DatabaseName;
    rxQry_ckpp.Close;
    rxQry_ckpp.DataBaseName := sysDB.DatabaseName;
    CBo_checked.Checked := true;
    CBo_checkedClick(nil);
    rxQry_ckpp.Open;
    dtState := dtBrowse;
  except
    Result := false;
    CHQMsgBox('不能打开<发货单>表!');
  end;
end;


function Tfrm_FHDSC.Save: Boolean;
begin
  if CheckKC = 1 then
  begin
    Exit;
  end;

  Data.DM.StartTransaction;
  try
    RxQry_ckpp.ApplyUpdates;
    data.DM.Commit;
    SetState(dtBrowse);
    Rgp_ppfl.Enabled := true;
  except
    data.DM.Rollback;
    raise;
  end;
  RxQry_ckpp.CommitUpdates;

end;

procedure Tfrm_FHDSC.ModiPanel1BtnClick(Index: TBtnVisible);
var
  t_type: TIO_TYPE;
  BK: TbookMark;
  jycx: string;
begin
  inherited;
  case index of
    bnAdd:
      begin
        t_type := L_type;
        with Tfrm_FHDSC_GETPP.Create(self) do
        try
          if Execute_FHDSC_GETPP(data.DM, t_type) then
            ShowModal;
          CBo_checkedClick(nil);
        finally
          Destroy;
        end;
      end;
    bnDelete:
      begin
        if RxQry_fhd.IsEmpty then
          exit;
        if rxQry_fhd.FieldByName('GHRQ').AsString = '' then
        begin
          if CHQMsgBox('确定要删除该发货单吗?', 2) = IDYES then
            DoDeleteFHD;
        end
        else
        begin
          CHQMsgBox('营业员已经复核的发货单不能删除!');
          exit;
        end;
      end;
    bnEdit:
      begin
        if RxQry_ckpp.IsEmpty then
          exit;
        if rxQry_fhd.FieldByName('GHRQ').AsString = '' then
        begin
          RxQry_ckpp.Edit;
          SetState(dtEdit);
          Rgp_ppfl.Enabled := False;
        end
        else
        begin
          CHQMsgBox('营业员已经复核的发货单不能修改!');
          exit;
        end;
      end;
    bnSave:
      begin
        Bk := RxQry_fhd.GetBookmark;

⌨️ 快捷键说明

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