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

📄 sy_fhdsc.pas

📁 省级集邮品管理ERP
💻 PAS
字号:

{*******************************************************}
{                                                       }
{                      发货单生成                       }
{                                                       }
{            中软金马公司版权所有。2002.12前            }
{                                                       }
{               编制:中软金马项目开发组                }
{                                                       }
{                                                       }
{*******************************************************}
(*
本模块在省级集邮票管理、省级市场购入票管理、省级集邮品管理、省级零枚票管理、
地市集邮票管理、地市集邮品管理、地市市场购入票管理  七个模块调用

修改记录
1。发货单生成时,按照排序码生成发货单 by jhshao 2003.05.07
2。将发货单单调整为常用打印纸大小——打印边界 by jhshao 2003.05.07
*)
unit SY_FHDSC;

interface

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

type
  TfrmSY_FHD = class(TFFormBase)
    ModiPanel1: TModiPanel;
    Panel1: TPanel;
    DBG_fhd: TDBGrid;
    Panel2: TPanel;
    DBG_ckpp: TDBGrid;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    DBEdit4: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    ComboBox1: TComboBox;
    Qry_TMP: TQuery;
    StoredProc1: TStoredProc;
    DS_fhd: TDataSource;
    Qry_FHD: TQuery;
    Qry_CKPP: TQuery;
    DS_ckpp: TDataSource;
    Panel3: TPanel;
    XttxTitle: TRxLabel;
    DWMC: TLabel;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    DBEdit3: TDBEdit;
    Label6: TLabel;
    SEd_Y: TSpinEdit;
    SEd_M: TSpinEdit;
    Label9: TLabel;
    Qry_tmp1: TQuery;
    Qry_CKPPFHDH: TStringField;
    Qry_CKPPPPDM: TStringField;
    Qry_CKPPKFDM: TStringField;
    Qry_CKPPKWH: TStringField;
    Qry_CKPPZH: TStringField;
    Qry_CKPPTMC: TStringField;
    Qry_CKPPSL: TFloatField;
    Qry_CKPPXJ: TFloatField;
    Qry_CKPPJJ: TFloatField;
    Qry_CKPPJSJ: TFloatField;
    Qry_CKPPZK: TFloatField;
    Qry_CKPPFXRQ: TDateTimeField;
    Qry_CKPPJSJE: TFloatField;
    Sqls_FKD: TSqlStrings;
    Sqls_CKPP: TSqlStrings;
    procedure ModiPanel1BtnClick(Index: TBtnVisible);
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure SEd_YChange(Sender: TObject);
    procedure Qry_FHDAfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
    io_Type: TIO_TYPE;
    FDtState: TDataState;
    procedure SetState(Value: TdataState);
    function Save: Boolean;
    function DoAPPCKD: boolean;
    procedure FHDPrint(ALXDY, AXZ, ATD: boolean);
  public
    { Public declarations }
    queding: boolean;
    yjdh: string;
    BYorXY: integer; //本月出库单(0)or下月(1)
    vg_s_ckjhd, vg_s_ckjhpp, vg_s_fhd, vg_s_ckpp, vg_s_prc: string;
  end;

function ExeSY_FHD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
var
  frmSY_FHD: TfrmSY_FHD;

implementation

{$R *.DFM}
uses datas, pub, Choose_FPD, SJ_FHDDY0, SJ_RICHEDIT, SJ_FHDDYDLG;

function ExeSY_FHD(io_typ: TIO_TYPE; ATag: Integer): Boolean;
  procedure DoSetTOTYP;
  begin
    with frmSY_FHD do
      case io_type of
        io_jyp:
          begin
            vg_s_ckjhd := 'tys_jyckjhdb';
            vg_s_ckjhpp := 'tys_jyckjhdppb';
            vg_s_fhd := 'tks_jyfhd';
            vg_s_ckpp := 'tks_jyckpp';
            vg_s_prc := 'J';
          end;
        io_txp:
          begin
            vg_s_ckjhd := 'TYS_TXPCKJHDB';
            vg_s_ckjhpp := 'TYS_TXCKJHDPPB';
            vg_s_fhd := 'tks_txfhd';
            vg_s_ckpp := 'tks_txckpp';
            vg_s_prc := 'T';
