📄 ordcomm.pas.svn-base
字号:
begin
ADataSet.Close;
ADataSet.LockType:=ltBatchOptimistic;
ADataSet.FieldDefs.Clear;
ADataSet.FieldDefs.Add('FNo',ftInteger,0);
ADataSet.FieldDefs.Add('FName',ftString,100);
ADataSet.FieldDefs.Add('FParent',ftInteger,0);
ADataSet.CreateDataSet;
ADataSet.DisableControls;
ADataSet.Append;
ADataSet.FieldByName('FNo').Value:=0;
ADataSet.FieldByName('FName').Value:=GetDBString('COM00008021'); //所有类别
ADataSet.FieldByName('FParent').Value:=-1;
ADataSet.Post;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
if ASuper then
SYSDM.qryQuery.SQL.Add('select O110_001 as FNo,O110_002 as FName,O110_003 as FParent from ORD110 order by O110_002')
else
SYSDM.qryQuery.SQL.Add('select O110_001 as FNo,O110_002 as FName,O110_003 as FParent from ORD110 where exists(select 1 from SYS500C where S500C_003=''CUS'' and S500C_001='+IntToStr(AUserID)+' and O110_001=S500C_002) order by O110_002');
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
ADataSet.Append;
ADataSet.FieldByName('FNo').Value:=SYSDM.qryQuery.FieldByName('FNo').Value;
ADataSet.FieldByName('FName').Value:=SYSDM.qryQuery.FieldByName('FName').Value;
ADataSet.FieldByName('FParent').Value:=SYSDM.qryQuery.FieldByName('FParent').Value;
ADataSet.Post;
SYSDM.qryQuery.Next;
end;
ADataSet.First;
if Assigned(AcbClass) then
begin
AcbClass.Clear;
while not ADataSet.Eof do
begin
AcbClass.Items.Add(ADataSet.FieldByName('FName').AsString);
ADataSet.Next;
end;
ADataSet.First;
AcbClass.ItemIndex:=0;
end;
ADataSet.EnableControls;
end;
//报价单生成销售定单
procedure CreateOrder(ACode:String);
var
AIsAutoCode:Boolean;
ACaption,AOrder:String;
ADate:String;
begin
AIsAutoCode:=GetAutoCoding('ORD510');
ACaption:=GetDBString('ORD51002009'); //销售单号
if AIsAutoCode then AOrder:=GetAutoCode('ORD510') else InputBox(ACaption,ACaption,AOrder); //销售单号
ADate:=GetDateString(GetServerDate);
//定单状态=新建,销售日期=当前日期,来源类型=销售报价
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('insert into ORD510A');
SYSDM.qryQuery.SQL.Add(' (O510A_001,O510A_002,O510A_003,O510A_004,O510A_005,');
SYSDM.qryQuery.SQL.Add(' O510A_006,O510A_007,O510A_008,O510A_009,O510A_010,');
SYSDM.qryQuery.SQL.Add(' O510A_011,O510A_012,O510A_013,O510A_014,O510A_015,');
SYSDM.qryQuery.SQL.Add(' O510A_016,O510A_017,O510A_018,O510A_019,O510A_020,');
SYSDM.qryQuery.SQL.Add(' O510A_021,O510A_022,O510A_023,O510A_024,O510A_025,O510A_026,O510A_027)');
SYSDM.qryQuery.SQL.Add('select '+''''+AOrder+''''+',O500A_002,'+ADate+',0,O500A_005,');
SYSDM.qryQuery.SQL.Add(' O500A_006,O500A_007,O500A_008,O500A_009,1,');
SYSDM.qryQuery.SQL.Add(' O500A_011,O500A_012,O500A_013,O500A_014,O500A_015,');
SYSDM.qryQuery.SQL.Add(' O500A_016,O500A_017,O500A_018,O500A_019,O500A_020,');
SYSDM.qryQuery.SQL.Add(' O500A_021,O500A_022,O500A_023,O500A_024,O500A_025,O500A_026,O500A_027 ');
SYSDM.qryQuery.SQL.Add('from ORD500A where O500A_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
//来源单号=报价单号,来源行号=报价单行号
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('insert into ORD510B');
SYSDM.qryQuery.SQL.Add(' (O510B_001,O510B_002,O510B_003,O510B_004,O510B_005,');
SYSDM.qryQuery.SQL.Add(' O510B_006,O510B_007,O510B_008,O510B_009,O510B_010,');
SYSDM.qryQuery.SQL.Add(' O510B_011,O510B_012,O510B_013,O510B_014,O510B_015,');
SYSDM.qryQuery.SQL.Add(' O510B_016,O510B_017,O510B_018,O510B_019,O510B_020,');
SYSDM.qryQuery.SQL.Add(' O510B_021,O510B_022,O510B_023)');
SYSDM.qryQuery.SQL.Add('select '+''''+AOrder+''''+',O500B_002,O500B_003,O500B_004,O500B_005,');
SYSDM.qryQuery.SQL.Add(' O500B_006,O500B_007,O500B_008,O500B_009,O500B_010,');
SYSDM.qryQuery.SQL.Add(' O500B_011,O500B_012,O500B_013,O500B_014,O500B_015,');
SYSDM.qryQuery.SQL.Add(' 0,O500B_017,O500B_018,O500B_001,O500B_002,');
SYSDM.qryQuery.SQL.Add(' O500B_021,O500B_022,O500B_023 ');
SYSDM.qryQuery.SQL.Add('from ORD500B where O500B_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
end;
//销售定单生成采购定单
procedure CreatePurchase(ACode:String);
var
AIsAutoCode:Boolean;
ACaption,AOrder:String;
ADate:TDateTime;
AStringList:TStringList;
AItemNo,AUnitNo,ACurrNo,ACustNo,ASaleNo:Integer;
AQty,APrice,ADiscount,AAmount:Double;
begin
AIsAutoCode:=GetAutoCoding('PUR510');
ACaption:=GetDBString('PUR51002009'); //采购单号
ADate:=GetServerDate;
//没有主供应商的料品 或 没有采购价格的料品都不能生成采购定单
AStringList:=TStringList.Create;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select I150_002,I150_003,I150_039 from INV150,ORD510B where I150_001=O510B_003 and (I150_039 is null or I150_039=0) and O510B_001='+''''+ACode+'''');
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
AStringList.Add('['+SYSDM.qryQuery.FieldByName('I150_002').AsString+']'+SYSDM.qryQuery.FieldByName('I150_003').AsString);
SYSDM.qryQuery.Next;
end;
if AStringList.Count<>0 then
begin
ShowMsg(GetDBString('')+#13+AStringList.Text,1); //下列料品没有设置主供应商信息,生成采购定单失败
Abort;
end;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select I150_001,I150_002,I150_003,O150_001,O150_002,O150_003,O150_027 from INV150,ORD510B,ORD150 where I150_001=O510B_003 and I150_039=O150_001 and (I150_039 is null or I150_039=0) and O510B_001='+''''+ACode+'''');
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
AItemNo:=SYSDM.qryQuery.FieldByName('I150_002').Value;
ACustNo:=SYSDM.qryQuery.FieldByName('O150_001').Value;
ACurrNo:=SYSDM.qryQuery.FieldByName('O150_027').Value;
AUnitNo:=SYSDM.qryQuery.FieldByName('O150_011').Value;
ASaleNo:=0;
AQty:=1;
APrice:=0;
ADiscount:=0;
AAmount:=0;
GetPurPrice(AItemNo,AUnitNo,ACurrNo,ACustNo,ASaleNo,ADate,AQty,APrice,ADiscount,AAmount);
SYSDM.qryQuery.Next;
end;
if AIsAutoCode then AOrder:=GetAutoCode('PUR510') else InputBox(ACaption,ACaption,AOrder); //采购单号
//定单状态=新建,采购日期=当前日期,来源类型=销售定单,审核日期=null,审核人员=null
//销售数量 转换成 采购数量 销售单位 转换成 采购单位
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('insert into PUR510A');
SYSDM.qryQuery.SQL.Add(' (P510A_001,P510A_002,P510A_003,P510A_004,P510A_005,');
SYSDM.qryQuery.SQL.Add(' P510A_006,P510A_007,P510A_008,P510A_009,P510A_010,');
SYSDM.qryQuery.SQL.Add(' P510A_011,P510A_012,P510A_013,P510A_014,P510A_015,');
SYSDM.qryQuery.SQL.Add(' P510A_016,P510A_017,P510A_018,P510A_019,P510A_020,');
SYSDM.qryQuery.SQL.Add(' P510A_021,P510A_022,P510A_023,P510A_024,P510A_025)');
SYSDM.qryQuery.SQL.Add('select '+''''+AOrder+''''+',O510A_002,'+GetDateString(ADate)+',0,O510A_005,');
SYSDM.qryQuery.SQL.Add(' 3,O510A_007,O510A_008,O510A_009,null,');
SYSDM.qryQuery.SQL.Add(' null,O510A_012,O510A_013,O510A_014,O510A_015,');
SYSDM.qryQuery.SQL.Add(' O510A_016,O510A_017,O510A_018,O510A_019,O510A_020,');
SYSDM.qryQuery.SQL.Add(' O510A_021,O510A_022,O510A_023,O510A_024,O510A_025 ');
SYSDM.qryQuery.SQL.Add('from ORD510A where O510A_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
//来源单号=销售单号,来源行号=销售行号
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('insert into PUR510B');
SYSDM.qryQuery.SQL.Add(' (P510B_001,P510B_002,P510B_003,P510B_004,P510B_005,');
SYSDM.qryQuery.SQL.Add(' P510B_006,P510B_007,P510B_008,P510B_009,P510B_010,');
SYSDM.qryQuery.SQL.Add(' P510B_011,P510B_012,P510B_013,P510B_014,P510B_015,');
SYSDM.qryQuery.SQL.Add(' P510B_016,P510B_017,P510B_018,P510B_019,P510B_020,');
SYSDM.qryQuery.SQL.Add(' P510B_021,P510B_022)');
SYSDM.qryQuery.SQL.Add('select '+''''+AOrder+''''+',O510B_002,O510B_003,O510B_004,O510B_005,');
SYSDM.qryQuery.SQL.Add(' O510B_006,O510B_007,O510B_008,O510B_009,O510B_010,');
SYSDM.qryQuery.SQL.Add(' O510B_011,O510B_012,O510B_013,O510B_014,O510B_015,');
SYSDM.qryQuery.SQL.Add(' O510B_016,O510B_017,O510B_018,O510B_001,O510B_002,');
SYSDM.qryQuery.SQL.Add(' O510B_021,O510B_022 ');
SYSDM.qryQuery.SQL.Add('from ORD510B where O510B_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
end;
//加入销售产品
procedure AddItemLine(AOrderInfo:TOrderInfo;AItemInfo:TItemInfo;ADataSet:TADODataSet;AType:String='UPD');
var
APriceInfo:TPriceInfo;
begin
//取得产品价格
GetSalePrice(AOrderInfo,APriceInfo);
if not (ADataSet.State in [dsInsert,dsEdit]) then
if (ADataSet.IsEmpty) or (AType='ADD') then ADataSet.Append else ADataSet.Edit;
ADataSet.FieldByName('FItemNo').Value:=AItemInfo.ItemNo;
ADataSet.FieldByName('FItemID').Value:=AItemInfo.ItemID;
ADataSet.FieldByName('FItemName').Value:=AItemInfo.ItemName;
ADataSet.FieldByName('FItemSpec').Value:=AItemInfo.ItemSpec;
ADataSet.FieldByName('FUnitNo').Value:=AItemInfo.UnitNo;
ADataSet.FieldByName('FUnitID').Value:=AItemInfo.UnitID;
ADataSet.FieldByName('FUnitName').Value:=AItemInfo.UnitName;
ADataSet.FieldByName('FQty').Value:=AOrderInfo.OrderQty;
ADataSet.FieldByName('FPrice').Value:=APriceInfo.StdPrice;
ADataSet.FieldByName('FAmount').Value:=APriceInfo.OrderAmt;
ADataSet.FieldByName('FDisRate').Value:=APriceInfo.DisRate;
ADataSet.FieldByName('FDisAmt').Value:=APriceInfo.DisAmt;
ADataSet.FieldByName('FNetAmt').Value:=APriceInfo.NetAmt;
ADataSet.FieldByName('FTax').Value:=0;
ADataSet.FieldByName('FTaxAmt').Value:=0;
ADataSet.FieldByName('FAcrAmt').Value:=APriceInfo.NetAmt;
ADataSet.FieldByName('FDate').Value:=AOrderInfo.OrderDate;
ADataSet.FieldByName('FFactDate').Value:=null;
ADataSet.FieldByName('FReceQty').Value:=null;
ADataSet.FieldByName('FPlace').Value:=null;
ADataSet.FieldByName('FFromID').Value:=null;
ADataSet.FieldByName('FLineNo').Value:=null;
ADataSet.FieldByName('FRemark').Value:=null;
ADataSet.FieldByName('FIsBySum').Value:=APriceInfo.IsBySum;
ADataSet.FieldByName('FUnitRate').Value:=GetUnitRate(AOrderInfo.CustNo,AItemInfo.ItemNo,AItemInfo.UnitNo);
if AType='UPD' then Exit;
ADataSet.Post;
end;
//取得所有任务类别
procedure GetAllSellsClass(AcbClass:TComboBox);
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from ORD100');
AcbClass.Clear;
AcbClass.Items.Add(GetDBString('所有销售类别')); //所有销售类别
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
AcbClass.Items.Add(SYSDM.qryQuery.FieldByName('O100_002').AsString);
SYSDM.qryQuery.Next;
end;
AcbClass.ItemIndex:=0;
end;
//取得有销售类别及其所有子类的电脑编号
function GetChildSell(ATasClass:string):string;
var
AStringList:TStringList;
AClassNo:String;
I:Integer;
begin
AStringList:=TStringList.Create;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select O100_001 from ORD100 where O100_002='+''''+ATasClass+'''');
SYSDM.qryQuery.Open;
AClassNo:=SYSDM.qryQuery.Fields[0].AsString;
AStringList.Add(AClassNo);
AClassNo:='';
for I:=0 to AStringList.Count-1 do AClassNo:=AClassNo+','+AStringList[I];
Delete(AClassNo,1,1);
Result:=AClassNo;
end;
//更新报价单的状态,当销售定单删除时,删除前调用
//AOrder:销售单号
procedure UpdataOrd500(AOrder:String);
var
AQuery:TADOQuery;
AStatus:Integer;
AQuote:String;
begin
AQuery:=TADOQuery.Create(Application);
AQuery.Connection:=SYSDM.ADOC;
//找出所有相关的销售报价单号
AQuery.Close;
AQuery.SQL.Clear;
AQuery.SQL.Add('select distinct O510B_019 from ORD510B,ORD510A where O510B_001=O510A_001 and O510A_010=1 and O510B_001='+''''+AOrder+'''');
AQuery.Open;
while not AQuery.Eof do
begin
AQuote:=AQuery.Fields[0].AsString;
//相关的销售报价单号是否存在相关销售定单,如果存在,则状态=执行,否则状态=报价
if IsExists('select 1 from ORD510B where O510B_001<>'+''''+AOrder+''''+' and O510B_019='+''''+AQuote+'''') then AStatus:=5 else AStatus:=2;
ExecSQL('update ORD500A set O500A_004='+IntToStr(AStatus)+' where O500A_001='+''''+AQuote+'''');
AQuery.Next;
end;
AQuery.Close;
AQuery.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -