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

📄 ordcomm.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
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 + -