//            DBG_ckpp.Columns[3].Title.Caption := '面值';
//            DBG_ckpp.Columns[4].Title.Caption := '售价';
          end;
        io_yp:
          begin
            vg_s_ckjhd := 'TYS_YPCKJHDB';
            vg_s_ckjhpp := 'TYS_YPCKJHDPPB';
            vg_s_fhd := 'tks_ypfhd';
            vg_s_ckpp := 'tks_ypckpp';
            vg_s_prc := 'P';
          end;
        io_grp:
          begin
            vg_s_ckjhd := 'TYS_GRPCKJHDB';
            vg_s_ckjhpp := 'TYS_GRPCKJHDPPB';
            vg_s_fhd := 'tks_grpfhd';
            vg_s_ckpp := 'tks_grpckpp';
            vg_s_prc := 'G';
          end;
      end;
  end;
begin
  Application.CreateForm(TfrmSY_FHD, frmSY_FHD);
  with frmSY_FHD do
  try
    Tag := ATag;
    Caption := '邮资票品管理信息系统——' + pCaption[integer(io_typ)] + '业务';
    if CheckRight(frmSY_FHD, [Modipanel1]) then
    begin
      io_type := io_typ;
      DoSetTOTYP;
      Qry_FHD.SQL := Sqls_FKD.FSqlText[io_typ];
      Qry_CKPP.SQL := Sqls_CKPP.FSqlText[io_typ];
      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);
      result := ShowModal = MB_OK;
    end;
  finally
    Free;
  end;
end;

function TfrmSY_FHD.DoAPPCKD: boolean;
const
{发货单生成时,按照排序码生成发货单(SQL语句中增加关系单位表的关联和依据单位表的排序码进行排序) by jhshao 2003.05.07}
  c_s_ckpp = 'select distinct a.ckjhdh,a.dwdm,b.ckxz,c.pxm from %s a, %s b, TGS_GXDWSJB c where a.dwdm=c.dwdm and a.ckjhdh=b.ckjhdh(+) and a.CKJHDH=''%s'' order by c.pxm';
//  c_s_ckpp = 'select distinct a.ckjhdh,a.dwdm,b.ckxz from %s a, %s b where a.ckjhdh=b.ckjhdh(+) and a.CKJHDH=''%s''';
var
  v_sql: string;
  fhdh: string;
