📄 frminp.~pas
字号:
QryCheckPo.SQL.Add('WHERE (dbo.PO_Pomain.cPOID IS NULL)');
QryCheckPo.SQL.Add(' And (PCID='''+FrmMain.PCID+''')');
QryCheckPo.SQL.Add(' And (Szb_PurIn.cVouchType=''01'')');
// QryCheckPo.SQL.SaveToFile('c:\1.txt');
QryCheckPo.Open;
if QryCheckPo.RecordCount>0 then
begin
Application.MessageBox(Pchar('共有:'+inttostr(QryCheckPo.RecordCount)+'张单据的找不到对应的采购订单.'),'信息',MB_OK+ MB_ICONINFORMATION);
Application.CreateForm(TFrmPoPPo,FrmPoPPo);
FrmPoPPo.DataSource1.DataSet:=QryCheckPo;
FrmPoPPo.dxDBGrid1cOrderCode.Caption:='采购订单';
FrmPoPPo.ShowModal;
FrmPoPPo.Free;
FrmPoPPo:=nil;
// RefData;
// Abort;
end;
UpdateVen;
end;
procedure TFrmIN.RefData;
begin
CheckBox1.Checked:=False;
QryIn.Close;
QryIn.Open;
CheckBox1.Checked:=True;
FindList;
end;
procedure TFrmIN.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;
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;
xmlDoc:= TXMLDocument.Create(nil);
xmlDoc.Active := True;
// xmlDoc.Version := '1.0';
xmlDoc.Encoding :='GB2312';
try
//加入根结点
FirstNode:=xmlDoc.AddChild('vouchers');
FirstNode.SetAttribute('vouchertype', '1');
FirstNode.SetAttribute('withdraw', 'False');
//加入子结点
while not QryIn.Eof do
begin
RootNode:=FirstNode.AddChild('voucher');
RootNode.SetAttribute('worked', 'False');
// bNode:=aNode;
//设置接点主表属性
aNode:=RootNode.AddChild('header');
aNode.SetAttribute('brdflag' ,'1');
aNode.SetAttribute('cvouchtype' ,'01');
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' ,QryIn.FieldByName('cWhCode').AsString);
aNode.SetAttribute('cwhname' ,QryIn.FieldByName('cWhName').AsString);
aNode.SetAttribute('crdcode' ,QryIn.FieldByName('crdcode').AsString);
aNode.SetAttribute('cptcode' ,QryIn.FieldByName('cptcode').AsString);
aNode.SetAttribute('cptname' ,QryIn.FieldByName('cptname').AsString);
aNode.SetAttribute('cdepcode' ,QryIn.FieldByName('cdept').AsString);
aNode.SetAttribute('cpersoncode',QryIn.FieldByName('cperson').AsString);
aNode.SetAttribute('cvencode' ,QryIn.FieldByName('cvencode').AsString);
aNode.SetAttribute('cvenabbname',QryIn.FieldByName('cvenabbname').AsString);
aNode.SetAttribute('cmemo' ,QryIn.FieldByName('cMemo').AsString);
aNode.SetAttribute('cmaker' ,QryIn.FieldByName('cMaker').AsString);
aNode.SetAttribute('vt_id' ,vt_id);
//设置接点子表属性
QryInList.First;
while not QryInList.Eof do
begin
bNode:=RootNode.AddChild('body') ;
bNode:=bNode.AddChild('item') ;
bNode.SetAttribute('cinvcode', QryInList.FieldByName('cinvcode').AsString);
bNode.SetAttribute('cinvname', QryInList.FieldByName('cinvName').AsString);
bNode.SetAttribute('cinvstd' , QryInList.FieldByName('cinvStd').AsString);
bNode.SetAttribute('cbarcode', QryInList.FieldByName('cBarcode').AsString);
bNode.SetAttribute('iquantity',QryInList.FieldByName('iQuantity').asfloat);
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);
QryInList.Next;
End;
QryIn.Next;
end;
xmlDoc.SaveToFile(LsStr);
// memo1.Lines.Text := xmlDoc.XML.Text ;
finally
xmlDoc := nil ;
end;
Application.MessageBox(Pchar('生成用友采购入库单XML成功!'),'信息',MB_OK+ MB_ICONINFORMATION);
end;
procedure TFrmIN.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');
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 = ''01'')');
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=''01'')');
LsQry.ExecSQL;
LsQry.Destroy;
// FindList;
end;
procedure TFrmIN.UpdateVen;
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.AdoConUfsoft;
LsQry.SQL.Add('Update Szb_PurIn set');
LsQry.SQL.Add(' Szb_PurIn.cVenCode=PO_Pomain.cVenCode, Szb_PurIn.cVenAbbName=Vendor.cVenAbbName, Szb_PurIn.cDept=PO_Pomain.cDepCode,');
LsQry.SQL.Add(' Szb_PurIn.cDeptName=Department.cDepName, Szb_PurIn.cPerson=PO_Pomain.cPersonCode, Szb_PurIn.cPersonName=Person.cPersonName,');
LsQry.SQL.Add(' Szb_PurIn.cPTCode=PO_Pomain.cPTCode,Szb_PurIn.ipurorderid=PO_Pomain.POID,Szb_PurIn.cMemo=PO_Pomain.cMemo,');
LsQry.SQL.Add(' Szb_PurIn.cPTName=PurchaseType.cPTName,Szb_PurIn.cRdCode=PurchaseType.cRdCode');
LsQry.SQL.Add('FROM Szb_PurIn INNER JOIN');
LsQry.SQL.Add(' PO_Pomain ON Szb_PurIn.cOrderCode = PO_Pomain.cPOID INNER JOIN');
LsQry.SQL.Add(' Vendor ON PO_Pomain.cVenCode = Vendor.cVenCode INNER JOIN');
LsQry.SQL.Add(' PurchaseType ON PO_Pomain.cPTCode = PurchaseType.cPTCode LEFT OUTER JOIN');
LsQry.SQL.Add(' Department ON PO_Pomain.cDepCode = Department.cDepCode LEFT OUTER JOIN');
LsQry.SQL.Add(' Person ON PO_Pomain.cPersonCode = Person.cPersonCode');
LsQry.SQL.Add('Where (Szb_PurIn.PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' And (Szb_PurIn.cVouchType=''01'')');
LsQry.ExecSQL;
LsQry.Close;
LsQry.SQL.Clear;
LsQry.SQL.Add('update Szb_PurInList set Szb_PurInList.iUnitCost=PO_Podetails.iUnitPrice,Szb_PurInList.iPOsid=PO_Podetails.id');
LsQry.SQL.Add('FROM Szb_PurIn INNER JOIN');
LsQry.SQL.Add(' PO_Pomain ON Szb_PurIn.cOrderCode = PO_Pomain.cPOID INNER JOIN');
LsQry.SQL.Add(' Szb_PurInList ON Szb_PurIn.id = Szb_PurInList.iPurID INNER JOIN');
LsQry.SQL.Add(' PO_Podetails ON PO_Pomain.cPOID = PO_Podetails.POID AND');
LsQry.SQL.Add(' Szb_PurInList.cInvCode = PO_Podetails.cInvCode');
LsQry.SQL.Add('Where (Szb_PurInList.PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' And (Szb_PurIn.cVouchType=''01'')');
// LsQry.SQL.SaveToFile('c:\1.txt');
LsQry.ExecSQL;
LsQry.Destroy;
end;
procedure TFrmIN.dxDBGrid2CustomDrawFooter(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxTreeListColumn; var AText: String; var AColor: TColor;
AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
begin
AColor := $00E9F3F2;
end;
procedure TFrmIN.QryInListCalcFields(DataSet: TDataSet);
begin
if RadioButton1.Checked then
FrmMain.CalcFieldsList(QryInList,'iPosid');
if RadioButton1.Checked then
FrmMain.CalcFieldsList(QryInList,'iArrsId');
end;
procedure TFrmIN.QryInAfterPost(DataSet: TDataSet);
Var ii:Integer;
begin
ii:=QryIn.FieldByName('ID').AsInteger;
FrmMain.UpdateNull(ii,'01');
end;
procedure TFrmIN.CheckPurArv;
Var LsQry:TADOQuery;
begin
QryCheckPo.Close;
QryCheckPo.SQL.Clear;
QryCheckPo.SQL.Add('SELECT dbo.Szb_PurIn.ID,dbo.Szb_PurIn.cOrderCode');
QryCheckPo.SQL.Add('FROM dbo.Szb_PurIn LEFT OUTER JOIN');
QryCheckPo.SQL.Add(' dbo.PU_ArrivalVouch ON dbo.Szb_PurIn.cOrderCode = dbo.PU_ArrivalVouch.cCode');
QryCheckPo.SQL.Add('WHERE (dbo.PU_ArrivalVouch.cCode IS NULL)');
QryCheckPo.SQL.Add(' And (PCID='''+FrmMain.PCID+''')');
QryCheckPo.SQL.Add(' And (Szb_PurIn.cVouchType=''01'')');
QryCheckPo.Open;
if QryCheckPo.RecordCount>0 then
begin
Application.MessageBox(Pchar('共有:'+inttostr(QryCheckPo.RecordCount)+'张单据的找不到对应的采购到货单.'),'信息',MB_OK+ MB_ICONINFORMATION);
Application.CreateForm(TFrmPoPPo,FrmPoPPo);
FrmPoPPo.DataSource1.DataSet:=QryCheckPo;
FrmPoPPo.dxDBGrid1cOrderCode.Caption:='采购到货单';
FrmPoPPo.ShowModal;
FrmPoPPo.Free;
FrmPoPPo:=nil;
// RefData;
// Abort;
end;
UpdatePurArv;
end;
procedure TFrmIN.UpdatePurArv;
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.AdoConUfsoft;
LsQry.SQL.Add('Update Szb_PurIn set');
LsQry.SQL.Add(' Szb_PurIn.cVenCode=PU_ArrivalVouch.cVenCode, Szb_PurIn.cVenAbbName=Vendor.cVenAbbName, Szb_PurIn.cDept=PU_ArrivalVouch.cDepCode,');
LsQry.SQL.Add(' Szb_PurIn.cDeptName=Department.cDepName, Szb_PurIn.cPerson=PU_ArrivalVouch.cPersonCode, Szb_PurIn.cPersonName=Person.cPersonName,');
LsQry.SQL.Add(' Szb_PurIn.cPTCode=PU_ArrivalVouch.cPTCode,Szb_PurIn.ipurarriveid=PU_ArrivalVouch.ID,Szb_PurIn.cMemo=PU_ArrivalVouch.cMemo,');
LsQry.SQL.Add(' Szb_PurIn.cPTName=PurchaseType.cPTName,Szb_PurIn.cRdCode=PurchaseType.cRdCode');
LsQry.SQL.Add('FROM dbo.Szb_PurIn INNER JOIN');
LsQry.SQL.Add(' dbo.PU_ArrivalVouch ON');
LsQry.SQL.Add(' dbo.Szb_PurIn.cOrderCode = dbo.PU_ArrivalVouch.cCode INNER JOIN');
LsQry.SQL.Add(' dbo.Vendor ON dbo.PU_ArrivalVouch.cVenCode = dbo.Vendor.cVenCode INNER JOIN');
LsQry.SQL.Add(' dbo.PurchaseType ON');
LsQry.SQL.Add(' dbo.PU_ArrivalVouch.cPTCode = dbo.PurchaseType.cPTCode LEFT OUTER JOIN');
LsQry.SQL.Add(' dbo.Department ON');
LsQry.SQL.Add(' dbo.PU_ArrivalVouch.cDepCode = dbo.Department.cDepCode LEFT OUTER JOIN');
LsQry.SQL.Add(' dbo.Person ON');
LsQry.SQL.Add(' dbo.PU_ArrivalVouch.cPersonCode = dbo.Person.cPersonCode');
LsQry.SQL.Add('Where (Szb_PurIn.PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' And (Szb_PurIn.cVouchType=''01'')');
// LsQry.SQL.SaveToFile('c:\1.txt');
LsQry.ExecSQL;
LsQry.Close;
LsQry.SQL.Clear;
LsQry.SQL.Add('update Szb_PurInList set Szb_PurInList.iUnitCost=PU_ArrivalVouchs.iOriCost,Szb_PurInList.iArrsId=PU_ArrivalVouchs.Autoid,');
LsQry.SQL.Add(' Szb_PurInList.iPOsid=PU_ArrivalVouchs.iPOsid');
LsQry.SQL.Add('FROM Szb_PurIn INNER JOIN');
LsQry.SQL.Add(' PU_ArrivalVouch ON Szb_PurIn.cOrderCode = PU_ArrivalVouch.cCode INNER JOIN');
LsQry.SQL.Add(' Szb_PurInList ON Szb_PurIn.id = Szb_PurInList.iPurID INNER JOIN');
LsQry.SQL.Add(' PU_ArrivalVouchs ON PU_ArrivalVouch.ID = PU_ArrivalVouchs.ID AND');
LsQry.SQL.Add(' Szb_PurInList.cInvCode = PU_ArrivalVouchs.cInvCode');
LsQry.SQL.Add('Where (Szb_PurInList.PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' And (Szb_PurIn.cVouchType=''01'')');
LsQry.ExecSQL;
LsQry.Destroy;
end;
procedure TFrmIN.QryInCalcFields(DataSet: TDataSet);
Var bb:Boolean;
begin
bb:=True;
QryIn.FieldByName('cError').AsString:='';
QryIn.FieldByName('cc').AsString:='';
if QryIn.FieldByName('cVenCode').AsString='' then
begin
QryIn.FieldByName('cError').AsString:='无相应的上游单据';
bb:=False;
end;
if QryIn.FieldByName('cWhCode').AsString='' then
begin
if bb then
QryIn.FieldByName('cError').AsString:='方案号不存在.'
else
QryIn.FieldByName('cError').AsString:=QryIn.FieldByName('cError').AsString+'、方案号不存在.';
bb:=False;
end;
if bb then
QryIn.FieldByName('cc').AsString:='√'
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -