📄 frmprocp.~pas
字号:
unit FrmProcP;
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
TFrmProc = 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;
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;
QryProc: TADOQuery;
QryProcid: TAutoIncField;
QryProccMaker: TStringField;
QryProcPCID: TStringField;
QryProccVouchType: TStringField;
QryProccOrderCode: TStringField;
QryProcipurorderid: TIntegerField;
QryProccType: TStringField;
QryProccVenCode: TStringField;
QryProccVenAbbName: TStringField;
QryProccDept: TStringField;
QryProccDeptName: TStringField;
QryProccPerson: TStringField;
QryProccPersonName: TStringField;
QryProccWhCode: TStringField;
QryProccWhName: TStringField;
QryProccPTCode: TStringField;
QryProccRdCode: TStringField;
QryProccMemo: TStringField;
QryProcipurarriveid: TIntegerField;
QryProccCusCode: TStringField;
QryProccCusAbbName: TStringField;
QryProccPTName: TStringField;
QryProccSTCode: TStringField;
QryProccSTName: TStringField;
QryProcDLID: TIntegerField;
QryProccc: TStringField;
QryProccError: TStringField;
dsQryProc: TDataSource;
QryProcList: TADOQuery;
QryProcListcc: TStringField;
QryProcListID: TAutoIncField;
QryProcListPCID: TStringField;
QryProcListiPurID: TIntegerField;
QryProcListcInvCode: TStringField;
QryProcListcInvName: TStringField;
QryProcListcInvStd: TStringField;
QryProcListcBarCode: TStringField;
QryProcListiQuantity: TFloatField;
QryProcListiUnitCost: TFloatField;
QryProcListiPrice: TBCDField;
QryProcListiPosID: TIntegerField;
QryProcListcError: TStringField;
QryProcListiArrsId: TIntegerField;
QryProcListcVouchType: TStringField;
QryProcListiDLsID: TIntegerField;
dsQryProcList: TDataSource;
LsQryPop: TADOQuery;
QryCheckPo: TADOQuery;
QryCheckType: TADOQuery;
SaveDialog1: TSaveDialog;
dxDBGrid1cType: TdxDBGridColumn;
QryProccRdName: TStringField;
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 btnOutHeadClick(Sender: TObject);
procedure btnOutBodyClick(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
procedure FindList;
procedure sbDeleteClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure btnTextClick(Sender: TObject);
procedure btnCheckClick(Sender: TObject);
procedure RefData;
Procedure UpdateType(cType:String);
procedure btnXMLClick(Sender: TObject);
procedure QryProcListBeforeEdit(DataSet: TDataSet);
procedure QryProcListAfterScroll(DataSet: TDataSet);
procedure QryProcAfterScroll(DataSet: TDataSet);
procedure QryProcBeforeEdit(DataSet: TDataSet);
procedure QryProcBeforePost(DataSet: TDataSet);
procedure QryProcAfterPost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmProc: TFrmProc;
implementation
uses DataDmP, SUFunctionP, FrmMainP;
{$R *.dfm}
procedure TFrmProc.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataDm.DeleteTabe('Szb_PurIn','10');
DataDm.DeleteTabe('Szb_PurInList','10');
Action:=caFree;
FrmProc:=nil;
end;
procedure TFrmProc.FormShow(Sender: TObject);
begin
CheckBox2.Checked:=False;
date1.Date:=Date();
SUFunction.SetGridColor(dxDBGrid1);
SUFunction.SetGridColor(dxDBGrid2);
end;
procedure TFrmProc.btnOutHeadClick(Sender: TObject);
begin
SUFunction.DBGridSaveToFile(dxDBGrid1,'产成品入库单.xls');
end;
procedure TFrmProc.btnOutBodyClick(Sender: TObject);
begin
SUFunction.DBGridSaveToFile(dxDBGrid2,'产成品入库单表体.xls');
end;
procedure TFrmProc.BtnSaveClick(Sender: TObject);
begin
if (QryProc.State = dsEdit) or (QryProc.State = dsInsert) then
QryProc.Post;
btnCheck.Click;
end;
procedure TFrmProc.FindList;
Var ii:Integer;
begin
QryProcList.Close;
if QryProc.RecordCount=0 then Exit;
ii:=QryProc.FieldByName('ID').AsInteger;
QryProcList.SQL.Clear;
QryProcList.SQL.Add('select * from Szb_PurInList');
QryProcList.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
QryProcList.SQL.Add(' And (iPurID='+IntToStr(II)+')');
QryProcList.Open;
Label1.Caption:='记录:'+IntToStr(QryProc.RecNo)+'/'+IntToStr(QryProc.RecordCount);
Label2.Caption:='记录:'+IntToStr(QryProcList.RecNo)+'/'+IntToStr(QryProcList.RecordCount);
end;
procedure TFrmProc.sbDeleteClick(Sender: TObject);
begin
CheckBox1.Checked:=False;
FrmMain.DeleteRD(QryProc);
FindList;
CheckBox1.Checked:=True;
FrmMain.SumNumber('10',Label3);
end;
procedure TFrmProc.SpeedButton1Click(Sender: TObject);
Var ii,kk,nn: Integer;
begin
ii:=Qryproc.FieldByName('ID').AsInteger;
kk:=QryprocList.FieldByName('ID').AsInteger;
nn:=QryprocList.RecNo;
FrmMain.DeleteRDS(ii,kk);
FindList;
QryprocList.MoveBy(nn-1);
FrmMain.SumNumber('10',Label3);
end;
procedure TFrmProc.btnTextClick(Sender: TObject);
begin
if RadioButton1.Checked then
FrmMain.ReadTxtFile('POI.TXT','0','10',QryProc);
if RadioButton2.Checked then
FrmMain.ReadTxtFile('POI.TXT','1','10',QryProc);
FindList;
btnCheck.Enabled:=True;
btnCheck.Click;
end;
procedure TFrmProc.btnCheckClick(Sender: TObject);
begin
btnXML.Enabled:=False;
FrmMain.CheckInv('10');
FrmMain.UpdateInv('10');
if RadioButton1.Checked then
begin
FrmMain.CheckType('无上游单据','10');
UpdateType('无上游单据');
end;
// CheckDL;
RefData;
FrmMain.SumNumber('10',Label3);
btnXML.Enabled:=True;
end;
procedure TFrmProc.RefData;
Var ii:Integer;
begin
II:=QryProc.RecNo;
CheckBox1.Checked:=False;
QryProc.Close;
QryProc.Open;
CheckBox1.Checked:=True;
FindList;
end;
procedure TFrmProc.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 = ''10'')');
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=''10'')');
LsQry.ExecSQL;
LsQry.Destroy;
end;
procedure TFrmProc.btnXMLClick(Sender: TObject);
var xmlDoc:IXMLDocument; RootNode,FirstNode,aNode,bNode:IXMLNode;
ii,vt_id:Integer;
LsStr,cDate:String;
begin
btnCheck.Click;
{ if RadioButton1.Checked then
FrmMain.GetNullNumber('采购订单','01');
if RadioButton2.Checked then
FrmMain.GetNullNumber('采购到货单','01');
}
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;
if RadioButton1.Checked then
SaveDialog1.FileName:='成产品入库单(无上游单据)_'+FrmMain.GetFileDate+'.xml';
if RadioButton2.Checked then
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', '10');
FirstNode.SetAttribute('withdraw', 'False');
//加入子结点
while not QryProc.Eof do
begin
RootNode:=FirstNode.AddChild('voucher');
RootNode.SetAttribute('worked', 'False');
// bNode:=aNode;
//设置接点主表属性
aNode:=RootNode.AddChild('header');
aNode.SetAttribute('brdflag' ,'1');
aNode.SetAttribute('cvouchtype' ,'10');
aNode.SetAttribute('cbustype' ,'成品入库');
aNode.SetAttribute('ddate' ,cDate);
if RadioButton1.Checked then
begin
aNode.SetAttribute('csource' ,'库存');
// aNode.SetAttribute('cordercode' ,QryIn.FieldByName('cOrderCode').AsString);
// aNode.SetAttribute('ipurorderid',QryIn.FieldByName('ipurorderid').AsInteger);
end;
{ if RadioButton2.Checked then
begin
aNode.SetAttribute('csource' ,'采购到货单');
aNode.SetAttribute('cARVCode' ,QryIn.FieldByName('cOrderCode').AsString);
aNode.SetAttribute('ipurarriveid',QryIn.FieldByName('ipurarriveid').AsInteger);
end;
}
aNode.SetAttribute('cwhcode' ,QryProc.FieldByName('cWhCode').AsString);
aNode.SetAttribute('cwhname' ,QryProc.FieldByName('cWhName').AsString);
aNode.SetAttribute('crdcode' ,QryProc.FieldByName('crdcode').AsString);
aNode.SetAttribute('crdname' ,QryProc.FieldByName('crdname').AsString);
aNode.SetAttribute('cdepcode' ,QryProc.FieldByName('cdept').AsString);
aNode.SetAttribute('cmaker' ,QryProc.FieldByName('cMaker').AsString);
aNode.SetAttribute('vt_id' ,vt_id);
//设置接点子表属性
QryProcList.First;
while not QryProcList.Eof do
begin
bNode:=RootNode.AddChild('body') ;
bNode:=bNode.AddChild('item') ;
bNode.SetAttribute('cinvcode', QryProcList.FieldByName('cinvcode').AsString);
bNode.SetAttribute('cinvname', QryProcList.FieldByName('cinvName').AsString);
bNode.SetAttribute('cinvstd' , QryProcList.FieldByName('cinvStd').AsString);
bNode.SetAttribute('cbarcode', QryProcList.FieldByName('cBarcode').AsString);
bNode.SetAttribute('iquantity',QryProcList.FieldByName('iQuantity').asfloat);
bNode.SetAttribute('cFree1', QryProcList.FieldByName('cFree1').AsString);
bNode.SetAttribute('cFree2', QryProcList.FieldByName('cFree2').AsString);
// bNode.SetAttribute('iposid', QryInList.FieldByName('iPOsID').AsInteger);
// bNode.SetAttribute('iunitcost',QryInList.FieldByName('iunitcost').asfloat);
// if RadioButton2.Checked then
// bNode.SetAttribute('iArrsId' ,QryInList.FieldByName('iArrsId').AsInteger);
QryProcList.Next;
End;
QryProc.Next;
end;
xmlDoc.SaveToFile(LsStr);
finally
xmlDoc := nil ;
end;
Application.MessageBox(Pchar('生成用友产成品入库单XML成功!'),'信息',MB_OK+ MB_ICONINFORMATION);
end;
procedure TFrmProc.QryProcListBeforeEdit(DataSet: TDataSet);
begin
Abort;
end;
procedure TFrmProc.QryProcListAfterScroll(DataSet: TDataSet);
begin
Label2.Caption:='记录:'+IntToStr(QryProcList.RecNo)+'/'+IntToStr(QryProcList.RecordCount);
end;
procedure TFrmProc.QryProcAfterScroll(DataSet: TDataSet);
begin
if CheckBox1.Checked then
FindList;
end;
procedure TFrmProc.QryProcBeforeEdit(DataSet: TDataSet);
begin
if not CheckBox2.Checked then Abort;
end;
procedure TFrmProc.QryProcBeforePost(DataSet: TDataSet);
Var II:Integer;
begin
II:=Application.MessageBox('数据已修改,是否保存?','信息',MB_YESNOCANCEL+ MB_ICONINFORMATION);
if II=IDNO then
begin
QryProc.Cancel;
Abort;
end;
if II=IDCANCEL then
begin
Abort;
end;
end;
procedure TFrmProc.QryProcAfterPost(DataSet: TDataSet);
Var ii:Integer;
begin
ii:=QryProc.FieldByName('ID').AsInteger;
FrmMain.UpdateNull(ii,'32');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -