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

📄 ss_jypljzcsh.pas

📁 省级集邮品管理ERP
💻 PAS
字号:
{*******************************************************}
{                                                       }
{                集邮票明细帐累计值初始化               }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{            编制:中软金马邮资票品项目开发组           }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级系统管理模块里的集邮票,集邮品,零枚,购入票里面调用。

*)
{[与零枚票对照]
  表对照
    A 零枚票品库存         -> 集邮票品库存
    B 包号版本号表(库存)   -> 集邮包号版本号表(库存)
    C 集邮票明细分类帐(库管员) +
    D 零枚票明细分类帐     -> 集邮票明细分类帐
    E 邮资票品图信息表     -> 邮资票品套信息表
  字段对照
    A
     图代码 -> 票品代码
     售价   -> 销价
     面值   -
     原价   +
     进价   +

有关表:
  集邮票品库存、集邮包号版本号表(库存)、集邮票明细分类帐(库管员)、集邮票明细分类帐
  邮资票品套信息表、库房表
数据来源:
  库房号: 库房表
  列表1:集邮票品库存(按志号排序)
  列表2:包号版本号表(库存)
功能:
算法:
  集邮票品库存
    票品代码:邮资票品图信息表.票品代码
    库房代码:库房下拉框中选择
    库位号:?
    进价:?
    原价:?
    销价:?
    库存总数:?
    预付库存:?
    待销毁库存:?
  包号版本号表(库存)
    起始版号:?
    终止版号:?
  集邮票明细分类帐
    票品代码:集邮票品库存.票品代码
    进价:集邮票品库存.进价
    出入库单:'SYSTEM'
    字:'初'
    日期:系统启用日期
    原价:集邮票品库存.原价
    销价:集邮票品库存.销价
    折扣: 1
    原价余额:集邮票品库存.库存总数 *  集邮票品库存.原价
    进价余额:集邮票品库存.库存总数 *  集邮票品库存.进价
    销价余额:集邮票品库存.库存总数 *  集邮票品库存.销价
  集邮票明细分类帐(库管员)
    票品代码: 集邮票品库存.票品代码
    库房号: 集邮票品库存.库房号
    出入库单: 'SYSTEM'
    字: '初'
    日期: 系统启用日期
    单位代码: 'SYSTEM'
    结存数量: 集邮票品库存.库存总数

  以上都必需在一个事务中完成。
更新有关表:
  集邮票品库存、包号版本号表(库存)、集邮票总帐表、集邮票明细分类帐
备注:
   初始化完成后不能再修改,通过初始化杂表判断是否完成
}
unit SS_JYPLJZCSH;

interface

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

type
  Tfrm_JYPLJZCSH = class(TFFormBase)
    ModiPanel1: TModiPanel;
    RxDBGrid1: TRxDBGrid;
    Panel1: TPanel;
    Edit1: TEdit;
    Label3: TLabel;
    UpdateSQL1: TUpdateSQL;
    DataSource1: TDataSource;
    qryYZPPTXXB: TRxQuery;
    UpdateSQL2: TUpdateSQL;
    UpdateSQL3: TUpdateSQL;
    UpdateSQL4: TUpdateSQL;
    SqlStrings: TSqlStrings;
    Panel11: TPanel;
    RxLabel1: TRxLabel;
    DWMC: TLabel;
    Label1: TLabel;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure cmbKFHChange(Sender: TObject);
    procedure qryYZPPTXXBAfterOpen(DataSet: TDataSet);
    procedure qryYZPPTXXBUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
  private
    { Private declarations }
    FDtState: TDataState;
    procedure SetState(Value: TdataState);
    function Save: Boolean;
    procedure InitData;
    procedure SLFldChg(Sender: TField); //计算字段——增加、减少金额
  public
    { Public declarations }
  end;

function Show_JYPLJZCSH(t_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
var
  frm_JYPLJZCSH: Tfrm_JYPLJZCSH;

implementation

uses datas,Pub;

{$R *.DFM}

var
  l_typ: TIO_TYPE;

function Show_JYPLJZCSH(t_typ: TIO_TYPE; const SenderTag: Integer): Boolean;
begin
  result := False;
  l_typ := t_typ;
  Application.CreateForm(Tfrm_JYPLJZCSH, frm_JYPLJZCSH); {TFFormBase1, FFormBase1}
  with frm_JYPLJZCSH do {FFormBase1}
  try
    Tag := SenderTag;
    if CheckRight(frm_JYPLJZCSH, [ModiPanel1]) then
    begin
      Caption := CYZPPTIT;
      DWMC.Caption := '使用单位:' + VG_UnitName;
      RxLabel1.Caption := pCaption[integer(l_typ)] + '明细帐累计值初始化';
      result := ShowModal = MB_OK;
    end;
  finally
    Free;
  end;
end;

procedure Tfrm_JYPLJZCSH.SetState(Value: TdataState);
  procedure SetControls;
  begin
    RxDBGrid1.ReadOnly := (FDtState = dtBrowse);
    ModiPanel1.FButtons[bnEdit].Enabled := (FDtState = dtBrowse) and not (InitOver(l_typ, 1) = 1);
    ModiPanel1.FButtons[bnDelete].Enabled := not (FDtState = dtBrowse);
  end;
begin
  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
  SetControls;
  with qryYZPPTXXB do
    case FDtstate of
      dtBrowse: ;
      dtinsert: Append; {append}
      dtedit: Edit; {edit}
    end;
end;

function Tfrm_JYPLJZCSH.Save: Boolean;
begin
  with qryYZPPTXXB do
  begin
    Database.StartTransaction;
    try
      ApplyUpdates;
      Database.Commit;
    except
      if Database.InTransaction then Database.RollBack;
      if errMsg = '' then
        raise
      else
        raise exception.Create(errMsg);
    end;
    SetState(dtBrowse);
    result := True;
  end;
end;

procedure Tfrm_JYPLJZCSH.ModiPanel1BtnClick(Index: TBtnVisible);
begin
  inherited;
  case index of
    bnEdit:
      if not qryYZPPTXXB.IsEmpty then
        SetState(dtEdit);
    bnSave: Save;
    bnCancel:
      if CHQMsgBox('取消编辑, 确定吗?', 2) = IDYES then
      begin
        qryYZPPTXXB.Cancelupdates; {query}
        SetState(dtBrowse);
      end;
    bnPrint:
      PrintDBGrid(RxDBGrid1, RxLabel1.Caption);
    bnClose: Close;
  end;
end;

procedure Tfrm_JYPLJZCSH.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  if (FDtstate in [dtInsert, dtEdit]) then
    case CHQMsgBox(MSG_EXITSAVE, 3) of
      IDYES:
        if not Save then Action := caNone;
      IDCANCEL: Action := caNone;
    end;
end;

procedure Tfrm_JYPLJZCSH.FormCreate(Sender: TObject);
var
  upObject: array[io_jyp..io_grp] of TUpdateSQL;
begin
  inherited;
  ModiPanel1.FButtons[bnEdit].Tag := 201;

  if qryYZPPTXXB.Active then qryYZPPTXXB.Close;
  upObject[l_typ] := UpdateSQL1;
  upObject[io_txp] := UpdateSQL2;
  upObject[io_yp] := UpdateSQL3;
  upObject[io_grp] := UpdateSQL4;

  Caption := pCaption[integer(l_Typ)] + '明细帐累计值初始化';
  qryYZPPTXXB.SQL := SqlStrings.FSqlText[l_typ];
  qryYZPPTXXB.UpdateObject := upObject[l_typ];
  with RxDBGrid1 do
{    if l_typ = io_txp then
    begin
      Columns.Delete(3);
      Columns.Delete(8);
      Columns.Delete(7);
      Columns[2].Title.Caption := '面值';
      Columns[5].Title.Caption := '增加金额';
      Columns[6].Title.Caption := '减少金额';
      Columns[5].FieldName := 'ZJJE';
      Columns[6].FieldName := 'JSJE';
      Columns[5].ReadOnly := true;
      Columns[6].ReadOnly := true;
    end
    else
    begin
      Columns[6].ReadOnly := true;
      Columns[7].ReadOnly := true;
    end; }

    InitData;
  SetState(dtBrowse);
end;

procedure Tfrm_JYPLJZCSH.Edit1Change(Sender: TObject);
begin
  if Edit1.Text <> '' then
    qryYZPPTXXB.Locate('ZH', Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;

procedure Tfrm_JYPLJZCSH.InitData;
begin
  qryYZPPTXXB.Open;
end;

procedure Tfrm_JYPLJZCSH.cmbKFHChange(Sender: TObject);
begin
  inherited;
  InitData;
end;

procedure Tfrm_JYPLJZCSH.SLFldChg(Sender: TField);
begin
  with qryYZPPTXXB do
    if Sender.FieldName = 'ZJSL' then
{      case l_typ of
        io_txp:
          FieldByName('ZJJE').AsFloat := FieldByName('ZJSL').AsFloat * FieldByName('JJ').AsFloat;
      else }
    begin
      FieldByName('JJZJJE').AsFloat := FieldByName('ZJSL').AsFloat * FieldByName('JJ').AsFloat;
      FieldByName('XJZJJE').AsFloat := FieldByName('ZJSL').AsFloat * FieldByName('XJ').AsFloat;
    end
      {end}
    else
{      case l_typ of
        io_txp:
          FieldByName('JSJE').AsFloat := FieldByName('JSSL').AsFloat * FieldByName('JJ').AsFloat;
      else }
    begin
      FieldByName('JJJSJE').AsFloat := FieldByName('JSSL').AsFloat * FieldByName('JJ').AsFloat;
      FieldByName('XJJSJE').AsFloat := FieldByName('JSSL').AsFloat * FieldByName('XJ').AsFloat;
    end
      {end}
end;

procedure Tfrm_JYPLJZCSH.qryYZPPTXXBAfterOpen(DataSet: TDataSet);
begin
  inherited;
  with DataSet do
  begin
    TNumericField(FieldByName('JJ')).OnGetText := nDisplay.GetText;
    TNumericField(FieldByName('JJ')).OnSetText := nDisplay.SetText;
    TNumericField(FieldByName('XJ')).OnGetText := nDisplay.GetText;
{    if l_typ = io_txp then
    begin
      TNumericField(FieldByName('ZJJE')).OnGetText := nDisplay.GetText;
      TNumericField(FieldByName('ZJJE')).OnSetText := nDisplay.SetText;
      TNumericField(FieldByName('JSJE')).OnGetText := nDisplay.GetText;
      TNumericField(FieldByName('JSJE')).OnSetText := nDisplay.SetText;
    end
    else
    begin }
    TNumericField(FieldByName('JJJSJE')).OnGetText := nDisplay.GetText;
    TNumericField(FieldByName('JJJSJE')).OnSetText := nDisplay.SetText;
    TNumericField(FieldByName('XJJSJE')).OnGetText := nDisplay.GetText;
    TNumericField(FieldByName('XJJSJE')).OnSetText := nDisplay.SetText;
    TNumericField(FieldByName('JJZJJE')).OnGetText := nDisplay.GetText;
    TNumericField(FieldByName('JJZJJE')).OnSetText := nDisplay.SetText;
    TNumericField(FieldByName('XJZJJE')).OnGetText := nDisplay.GetText;
    TNumericField(FieldByName('XJZJJE')).OnSetText := nDisplay.SetText;
    {end;}

    TNumericField(FieldByName('JSSL')).DisplayFormat := '#,##0';
    TNumericField(FieldByName('ZJSL')).DisplayFormat := '#,##0';
    TNumericField(FieldByName('JSSL')).OnChange := SLFldChg;
    TNumericField(FieldByName('ZJSL')).OnChange := SLFldChg;
  end;
end;

procedure Tfrm_JYPLJZCSH.qryYZPPTXXBUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
  inherited;
  case GetErrCode(DataSet, E, ErrMsg) of
    Err_NoMasterRec: errMsg := errMsg + '&_&' + Format(MST_NOREC, ['', '', '']);
    Err_HasDetailRec: errMsg := errMsg + '&_&' + Format(DTL_EXSTREC, ['']);
    Err_RecDouble: errMsg := errMsg + '&_&' + Format(DBL_REC, ['']);
    Err_NotNull: errMsg := errMsg + '&_&' + Format(NOTNULL, ['']);
  else
    errMsg := errMsg + '&_&' + OTHERERROR;
  end;
end;

end.

⌨️ 快捷键说明

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