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

📄 frmotheroutp.~pas

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

interface

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

type
  TFrmOtherOut = class(TForm)
    Bevel1: TBevel;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    btnText: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    GroupBox2: TGroupBox;
    Date1: TDateTimePicker;
    btnCheck: TButton;
    btnXML: TButton;
    Panel3: TPanel;
    dfsSplitter1: TdfsSplitter;
    dxDBGrid1: TdxDBGrid;
    dxDBGrid1cc: TdxDBGridColumn;
    dxDBGrid1cOrderCode: TdxDBGridMaskColumn;
    dxDBGrid1cType: TdxDBGridColumn;
    dxDBGrid1cDeptName: TdxDBGridMaskColumn;
    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;
    QryOtherOut: TADOQuery;
    QryOtherOutid: TAutoIncField;
    QryOtherOutcMaker: TStringField;
    QryOtherOutPCID: TStringField;
    QryOtherOutcVouchType: TStringField;
    QryOtherOutcOrderCode: TStringField;
    QryOtherOutipurorderid: TIntegerField;
    QryOtherOutcType: TStringField;
    QryOtherOutcVenCode: TStringField;
    QryOtherOutcVenAbbName: TStringField;
    QryOtherOutcDept: TStringField;
    QryOtherOutcDeptName: TStringField;
    QryOtherOutcPerson: TStringField;
    QryOtherOutcPersonName: TStringField;
    QryOtherOutcWhCode: TStringField;
    QryOtherOutcWhName: TStringField;
    QryOtherOutcPTCode: TStringField;
    QryOtherOutcRdCode: TStringField;
    QryOtherOutcMemo: TStringField;
    QryOtherOutipurarriveid: TIntegerField;
    QryOtherOutcCusCode: TStringField;
    QryOtherOutcCusAbbName: TStringField;
    QryOtherOutcPTName: TStringField;
    QryOtherOutcSTCode: TStringField;
    QryOtherOutcSTName: TStringField;
    QryOtherOutDLID: TIntegerField;
    QryOtherOutcc: TStringField;
    QryOtherOutcError: TStringField;
    QryOtherOutcRdName: TStringField;
    dsQryOtherOut: TDataSource;
    QryOtherOutList: TADOQuery;
    QryOtherOutListcc: TStringField;
    QryOtherOutListID: TAutoIncField;
    QryOtherOutListPCID: TStringField;
    QryOtherOutListiPurID: TIntegerField;
    QryOtherOutListcInvCode: TStringField;
    QryOtherOutListcInvName: TStringField;
    QryOtherOutListcInvStd: TStringField;
    QryOtherOutListcBarCode: TStringField;
    QryOtherOutListiQuantity: TFloatField;
    QryOtherOutListiUnitCost: TFloatField;
    QryOtherOutListiPrice: TBCDField;
    QryOtherOutListiPosID: TIntegerField;
    QryOtherOutListcError: TStringField;
    QryOtherOutListiArrsId: TIntegerField;
    QryOtherOutListcVouchType: TStringField;
    QryOtherOutListiDLsID: TIntegerField;
    dsQryOtherOutList: TDataSource;
    LsQryPop: TADOQuery;
    QryCheckPo: TADOQuery;
    QryCheckType: TADOQuery;
    SaveDialog1: TSaveDialog;
    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 FormShow(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure sbDeleteClick(Sender: TObject);
    procedure FindList;
    procedure btnOutHeadClick(Sender: TObject);
    procedure btnOutBodyClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure QryOtherOutAfterPost(DataSet: TDataSet);
    procedure QryOtherOutAfterScroll(DataSet: TDataSet);
    procedure QryOtherOutBeforeEdit(DataSet: TDataSet);
    procedure QryOtherOutBeforePost(DataSet: TDataSet);
    procedure QryOtherOutListAfterScroll(DataSet: TDataSet);
    procedure QryOtherOutListBeforeEdit(DataSet: TDataSet);
    procedure btnTextClick(Sender: TObject);
    procedure btnCheckClick(Sender: TObject);
    procedure UpdateType(cType: String);
    procedure RefData;
    procedure btnXMLClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmOtherOut: TFrmOtherOut;

implementation

uses DataDmP, SUFunctionP, FrmMainP;

{$R *.dfm}

procedure TFrmOtherOut.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DataDm.DeleteTabe('Szb_PurIn','09');
  DataDm.DeleteTabe('Szb_PurInList','09');
  Action:=caFree;
  FrmOtherOut:=nil;
end;

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

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

procedure TFrmOtherOut.sbDeleteClick(Sender: TObject);
begin
   CheckBox1.Checked:=False;
   FrmMain.DeleteRD(QryOtherOut);
   FindList;
   CheckBox1.Checked:=True;
   FrmMain.SumNumber('09',Label3);
end;

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

procedure TFrmOtherOut.btnOutHeadClick(Sender: TObject);
begin
  SUFunction.DBGridSaveToFile(dxDBGrid1,'其它出库单.xls');
end;

procedure TFrmOtherOut.btnOutBodyClick(Sender: TObject);
begin
  SUFunction.DBGridSaveToFile(dxDBGrid2,'其它出库单表体.xls');
end;

procedure TFrmOtherOut.SpeedButton1Click(Sender: TObject);
Var ii,kk,nn: Integer;
begin
     ii:=QryOtherOut.FieldByName('ID').AsInteger;
     kk:=QryOtherOutList.FieldByName('ID').AsInteger;
     nn:=QryOtherOutList.RecNo;
     FrmMain.DeleteRDS(ii,kk);
     FindList;
     QryOtherOutList.MoveBy(nn-1);
     FrmMain.SumNumber('09',Label3);
end;

procedure TFrmOtherOut.QryOtherOutAfterPost(DataSet: TDataSet);
Var ii:Integer;
begin
   ii:=QryOtherOut.FieldByName('ID').AsInteger;
   FrmMain.UpdateNull(ii,'09');
end;

procedure TFrmOtherOut.QryOtherOutAfterScroll(DataSet: TDataSet);
begin
  if CheckBox1.Checked then
     FindList;
end;

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

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

procedure TFrmOtherOut.QryOtherOutListAfterScroll(DataSet: TDataSet);
begin
  Label2.Caption:='记录:'+IntToStr(QryOtherOutList.RecNo)+'/'+IntToStr(QryOtherOutList.RecordCount);
end;

procedure TFrmOtherOut.QryOtherOutListBeforeEdit(DataSet: TDataSet);
begin
  Abort;
end;

procedure TFrmOtherOut.btnTextClick(Sender: TObject);
begin
  if RadioButton1.Checked  then
     FrmMain.ReadTxtFile('OO.TXT','0','09',QryOtherOut);
  FindList;
  btnCheck.Enabled:=True;
  btnCheck.Click;     
end;

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

procedure TFrmOtherOut.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.cRdCodeOut,Szb_PurIn.cRdName=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 = ''09'')');
  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=''09'')');
  LsQry.ExecSQL;
  LsQry.Destroy;

