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

📄 frmtransvouchp.~pas

📁 二次开发模块 一、条形码的批量生成
💻 ~PAS
字号:
unit FrmTransVouchP;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxExEdtr, DB, ADODB, Buttons, DBCtrls, StdCtrls, dxDBTLCl,
  dxGrClms, dxDBCtrl, dxDBGrid, dxTL, dxCntner, ExtCtrls, dfsSplitter,
  ComCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;

type
  TFrmTransVouch = class(TForm)
    Bevel1: TBevel;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    btnText: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    GroupBox2: TGroupBox;
    Date1: TDateTimePicker;
    btnCheck: TButton;
    btnXML: TButton;
    Panel3: TPanel;
    dfsSplitter1: TdfsSplitter;
    dxDBGrid1: TdxDBGrid;
    dxDBGrid1cc: TdxDBGridColumn;
    dxDBGrid1cType: TdxDBGridColumn;
    dxDBGrid1cWhName: TdxDBGridMaskColumn;
    dxDBGrid1cError: TdxDBGridColumn;
    dxDBGrid1cMaker: TdxDBGridMaskColumn;
    Panel4: TPanel;
    Label1: TLabel;
    btnOutHead: TSpeedButton;
    sbDelete: TSpeedButton;
    DBNavigator1: TDBNavigator;
    BtnSave: TBitBtn;
    Panel5: TPanel;
    Label2: TLabel;
    btnOutBody: TSpeedButton;
    SpeedButton1: TSpeedButton;
    Label3: TLabel;
    DBNavigator2: TDBNavigator;
    QryTran: TADOQuery;
    QryTranid: TAutoIncField;
    QryTrancMaker: TStringField;
    QryTranPCID: TStringField;
    QryTrancVouchType: TStringField;
    QryTrancOrderCode: TStringField;
    QryTranipurorderid: TIntegerField;
    QryTrancType: TStringField;
    QryTrancVenCode: TStringField;
    QryTrancVenAbbName: TStringField;
    QryTrancDept: TStringField;
    QryTrancDeptName: TStringField;
    QryTrancPerson: TStringField;
    QryTrancPersonName: TStringField;
    QryTrancWhCode: TStringField;
    QryTrancWhName: TStringField;
    QryTrancPTCode: TStringField;
    QryTrancRdCode: TStringField;
    QryTrancMemo: TStringField;
    QryTranipurarriveid: TIntegerField;
    QryTrancCusCode: TStringField;
    QryTrancPTName: TStringField;
    QryTrancc: TStringField;
    QryTrancError: TStringField;
    dsQryTran: TDataSource;
    QryTrans: TADOQuery;
    QryTranscc: TStringField;
    QryTransID: TAutoIncField;
    QryTransPCID: TStringField;
    QryTransiPurID: TIntegerField;
    QryTranscInvCode: TStringField;
    QryTranscInvName: TStringField;
    QryTranscInvStd: TStringField;
    QryTranscBarCode: TStringField;
    QryTransiQuantity: TFloatField;
    QryTransiUnitCost: TFloatField;
    QryTransiPrice: TBCDField;
    QryTransiPosID: TIntegerField;
    QryTranscError: TStringField;
    QryTransiArrsId: TIntegerField;
    QryTranscVouchType: TStringField;
    dsQryTrans: TDataSource;
    LsQryPop: TADOQuery;
    QryCheckPo: TADOQuery;
    QryCheckType: TADOQuery;
    SaveDialog1: TSaveDialog;
    dxDBGrid1cWhNameOut: TdxDBGridColumn;
    QryTrancCusAbbName: TStringField;
    QryTrancWhcodeOut: TStringField;
    QryTrancWhNameOut: TStringField;
    QryTrancSTCode: TStringField;
    QryTrancSTName: TStringField;
    QryTrancRdName: TStringField;
    QryTrancRdCodeOut: TStringField;
    QryTrancRdNameOut: TStringField;
    QryTranDLID: TIntegerField;
    dxDBGrid2: TdxDBGrid;
    dxDBGrid2cc: TdxDBGridColumn;
    dxDBGrid2cBarCode: TdxDBGridMaskColumn;
    dxDBGrid2cInvCode: TdxDBGridMaskColumn;
    dxDBGrid2cInvName: TdxDBGridMaskColumn;
    dxDBGrid2cFree1: TdxDBGridColumn;
    dxDBGrid2cFree2: TdxDBGridColumn;
    dxDBGrid2cInvStd: TdxDBGridMaskColumn;
    dxDBGrid2iQuantity: TdxDBGridMaskColumn;
    dxDBGrid2iUnitCost: TdxDBGridMaskColumn;
    dxDBGrid2iPrice: TdxDBGridCurrencyColumn;
    dxDBGrid2cError: TdxDBGridColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnTextClick(Sender: TObject);
    procedure FindList;
    procedure FormShow(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure sbDeleteClick(Sender: TObject);
    procedure btnOutHeadClick(Sender: TObject);
    procedure btnOutBodyClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure QryTranAfterPost(DataSet: TDataSet);
    procedure QryTranAfterScroll(DataSet: TDataSet);
    procedure QryTranBeforeEdit(DataSet: TDataSet);
    procedure QryTranBeforePost(DataSet: TDataSet);
    procedure QryTransAfterScroll(DataSet: TDataSet);
    procedure QryTransBeforeEdit(DataSet: TDataSet);
    procedure btnCheckClick(Sender: TObject);
    procedure UpdateType(cType: String);
    procedure RefData;
    procedure btnXMLClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmTransVouch: TFrmTransVouch;

implementation

uses DataDmP, FrmMainP, SUFunctionP;

{$R *.dfm}

procedure TFrmTransVouch.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DataDm.DeleteTabe('Szb_PurIn','12');
  DataDm.DeleteTabe('Szb_PurInList','12');
  Action:=caFree;
  FrmTransVouch:=nil;
end;

procedure TFrmTransVouch.btnTextClick(Sender: TObject);
begin
  if RadioButton1.Checked  then
     FrmMain.ReadTxtFile('Trans.TXT','0','12',QryTran);
  FindList;
  btnCheck.Enabled:=True;
  btnCheck.Click;
end;

procedure TFrmTransVouch.FindList;
Var ii:Integer;
begin
  QryTrans.Close;
  if QryTran.RecordCount=0 then Exit;
  ii:=QryTran.FieldByName('ID').AsInteger;
  QryTrans.SQL.Clear;
  QryTrans.SQL.Add('select * from Szb_PurInList');
  QryTrans.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
  QryTrans.SQL.Add(' And  (iPurID='+IntToStr(II)+')');
  QryTrans.Open;
  Label1.Caption:='记录:'+IntToStr(QryTran.RecNo)+'/'+IntToStr(QryTran.RecordCount);
  Label2.Caption:='记录:'+IntToStr(QryTrans.RecNo)+'/'+IntToStr(QryTrans.RecordCount);
end;

procedure TFrmTransVouch.FormShow(Sender: TObject);
begin
  CheckBox2.Checked:=False;
  date1.Date:=Date();
  SUFunction.SetGridColor(dxDBGrid1);
  SUFunction.SetGridColor(dxDBGrid2);
end;

procedure TFrmTransVouch.BtnSaveClick(Sender: TObject);
begin
  if (QryTran.State = dsEdit) or (QryTran.State = dsInsert) then
      QryTran.Post;
  btnCheck.Click;
end;

procedure TFrmTransVouch.sbDeleteClick(Sender: TObject);
begin
   CheckBox1.Checked:=False;
   FrmMain.DeleteRD(QryTran);
   FindList;
   CheckBox1.Checked:=True;
   FrmMain.SumNumber('12',Label3);
end;

procedure TFrmTransVouch.btnOutHeadClick(Sender: TObject);
begin
  SUFunction.DBGridSaveToFile(dxDBGrid1,'调拨单.xls');
end;

procedure TFrmTransVouch.btnOutBodyClick(Sender: TObject);
begin
  SUFunction.DBGridSaveToFile(dxDBGrid1,'调拨单表体.xls');
end;

procedure TFrmTransVouch.SpeedButton1Click(Sender: TObject);
Var ii,kk,nn: Integer;
begin
     ii:=QryTran.FieldByName('ID').AsInteger;
     kk:=QryTrans.FieldByName('ID').AsInteger;
     nn:=QryTrans.RecNo;
     FrmMain.DeleteRDS(ii,kk);
     FindList;
     QryTrans.MoveBy(nn-1);
     FrmMain.SumNumber('12',Label3);
end;

procedure TFrmTransVouch.QryTranAfterPost(DataSet: TDataSet);
Var ii:Integer;
begin
   ii:=QryTran.FieldByName('ID').AsInteger;
   FrmMain.UpdateNull(ii,'12');
end;

procedure TFrmTransVouch.QryTranAfterScroll(DataSet: TDataSet);
begin
  if CheckBox1.Checked then
     FindList;
end;

procedure TFrmTransVouch.QryTranBeforeEdit(DataSet: TDataSet);
begin
  if not CheckBox2.Checked then Abort;
end;

procedure TFrmTransVouch.QryTranBeforePost(DataSet: TDataSet);
Var II:Integer;
begin
   II:=Application.MessageBox('数据已修改,是否保存?','信息',MB_YESNOCANCEL+ MB_ICONINFORMATION);
   if II=IDNO	then
     begin
      QryTran.Cancel;
      Abort;
     end;
   if II=IDCANCEL	then
     begin
      Abort;
     end;
end;

procedure TFrmTransVouch.QryTransAfterScroll(DataSet: TDataSet);
begin
  Label2.Caption:='记录:'+IntToStr(QryTrans.RecNo)+'/'+IntToStr(QryTrans.RecordCount);
end;

procedure TFrmTransVouch.QryTransBeforeEdit(DataSet: TDataSet);
begin
  Abort;
end;

procedure TFrmTransVouch.btnCheckClick(Sender: TObject);
begin
  btnXML.Enabled:=False;
  FrmMain.CheckInv('12');
  FrmMain.UpdateInv('12');
  if RadioButton1.Checked then
    begin
      FrmMain.CheckType('无上游单据','12');
      UpdateType('无上游单据');
    end;
//  CheckDL;
  RefData;
  FrmMain.SumNumber('12',Label3);
  btnXML.Enabled:=True;
end;

procedure TFrmTransVouch.UpdateType(cType: String);
Var LsQry:TADOQuery;
begin
  LsQry:=TADOQuery.Create(Self);
  LsQry.Connection:=DataDm.AdoConUfsoft;
  LsQry.SQL.Add('update Szb_PurIn set Szb_PurIn.cWhcode=aa.cWhcode,Szb_PurIn.cWhName=aa.cWhName,Szb_PurIn.cRdCode=aa.cRdCode,Szb_PurIn.cRdName=aa.cRdName,');
  LsQry.SQL.Add('     Szb_PurIn.cWhcodeOut=aa.cWhcodeOut,Szb_PurIn.cWhNameOut=aa.cWhNameOut,Szb_PurIn.cRdCodeOut=aa.cRdCodeOut,Szb_PurIn.cRdNameOut=aa.cRdNameOut');
  LsQry.SQL.Add('FROM (SELECT *');
  LsQry.SQL.Add('        FROM szb_ini');
  LsQry.SQL.Add('        WHERE (Szb_Ini.cMaker = '''+DataDm.Maker+''')');
  LsQry.SQL.Add('         AND  (Szb_Ini.cVouch = ''12'')');
  LsQry.SQL.Add('         AND  (Szb_Ini.cType = '''+ctype+'''))');
  LsQry.SQL.Add('      AA INNER JOIN');
  LsQry.SQL.Add('      Szb_PurIn ON AA.cNO = Szb_PurIn.cType');
  LsQry.SQL.Add('Where  (Szb_PurIn.PCID='''+FrmMain.PCID+''')');
  LsQry.SQL.Add(' And   (Szb_PurIn.cVouchType=''12'')');
  LsQry.ExecSQL;
  LsQry.Destroy;

end;

procedure TFrmTransVouch.RefData;
Var ii:Integer;
begin
 II:=QryTran.RecNo;
 CheckBox1.Checked:=False;
 QryTran.Close;
 QryTran.Open;
 CheckBox1.Checked:=True;
 FindList;
end;

procedure TFrmTransVouch.btnXMLClick(Sender: TObject);
var xmlDoc:IXMLDocument; RootNode,FirstNode,aNode,bNode:IXMLNode;
    ii,vt_id:Integer;
    LsStr,cDate:String;
begin
  btnCheck.Click;
 cDate:=Trim(DateToStr(Date1.Date));
 DataDm.CheckLin(cDate);  
 LsStr:=SUFunction.ReadInformation('XML文件保存路径','cValue','');
 vt_id:=StrToIntDef(SUFunction.ReadInformation('调拨单ID','cValue',''),0);
 if vt_id=0 then
   begin
     Application.MessageBox(Pchar('调拨单ID不能为空,请设置!'),'信息',MB_OK+ MB_ICONINFORMATION);
     Abort;
   end;
 SaveDialog1.InitialDir:=LsStr;
 SaveDialog1.FileName:='调拨单_'+FrmMain.GetFileDate+'.xml';
 if not SaveDialog1.Execute then Abort;
 LsStr:=FrmMain.CheckFileName(SaveDialog1.FileName);
 RefData;
 cDate:=Trim(DateToStr(Date1.Date));
 xmlDoc:= TXMLDocument.Create(nil);
 xmlDoc.Active := True;
// xmlDoc.Version := '1.0';
 xmlDoc.Encoding :='GB2312';
 try
//加入根结点

   FirstNode:=xmlDoc.AddChild('vouchers');
   FirstNode.SetAttribute('vouchertype', '12');
   FirstNode.SetAttribute('withdraw', 'False');
   //加入子结点
   while not QryTran.Eof do
     begin
       RootNode:=FirstNode.AddChild('voucher');
       RootNode.SetAttribute('worked', 'False');
    //   bNode:=aNode;
       //设置接点主表属性

       aNode:=RootNode.AddChild('header');
       aNode.SetAttribute('brdflag'    ,'1');
       aNode.SetAttribute('cvouchtype' ,'12');
       aNode.SetAttribute('dtvdate'      ,cDate);

       aNode.SetAttribute('ciwhcode'    ,QryTran.FieldByName('cWhCode').AsString);
       aNode.SetAttribute('cowhcode'    ,QryTran.FieldByName('cWhCodeOut').AsString);
       aNode.SetAttribute('cwhname'     ,QryTran.FieldByName('cWhName').AsString);
       aNode.SetAttribute('cwhname_1'   ,QryTran.FieldByName('cWhNameOut').AsString);
       aNode.SetAttribute('cirdcode'    ,QryTran.FieldByName('crdcode').AsString);
       aNode.SetAttribute('crdname'     ,QryTran.FieldByName('crdname').AsString);
       aNode.SetAttribute('cordcode'    ,QryTran.FieldByName('crdcodeOut').AsString);
       aNode.SetAttribute('crdname_1'     ,QryTran.FieldByName('crdnameout').AsString);

//       aNode.SetAttribute('cdepcode'   ,QryTran.FieldByName('cdept').AsString);
       aNode.SetAttribute('cmaker'     ,QryTran.FieldByName('cMaker').AsString);
       aNode.SetAttribute('vt_id'      ,vt_id);
       //设置接点子表属性
       QryTrans.First;
       while not QryTrans.Eof do
         begin
           bNode:=RootNode.AddChild('body') ;
           bNode:=bNode.AddChild('item') ;
           bNode.SetAttribute('cinvcode', QryTrans.FieldByName('cinvcode').AsString);
           bNode.SetAttribute('cinvname', QryTrans.FieldByName('cinvName').AsString);
           bNode.SetAttribute('cinvstd' , QryTrans.FieldByName('cinvStd').AsString);
           bNode.SetAttribute('cbarcode', QryTrans.FieldByName('cBarcode').AsString);
           bNode.SetAttribute('itvquantity',QryTrans.FieldByName('iQuantity').asfloat);
           bNode.SetAttribute('cFree1',   QryTrans.FieldByName('cFree1').AsString);
           bNode.SetAttribute('cFree2',   QryTrans.FieldByName('cFree2').AsString);               
           QryTrans.Next;
         End;
       QryTran.Next;
    end;
   xmlDoc.SaveToFile(LsStr);
 finally
   xmlDoc := nil ;
 end;
 Application.MessageBox(Pchar('生成用友调拨单XML成功!'),'信息',MB_OK+ MB_ICONINFORMATION);


end;

end.

⌨️ 快捷键说明

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