begin
  Result := false;
  data.DM.StartTransaction;
  try
    Open_Sql(Qry_tmp1, format(c_s_ckpp, [vg_s_ckjhpp, vg_s_ckjhd, yjdh]));
    while not Qry_tmp1.Eof do
    begin
      with StoredProc1 do
      begin
        ParamByName('BILLID').Asstring := 's_fhd';
        ParamByName('SORTCODE').Asstring := vg_s_prc;
        ParamByName('DEPARTMENT').Asstring := Qry_tmp1.fieldbyname('dwdm').asstring;
        ParamByName('CYEAR').AsInteger := BYorXY;
        ExecProc;
        fhdh := Params[0].asstring;
      end;
      v_sql := 'insert into ' + vg_s_fhd + '(FHDH,YJDH,CKXZ,FHDW,QXDW,KDRQ,ZTZT,JSZT,ZBR) values(''' + fhdh + ''',''' + yjdh + ''',''' + Qry_tmp1.fieldbyname('ckxz').asstring + ''',''' + VG_UnitID + ''',''' + Qry_tmp1.fieldbyname('dwdm').asstring + ''',trunc(sysdate),''0'',''0'',''' + VG_UserName + ''')';
      AssignSqlStr(qry_tmp, v_sql);
      qry_tmp.ExecSQL;
      case io_type of
        io_jyp, io_yp, io_grp:
          v_sql := 'insert into ' + vg_s_ckpp + '(FHDH,PPDM,JJ,KFDM,SL,YJ,XJ,JSJ,ZK) select ''' + fhdh + ''', PPDM, JJ, KFDM, sum(FPSL), YJ, XJ, JSJ, ZK from ' + vg_s_ckjhpp + ' where CKJHDH=''' + yjdh + ''' and DWDM = ''' + Qry_tmp1.fieldbyname('dwdm').asstring + ''' group by PPDM, KFDM, JJ,YJ,XJ,JSJ,ZK';
        io_txp:                                   
          v_sql := 'insert into ' + vg_s_ckpp + '(FHDH,TUDM,KFDM,SL,JJ,XJ,ZK,JSJ) select ''' + fhdh + ''', PPDM, KFDM, sum(FPSL), JJ, XJ, ZK, JSJ from ' + vg_s_ckjhpp + ' where CKJHDH=''' + yjdh + ''' and DWDM = ''' + Qry_tmp1.fieldbyname('dwdm').asstring + ''' group by PPDM, KFDM, JJ, XJ,JSJ,ZK';
      end;
      AssignSqlStr(qry_tmp, v_sql);
      qry_tmp.ExecSQL;
      Qry_tmp1.Next;
    end;
    v_sql := 'update ' + vg_s_ckjhd + ' set zt=''' + CG_YCL + ''' where ckjhdh=''' + yjdh + '''';
    Exec_Sql(Qry_TMP, v_sql);
    Result := true;
    data.DM.Commit;
  except
    data.DM.Rollback;
  end;
end;

procedure TfrmSY_FHD.SetState(Value: TdataState);
begin
  FDtState := Value;
  ModiPanel1.ChangeMode(FDtState = dtBrowse);
end;

function TfrmSY_FHD.Save: Boolean;
begin
end;

procedure TfrmSY_FHD.ModiPanel1BtnClick(Index: TBtnVisible); //add、print
var
  vb_LXDY, vb_XZ, vb_TD: boolean; //连续打印、小纸、套打
begin
  inherited;
  case index of
    bnAdd:
      begin
        queding := false;
        ExeSY_FPD(io_type);
        if queding then
          if CHQMsgBox('确定要生成发货单吗', 2) = mrYes then
          begin
            if DoAPPCKD then
              if SEd_M.Value = VG_Month then
              begin
                SEd_YChange(nil);
                ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(yjdh);
                ComboBox1Click(nil);
              end;
          end;
      end;
    bnDelete:
      if Qry_FHD.IsEmpty then
      begin
        CHQMsgBox('没有可删除的数据!');
        exit;
      end;
    bnEdit:
      ;
    bnSave:
      ;
    bnCancel:
      ;
    bnPrint: {print}
      begin
        if Qry_fhd.IsEmpty then
          exit;
        queding := false;
        SelFHDDYGS(vb_LXDY, vb_XZ, vb_TD);
        if not queding then
          exit;
        if vb_LXDY then
        begin
          Qry_FHD.First;
          while not Qry_FHD.Eof do
          begin
            FHDPrint(vb_LXDY, vb_XZ, vb_TD);
            Qry_FHD.Next;
          end;
        end
        else
          FHDPrint(vb_LXDY, vb_XZ, vb_TD);    
      end;
    bnClose:
      Close;
  end;
end;

procedure TfrmSY_FHD.FHDPrint(ALXDY, AXZ, ATD: boolean);
var
  jycx: string;
begin
  FrmK_JYFHDDY0 := TFrmK_JYFHDDY0.Create(Application);
  Application.CreateForm(TFrm_RichEdit, Frm_RichEdit);
  with FrmK_JYFHDDY0, Frm_richEdit do
  try
    QRLabel1.caption := pCaption[integer(io_type)] + ' 发货通知单';
    QRLabel25.Caption := Qry_fhd.fieldbyName('qxdw').AsString;
    QRLabel14.Caption := '制表人:' + DBEdit4.Text;
    case IO_type of
      io_yp: jycx := 'select a.zh,a.mc tmc,''套''as dw,b.xj/100 xj,b.sl,b.xj*b.sl/100 zjje,decode(b.zk,0,b.jsj/100,b.zk) zk, b.JSJ/100 JSJ, b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq from tb_jyptxxb a ,tks_ypckpp b where a.tdm(+)=b.ppdm and b.fhdh=''' + DBEdit1.text + '''';
      io_jyp: jycx := 'select a.zh,a.tmc,''套''as dw,b.xj/100 xj,b.sl,b.xj*b.sl/100 zjje,decode(b.zk,0,b.jsj/100,b.zk) zk,b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq,b.fhdh from tb_yzpptxxb a ,tks_jyckpp b where a.tdm(+)=b.ppdm and b.fhdh=''' + DBEdit1.text + '''';
      io_txp: jycx := 'select a.zh,a.tmc,''枚''as dw,b.xj/100 xj,b.sl,b.xj*b.sl/100 zjje,decode(b.zk,0,b.jsj/100,b.zk) zk,b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq from tb_yzppxxb a ,tks_txckpp b where a.tdm=b.tudm and b.fhdh=''' + DBEdit1.text + '''';
      io_grp: jycx := 'select a.zh,(a.tmc) tmc,b.dw,b.xj/100 xj,b.sl, b.xj*b.sl/100 zjje, decode(b.zk,0,b.jsj/100,b.zk) zk, b.SL*(b.xj*nvl(b.zk/100, 0)+nvl(b.jsj,0))/100 jsje,a.fxrq from tb_yzppxxb a, tks_grpckpp b where a.tdm=b.ppdm and b.fhdh=''' + DBEdit1.text + '''';
    end;

    Datacount := 0;
    Qry_ckdayin.close;
    Qry_ckdayin.sql.clear;
    Qry_ckdayin.sql.add(jycx);
    Qry_ckdayin.open;
    DataCount := Qry_ckdayin.RecordCount;

    sumzj := 0;
    sumjsj := 0;
    DetailLines := 0;
    QRLabel8.Caption := DBEdit1.text;
    QRLabel11.Caption := FormatDateTime('yyyy"年"mm"月"dd"日"', StrToDate(dbedit2.Text));
    if ATD then
      Tao_Print_Flag := True
    else
      Tao_Print_Flag := False;

    if AXZ then
    begin
{      Page.LeftMargin := 10;
      Page.TopMargin := 20;
      Page.RightMargin := 9;
      Page.Length := 127;
      Page.Width := 210;
      Page.BottomMargin := 10;
      SmallFlag := True}
      Page.LeftMargin := 28;
      Page.TopMargin := 19;
      Page.RightMargin := 28;
      Page.Length := 139.7;
      Page.Width := 241.3;
      Page.BottomMargin := 11;
      SmallFlag := True;
      PageFooterBand1.Height := 127;
    end
    else
    begin
{将发货单单调整为常用打印纸大小——打印边界 by jhshao 2003.05.07
      Page.LeftMargin := 10;
      Page.TopMargin := 19;
      Page.RightMargin := 9;
      Page.Length := 305;
      Page.Width := 210;
      Page.BottomMargin := 10;
      SmallFlag := False;}
      Page.LeftMargin := 28;
      Page.TopMargin := 19;
      Page.RightMargin := 28;
      Page.Length := 279.3;
      Page.Width := 241.3;
      Page.BottomMargin := 10;
      SmallFlag := False;
      PageFooterBand1.Height := 121;
    end;

    Prepare;
    try
      TotalPageCount := QRPrinter.PageCount;
    finally
      QRPrinter.Free;
    end;
    QRPrinter := nil;

    if ALXDY then
      FrmK_JYFHDDY0.Print
    else
      FrmK_JYFHDDY0.preview;
      
  finally
    FrmK_JYFHDDY0.Destroy;
    Frm_RichEdit.Destroy;
  end;
end;

procedure TfrmSY_FHD.FormCreate(Sender: TObject);
begin
  inherited;
  DWMC.Caption := '使用单位:' + VG_UnitName;
  SetState(dtBrowse);
end;

procedure TfrmSY_FHD.ComboBox1Click(Sender: TObject);
var
  fhdh: string;
begin
  inherited;
  with Qry_fhd do
  begin
    Close;
    Params[0].AsString := combobox1.Text;
    Open;
  end;
  if Qry_fhd.IsEmpty then
    Qry_fhdAfterScroll(nil);
end;

procedure TfrmSY_FHD.SEd_YChange(Sender: TObject);
var
  yjdh: string;
  function Get2Mon(const AMon: string): string;
  begin
    result := AMon;
    if Length(result) = 1 then
      result := '0' + result;
  end;
begin
  inherited;
  yjdh := 'select distinct YJDH from ' + vg_s_fhd + ' where to_char(KDRQ,''YYYYMM'')=''' + SEd_Y.Text + Get2Mon(SEd_M.Text) + '''';
  InitList(combobox1.items, yjdh);
  combobox1.ItemIndex := 0;
  ComboBox1Click(self);

end;

procedure TfrmSY_FHD.Qry_FHDAfterScroll(DataSet: TDataSet);
var
  ckpp: string;
begin
  inherited;
  if Qry_fhd.IsEmpty then
    ckpp := 'zrjm'
  else
    ckpp := Qry_fhd.fieldbyname('fhdh').asstring;
  with Qry_ckpp do
  begin
    Close;
    Params[0].AsString := ckpp;
    Open;
  end;
end;

end.

⌨️ 快捷键说明

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