end;

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

procedure TFrmOtherOut.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);  
{ if RadioButton1.Checked then
    FrmMain.GetNullNumber('采购订单','01');
 if RadioButton2.Checked then
    FrmMain.GetNullNumber('采购到货单','01');
}
 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', '9');
   FirstNode.SetAttribute('withdraw', 'False');
   //加入子结点
   while not QryOtherOut.Eof do
     begin
       RootNode:=FirstNode.AddChild('voucher');
       RootNode.SetAttribute('worked', 'False');
    //   bNode:=aNode;
       //设置接点主表属性

       aNode:=RootNode.AddChild('header');
       aNode.SetAttribute('brdflag'    ,'1');
       aNode.SetAttribute('cvouchtype' ,'09');
       aNode.SetAttribute('cbustype'   ,'其他出库');
       aNode.SetAttribute('ddate'      ,cDate);
       aNode.SetAttribute('csource'    ,'库存');
       aNode.SetAttribute('cwhcode'    ,QryOtherOut.FieldByName('cWhCode').AsString);
       aNode.SetAttribute('cwhname'    ,QryOtherOut.FieldByName('cWhName').AsString);
//       aNode.SetAttribute('crdcode'    ,QryOtherOut.FieldByName('crdcode').AsString);
//       aNode.SetAttribute('crdname'    ,QryOtherOut.FieldByName('crdname').AsString);
       aNode.SetAttribute('cdepcode'   ,QryOtherOut.FieldByName('cdept').AsString);
       aNode.SetAttribute('cmaker'     ,QryOtherOut.FieldByName('cMaker').AsString);
       aNode.SetAttribute('vt_id'      ,vt_id);
       //设置接点子表属性
       QryOtherOutList.First;
       while not QryOtherOutList.Eof do
         begin
           bNode:=RootNode.AddChild('body') ;
           bNode:=bNode.AddChild('item') ;
           bNode.SetAttribute('cinvcode', QryOtherOutList.FieldByName('cinvcode').AsString);
           bNode.SetAttribute('cinvname', QryOtherOutList.FieldByName('cinvName').AsString);
           bNode.SetAttribute('cinvstd' , QryOtherOutList.FieldByName('cinvStd').AsString);
           bNode.SetAttribute('cbarcode', QryOtherOutList.FieldByName('cBarcode').AsString);
           bNode.SetAttribute('iquantity',QryOtherOutList.FieldByName('iQuantity').asfloat);
           bNode.SetAttribute('cFree1',   QryOtherOutList.FieldByName('cFree1').AsString);
           bNode.SetAttribute('cFree2',   QryOtherOutList.FieldByName('cFree2').AsString);                   
           QryOtherOutList.Next;
         End;
       QryOtherOut.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 + -