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

📄 frmotherinp.~pas

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

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
  TFrmOtherIn = 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;
    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;
    QryOtherIN: TADOQuery;
    QryOtherINid: TAutoIncField;
    QryOtherINcMaker: TStringField;
    QryOtherINPCID: TStringField;
    QryOtherINcVouchType: TStringField;
    QryOtherINcOrderCode: TStringField;
    QryOtherINipurorderid: TIntegerField;
    QryOtherINcType: TStringField;
    QryOtherINcVenCode: TStringField;
    QryOtherINcVenAbbName: TStringField;
    QryOtherINcDept: TStringField;
    QryOtherINcDeptName: TStringField;
    QryOtherINcPerson: TStringField;
    QryOtherINcPersonName: TStringField;
    QryOtherINcWhCode: TStringField;
    QryOtherINcWhName: TStringField;
    QryOtherINcPTCode: TStringField;
    QryOtherINcRdCode: TStringField;
    QryOtherINcMemo: TStringField;
    QryOtherINipurarriveid: TIntegerField;
    QryOtherINcCusCode: TStringField;
    QryOtherINcCusAbbName: TStringField;
    QryOtherINcPTName: TStringField;
    QryOtherINcSTCode: TStringField;
    QryOtherINcSTName: TStringField;
    QryOtherINDLID: TIntegerField;
    QryOtherINcc: TStringField;
    QryOtherINcError: TStringField;
    QryOtherINcRdName: TStringField;
    dsQryOtherIN: TDataSource;
    QryOtherINList: TADOQuery;
    QryOtherINListcc: TStringField;
    QryOtherINListID: TAutoIncField;
    QryOtherINListPCID: TStringField;
    QryOtherINListiPurID: TIntegerField;
    QryOtherINListcInvCode: TStringField;
    QryOtherINListcInvName: TStringField;
    QryOtherINListcInvStd: TStringField;
    QryOtherINListcBarCode: TStringField;
    QryOtherINListiQuantity: TFloatField;
    QryOtherINListiUnitCost: TFloatField;
    QryOtherINListiPrice: TBCDField;
    QryOtherINListiPosID: TIntegerField;
    QryOtherINListcError: TStringField;
    QryOtherINListiArrsId: TIntegerField;
    QryOtherINListcVouchType: TStringField;
    QryOtherINListiDLsID: TIntegerField;
    dsQryOtherINList: 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 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 QryOtherINListBeforeEdit(DataSet: TDataSet);
    procedure QryOtherINListAfterScroll(DataSet: TDataSet);
    procedure QryOtherINAfterScroll(DataSet: TDataSet);
    procedure QryOtherINBeforeEdit(DataSet: TDataSet);
    procedure QryOtherINBeforePost(DataSet: TDataSet);
    procedure QryOtherINAfterPost(DataSet: TDataSet);
    procedure RefData;
    procedure btnCheckClick(Sender: TObject);
    Procedure UpdateType(cType:String);
    procedure btnXMLClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmOtherIn: TFrmOtherIn;

implementation

uses DataDmP, FrmMainP, SUFunctionP;

{$R *.dfm}

procedure TFrmOtherIn.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DataDm.DeleteTabe('Szb_PurIn','08');
  DataDm.DeleteTabe('Szb_PurInList','08');
  Action:=caFree;
  FrmOtherIn:=nil;
end;

procedure TFrmOtherIn.btnTextClick(Sender: TObject);
begin
  if RadioButton1.Checked  then
     FrmMain.ReadTxtFile('OI.TXT','0','08',QryOtherIN);

  FindList;
  btnCheck.Enabled:=True;
  btnCheck.Click;
end;

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

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

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

procedure TFrmOtherIn.sbDeleteClick(Sender: TObject);
begin
   CheckBox1.Checked:=False;
   FrmMain.DeleteRD(QryOtherIN);
   FindList;
   CheckBox1.Checked:=True;
   FrmMain.SumNumber('08',Label3);
end;

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

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

procedure TFrmOtherIn.SpeedButton1Click(Sender: TObject);

Var ii,kk,nn: Integer;
begin
     ii:=QryOtherIN.FieldByName('ID').AsInteger;
     kk:=QryOtherINList.FieldByName('ID').AsInteger;
     nn:=QryOtherINList.RecNo;
     FrmMain.DeleteRDS(ii,kk);
     FindList;
     QryOtherINList.MoveBy(nn-1);
     FrmMain.SumNumber('08',Label3);
end;

procedure TFrmOtherIn.QryOtherINListBeforeEdit(DataSet: TDataSet);
begin
  Abort;
end;

procedure TFrmOtherIn.QryOtherINListAfterScroll(DataSet: TDataSet);
begin
  Label2.Caption:='记录:'+IntToStr(QryOtherINList.RecNo)+'/'+IntToStr(QryOtherINList.RecordCount);
end;

procedure TFrmOtherIn.QryOtherINAfterScroll(DataSet: TDataSet);
begin
  if CheckBox1.Checked then
     FindList;

end;

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

procedure TFrmOtherIn.QryOtherINBeforePost(DataSet: TDataSet);

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

procedure TFrmOtherIn.QryOtherINAfterPost(DataSet: TDataSet);
Var ii:Integer;
begin
   ii:=QryOtherIN.FieldByName('ID').AsInteger;
   FrmMain.UpdateNull(ii,'08');
end;

procedure TFrmOtherIn.RefData;
Var ii:Integer;
begin
 II:=QryOtherIN.RecNo;
 CheckBox1.Checked:=False;
 QryOtherIN.Close;
 QryOtherIN.Open;
 CheckBox1.Checked:=True;
 FindList;

end;

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

procedure TFrmOtherIn.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('FROM (SELECT *');
  LsQry.SQL.Add('        FROM szb_ini');
  LsQry.SQL.Add('        WHERE (Szb_Ini.cMaker = '''+DataDm.Maker+''')');
  LsQry.SQL.Add('         AND  (Szb_Ini.cVouch = ''08'')');
  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=''08'')');
  LsQry.ExecSQL;
  LsQry.Destroy;
end;

procedure TFrmOtherIn.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', '8');
   FirstNode.SetAttribute('withdraw', 'False');
   //加入子结点
   while not QryOtherIN.Eof do
     begin
       RootNode:=FirstNode.AddChild('voucher');
       RootNode.SetAttribute('worked', 'False');
    //   bNode:=aNode;
       //设置接点主表属性

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