123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614 |
- unit rmGcl_XmjBillsDm;
- interface
- uses
- SysUtils, Classes, ProjectData, DB, DBClient, sdIDTree, sdDB;
- type
- {-----------------------------
- gxtTopGcl: 汇总方式默认,写入方式:工程量清单1&其所属全部项目节, 工程量清单2&其所属全部项目节, ...;
- 示例: 202-1 456
- 1-1 123
- 1-2 333
- 203-1 222
- 1-1 120
- 1-2 102
- gxtFlowGcl: 汇总方式默认,写入方式:工程量清单1所属全部项目节, 工程量清单2所属全部项目节, ...;
- 示例: 202-1 1-1 123
- 202-1 1-2 333
- 203-1 1-1 120
- 203-1 1-1 102
- gxtWithoutXmj: 同gxtTopGcl,完成后过滤所有清单编号为空的节点
- 示例: 202-1 456
- 203-1 222
- -----------------------------}
- TGXType = (gxtTopGcl, gxtFlowGcl, gxtWithoutXmj);
- TXmjNode = class
- private
- FCode: string;
- FName: string;
- FUnits: string;
- FOrgQuantity: Double;
- FOrgTotalPrice: Double;
- FMisQuantity: Double;
- FMisTotalPrice: Double;
- FOthQuantity: Double;
- FOthTotalPrice: Double;
- FQuantity: Double;
- FTotalPrice: Double;
- FDrawingCode: string;
- FPeg: string;
- FNameDanWei: string;
- FNameFenBu: string;
- FNameFenXiang: string;
- FNameUnit: string;
- FPosition: string;
- end;
- TGclNode = class
- private
- FB_Code: string;
- FIndexCode: string;
- FName: string;
- FUnits: string;
- FPrice: Double;
- FNewPrice: Double;
- FDealQuantity: Double;
- FDealTotalPrice: Double;
- FOrgQuantity: Double;
- FOrgTotalPrice: Double;
- FMisQuantity: Double;
- FMisTotalPrice: Double;
- FOthQuantity: Double;
- FOthTotalPrice: Double;
- FQuantity: Double;
- FTotalPrice: Double;
- FXmjList: TList;
- function FindXmjNode(ANode: TsdIDTreeNode): TXmjNode;
- function NewXmjNode(ANode, APeg: TsdIDTreeNode): TXmjNode;
- function GetXmjCount: Integer;
- function GetXmjNode(AIndex: Integer): TXmjNode;
- public
- constructor Create;
- destructor Destroy; override;
- function AddXmjNode(ANode, APeg: TsdIDTreeNode): TXmjNode;
- property XmjCount: Integer read GetXmjCount;
- property XmjNode[AIndex: Integer]: TXmjNode read GetXmjNode;
- end;
- TrmGcl_XmjBillsData = class(TDataModule)
- cdsGcl: TClientDataSet;
- cdsGclIndexCode: TStringField;
- cdsGclIndexID: TIntegerField;
- cdsGclB_Code: TStringField;
- cdsGclName: TWideStringField;
- cdsGclCode: TStringField;
- cdsGclPeg: TWideStringField;
- cdsGclNameDanWei: TWideStringField;
- cdsGclNameFenBu: TWideStringField;
- cdsGclNameFenXiang: TWideStringField;
- cdsGclNameUnit: TWideStringField;
- cdsGclDrawingCode: TWideStringField;
- cdsGclPrice: TFloatField;
- cdsGclQuantity: TFloatField;
- cdsGclTotalPrice: TFloatField;
- cdsGclDealQuantity: TFloatField;
- cdsGclDealTotalPrice: TFloatField;
- cdsGclDifferQuantity: TFloatField;
- cdsGclDifferTotalPrice: TFloatField;
- cdsGclUnits: TWideStringField;
- cdsGclNewPrice: TFloatField;
- cdsGclPosition: TWideStringField;
- cdsGclOrgQuantity: TFloatField;
- cdsGclOrgTotalPrice: TFloatField;
- cdsGclMisQuantity: TFloatField;
- cdsGclMisTotalPrice: TFloatField;
- cdsGclOthQuantity: TFloatField;
- cdsGclOthTotalPrice: TFloatField;
- private
- FProjectData: TProjectData;
- FGclList: TList;
- FIndex: Integer;
- FGXType: TGXType;
- procedure BeforeOperation;
- procedure AfterOperation;
- procedure AddRelaLeafXmj(AGclNode: TGclNode; ARec: TsdDataRecord);
- function GetGclNode(ARec: TsdDataRecord): TGclNode;
- procedure FilterGclBills(ANode: TsdIDTreeNode);
- procedure FilterBills(ANode: TsdIDTreeNode);
- procedure FilterDealBills;
- procedure WriteXmjNode(AGclNode: TGclNode);
- procedure WriteGclNode(AGclNode: TGclNode);
- procedure WriteTopGclTypeData;
- procedure WriteFlowGclNode(AGclNode: TGclNode);
- procedure WriteFlowGclTypeData;
- procedure WriteData;
- public
- function AssignData(AProjectData: TProjectData; AGXType: TGXType): TDataSet;
- end;
- implementation
- uses
- ZhAPI, UtilMethods;
- {$R *.dfm}
- { TGclNode }
- constructor TGclNode.Create;
- begin
- FXmjList := TList.Create;
- end;
- destructor TGclNode.Destroy;
- begin
- ClearObjects(FXmjList);
- FXmjList.Free;
- inherited;
- end;
- function TGclNode.FindXmjNode(ANode: TsdIDTreeNode): TXmjNode;
- var
- i: Integer;
- begin
- Result := nil;
- for i := 0 to XmjCount - 1 do
- begin
- if SameText(XmjNode[i].FCode, ANode.Rec.ValueByName('Code').AsString) and
- SameText(XmjNode[i].FName, ANode.Rec.ValueByName('Name').AsString) and
- SameText(XmjNode[i].FUnits, ANode.Rec.ValueByName('Units').AsString) then
- begin
- Result := XmjNode[i];
- Break;
- end;
- end;
- end;
- function TGclNode.AddXmjNode(
- ANode, APeg: TsdIDTreeNode): TXmjNode;
- begin
- Result := FindXmjNode(ANode);
- if not Assigned(Result) then
- Result := NewXmjNode(ANode, APeg);
- end;
- function TGclNode.GetXmjCount: Integer;
- begin
- Result := FXmjList.Count;
- end;
- function TGclNode.GetXmjNode(AIndex: Integer): TXmjNode;
- begin
- Result := TXmjNode(FXmjList.Items[AIndex]);
- end;
- function TGclNode.NewXmjNode(
- ANode, APeg: TsdIDTreeNode): TXmjNode;
- function GetPegName(APegNode: TsdIDTreeNode): string;
- begin
- if Assigned(APegNode) then
- Result := APegNode.Rec.ValueByName('Name').AsString
- else
- Result := '';
- end;
- // 取树结构的第ALevel层节点的名称(level从0开始)
- function GetNameByLevel(ANode: TsdIDTreeNode; ALevel: Integer): string;
- begin
- Result := '';
- if not Assigned(ANode) then Exit;
- if ANode.Level = ALevel then
- Result := ANode.Rec.ValueByName('Name').AsString
- else if ANode.Level > ALevel then
- Result := GetNameByLevel(ANode.Parent, ALevel);
- end;
- function GetNameDanWei(ANode: TsdIDTreeNode): string;
- begin
- // 取树结构的第二层节点的名称
- Result := GetNameByLevel(ANode, 1);
- end;
- // ANode为计量单元节点,APegNode为桩号节点
- function GetNameFenBu(ANode, APegNode: TsdIDTreeNode): string;
- var
- vCurNode: TsdIDTreeNode;
- begin
- // 如果计量单元节点的名称为桩号(转化为判断计量单元节点与桩号节点为同一个)
- if not Assigned(APegNode) or (ANode.ID = APegNode.ID) then
- // 取树结构的第三层节点的名称
- Result := GetNameByLevel(ANode, 2)
- // 否则,取桩号节点的子节点的名称
- else
- begin
- vCurNode := ANode;
- while vCurNode.Level > APegNode.Level + 1 do
- vCurNode := vCurNode.Parent;
- Result := vCurNode.Rec.ValueByName('Name').AsString;
- end;
- end;
- function GetNameFenXiang(ANode, APegNode: TsdIDTreeNode): string;
- var
- iTopLevel: Integer;
- vCurNode: TsdIDTreeNode;
- begin
- if Assigned(APegNode) then
- begin
- iTopLevel := 3;
- if APegNode.ID <> ANode.ID then
- iTopLevel := APegNode.Level + 2;
- Result := '';
- vCurNode := ANode.Parent;
- while vCurNode.Level >= iTopLevel do
- begin
- Result := vCurNode.Rec.ValueByName('Name').AsString + ';' + Result;
- vCurNode := vCurNode.Parent;
- end;
- end
- else
- Result := GetNameByLevel(ANode, 3);
- end;
- function GetNameUnit(ANode: TsdIDTreeNode): string;
- begin
- Result := ANode.Rec.ValueByName('Name').AsString;
- end;
- function GetDrawingCode(ANode: TsdIDTreeNode): string;
- begin
- Result := '';
- if not Assigned(ANode) then Exit;
- Result := ANode.Rec.ValueByName('DrawingCode').AsString;
- if Result = '' then
- Result := GetDrawingCode(ANode.Parent);
- end;
- function GetPosition(ANode, APegNode: TsdIDTreeNode): string;
- begin
- // 如果计量单元节点的名称为桩号(转化为判断计量单元节点与桩号节点为同一个)
- if not Assigned(APegNode) or (ANode.ID = APegNode.ID) then
- // 取分部工程
- Result := GetNameFenXiang(ANode, APegNode)
- // 反之,取分项工程+计量单元
- else
- Result := GetNameFenXiang(ANode, APegNode) + GetNameUnit(ANode);
- end;
- begin
- Result := TXmjNode.Create;
- FXmjList.Add(Result);
- Result.FCode := ANode.Rec.ValueByName('Code').AsString;
- Result.FName := ANode.Rec.ValueByName('Name').AsString;
- Result.FUnits := ANode.Rec.ValueByName('Units').AsString;
- Result.FPeg := GetPegName(APeg);
- Result.FNameDanWei := GetNameDanWei(ANode);
- Result.FNameFenBu := GetNameFenBu(ANode, APeg);
- Result.FNameFenXiang := GetNameFenXiang(ANode, APeg);
- Result.FNameUnit := GetNameUnit(ANode);
- Result.FPosition := GetPosition(ANode, APeg);
- Result.FDrawingCode := GetDrawingCode(ANode);
- end;
- { TrmGclBillsData }
- procedure TrmGcl_XmjBillsData.AddRelaLeafXmj(AGclNode: TGclNode;
- ARec: TsdDataRecord);
- function GetFirstXmjParent(AID: Integer): TsdIDTreeNode;
- begin
- with TProjectData(FProjectData).BillsCompileData do
- Result := BillsCompileTree.FindNode(AID);
- while Assigned(Result) and (Result.Rec.ValueByName('B_Code').AsString <> '') do
- Result := Result.Parent;
- end;
- function GetPegNode(ANode: TsdIDTreeNode): TsdIDTreeNode;
- begin
- Result := nil;
- if not Assigned(ANode) then Exit;
- if CheckPeg(ANode.Rec.ValueByName('Name').AsString) then
- Result := ANode
- else
- Result := GetPegNode(ANode.Parent);
- end;
- var
- vNode, vPeg: TsdIDTreeNode;
- XmjNode: TXmjNode;
- begin
- vNode := GetFirstXmjParent(ARec.ValueByName('ID').AsInteger);
- if not Assigned(vNode) then Exit;
- vPeg := GetPegNode(vNode);
- XmjNode := AGclNode.AddXmjNode(vNode, vPeg);
- XmjNode.FOrgQuantity := XmjNode.FOrgQuantity + ARec.ValueByName('OrgQuantity').AsFloat;
- XmjNode.FOrgTotalPrice := XmjNode.FOrgTotalPrice + ARec.ValueByName('OrgTotalPrice').AsFloat;
- XmjNode.FMisQuantity := XmjNode.FMisQuantity + ARec.ValueByName('MisQuantity').AsFloat;
- XmjNode.FMisTotalPrice := XmjNode.FMisTotalPrice + ARec.ValueByName('MisTotalPrice').AsFloat;
- XmjNode.FOthQuantity := XmjNode.FOthQuantity + ARec.ValueByName('OthQuantity').AsFloat;
- XmjNode.FOthTotalPrice := XmjNode.FOthTotalPrice + ARec.ValueByName('OthTotalPrice').AsFloat;
- XmjNode.FQuantity := XmjNode.FQuantity + ARec.ValueByName('Quantity').AsFloat;
- XmjNode.FTotalPrice := XmjNode.FTotalPrice + ARec.ValueByName('TotalPrice').AsFloat;
- end;
- procedure TrmGcl_XmjBillsData.AfterOperation;
- begin
- ClearObjects(FGclList);
- FGclList.Free;
- if FGXType = gxtWithoutXmj then
- begin
- cdsGcl.Filter := 'B_Code <> ''''';
- cdsGcl.Filtered := True;
- end;
- cdsGcl.IndexFieldNames := 'IndexCode;IndexID';
- end;
- function TrmGcl_XmjBillsData.AssignData(
- AProjectData: TProjectData; AGXType: TGXType): TDataSet;
- begin
- FGXType := AGXType;
- BeforeOperation;
- try
- FProjectData := AProjectData;
- FilterBills(AProjectData.BillsCompileData.BillsCompileTree.FirstNode);
- FilterDealBills;
- WriteData;
- finally
- AfterOperation;
- Result := cdsGcl;
- end;
- end;
- procedure TrmGcl_XmjBillsData.BeforeOperation;
- begin
- FGclList := TList.Create;
- cdsGcl.Active := True;
- cdsGcl.Filtered := False;
- cdsGcl.EmptyDataSet;
- end;
- procedure TrmGcl_XmjBillsData.FilterBills(ANode: TsdIDTreeNode);
- begin
- if not Assigned(ANode) then Exit;
- if ANode.HasChildren then
- FilterBills(ANode.FirstChild)
- else
- FilterGclBills(ANode);
- FilterBills(ANode.NextSibling);
- end;
- procedure TrmGcl_XmjBillsData.FilterDealBills;
- var
- iIndex: Integer;
- Rec: TsdDataRecord;
- GclNode: TGclNode;
- begin
- with FProjectData.DealBillsData do
- for iIndex := 0 to sddDealBills.RecordCount - 1 do
- begin
- Rec := sddDealBills.Records[iIndex];
- GclNode := GetGclNode(Rec);
- GclNode.FDealQuantity := GclNode.FDealQuantity + Rec.ValueByName('Quantity').AsFloat;
- GclNode.FDealTotalPrice := GclNode.FDealTotalPrice + Rec.ValueByName('TotalPrice').AsFloat;
- end;
- end;
- procedure TrmGcl_XmjBillsData.FilterGclBills(ANode: TsdIDTreeNode);
- var
- Rec: TsdDataRecord;
- GclNode: TGclNode;
- begin
- if not Assigned(ANode) then Exit;
- Rec := ANode.Rec;
- if Rec.ValueByName('B_Code').AsString = '' then Exit;
- GclNode := GetGclNode(Rec);
- GclNode.FOrgQuantity := GclNode.FOrgQuantity + Rec.ValueByName('OrgQuantity').AsFloat;
- GclNode.FOrgTotalPrice := GclNode.FOrgTotalPrice + Rec.ValueByName('OrgTotalPrice').AsFloat;
- GclNode.FMisQuantity := GclNode.FMisQuantity + Rec.ValueByName('MisQuantity').AsFloat;
- GclNode.FMisTotalPrice := GclNode.FMisTotalPrice + Rec.ValueByName('MisTotalPrice').AsFloat;
- GclNode.FOthQuantity := GclNode.FOthQuantity + Rec.ValueByName('OthQuantity').AsFloat;
- GclNode.FOthTotalPrice := GclNode.FOthTotalPrice + Rec.ValueByName('OthTotalPrice').AsFloat;
- GclNode.FQuantity := GclNode.FQuantity + Rec.ValueByName('Quantity').AsFloat;
- GclNode.FTotalPrice := GclNode.FTotalPrice + Rec.ValueByName('TotalPrice').AsFloat;
- AddRelaLeafXmj(GclNode, Rec);
- end;
- function TrmGcl_XmjBillsData.GetGclNode(ARec: TsdDataRecord): TGclNode;
- function CreateGclNode: TGclNode;
- begin
- Result := TGclNode.Create;
- FGclList.Add(Result);
- Result.FB_Code := ARec.ValueByName('B_Code').AsString;
- Result.FIndexCode := B_CodeToIndexCode(ARec.ValueByName('B_Code').AsString);
- Result.FName := Trim(ARec.ValueByName('Name').AsString);
- Result.FUnits := ARec.ValueByName('Units').AsString;
- Result.FPrice := ARec.ValueByName('Price').AsFloat;
- if Assigned(ARec.ValueByName('NewPrice')) then
- Result.FNewPrice := ARec.ValueByName('NewPrice').AsFloat
- else
- Result.FNewPrice := 0;
- end;
- var
- I: Integer;
- GclNode: TGclNode;
- begin
- Result := nil;
- for I := 0 to FGclList.Count - 1 do
- begin
- GclNode := TGclNode(FGclList.Items[I]);
- if SameText(GclNode.FB_Code, ARec.ValueByName('B_Code').AsString) and
- SameText(GclNode.FName, Trim(ARec.ValueByName('Name').AsString)) and
- SameText(GclNode.FUnits, ARec.ValueByName('Units').AsString) and
- (GclNode.FPrice = ARec.ValueByName('Price').AsFloat) then
- begin
- Result := GclNode;
- Break;
- end;
- end;
- if not Assigned(Result) then
- Result := CreateGclNode;
- end;
- procedure TrmGcl_XmjBillsData.WriteData;
- begin
- case FGXType of
- gxtTopGcl, gxtWithoutXmj: WriteTopGclTypeData;
- gxtFlowGcl: WriteFlowGclTypeData;
- end;
- end;
- procedure TrmGcl_XmjBillsData.WriteFlowGclNode(AGclNode: TGclNode);
- var
- i: Integer;
- XmjNode: TXmjNode;
- begin
- for i := 0 to AGclNode.XmjCount - 1 do
- begin
- XmjNode := AGclNode.XmjNode[i];
- cdsGcl.Append;
- cdsGclIndexCode.AsString := AGclNode.FIndexCode;
- cdsGclIndexID.AsInteger := i+1;
- cdsGclB_Code.AsString := AGclNode.FB_Code;
- cdsGclName.AsString := AGclNode.FName;
- cdsGclUnits.AsString := AGclNode.FUnits;
- cdsGclPrice.AsFloat := AGclNode.FPrice;
- cdsGclNewPrice.AsFloat := AGclNode.FNewPrice;
- cdsGclCode.AsString := XmjNode.FCode;
- cdsGclPeg.AsString := XmjNode.FPeg;
- cdsGclNameDanWei.AsString := XmjNode.FNameDanWei;
- cdsGclNameFenBu.AsString := XmjNode.FNameFenBu;
- cdsGclNameFenXiang.AsString := XmjNode.FNameFenXiang;
- cdsGclNameUnit.AsString := XmjNode.FNameUnit;
- cdsGclDrawingCode.AsString := XmjNode.FDrawingCode;
- cdsGclPosition.AsString := XmjNode.FPosition;
- cdsGclOrgQuantity.AsFloat := XmjNode.FOrgQuantity;
- cdsGclOrgTotalPrice.AsFloat := XmjNode.FOrgTotalPrice;
- cdsGclMisQuantity.AsFloat := XmjNode.FMisQuantity;
- cdsGclMisTotalPrice.AsFloat := XmjNode.FMisTotalPrice;
- cdsGclOthQuantity.AsFloat := XmjNode.FOthQuantity;
- cdsGclOthTotalPrice.AsFloat := XmjNode.FOthTotalPrice;
- cdsGclQuantity.AsFloat := XmjNode.FQuantity;
- cdsGclTotalPrice.AsFloat := XmjNode.FTotalPrice;
- cdsGcl.Post;
- end;
- end;
- procedure TrmGcl_XmjBillsData.WriteFlowGclTypeData;
- var
- i: Integer;
- begin
- FIndex := 0;
- for i := 0 to FGclList.Count - 1 do
- WriteFlowGclNode(TGclNode(FGclList.Items[i]));
- end;
- procedure TrmGcl_XmjBillsData.WriteGclNode(
- AGclNode: TGclNode);
- var
- i: Integer;
- begin
- cdsGcl.Append;
- cdsGclIndexCode.AsString := AGclNode.FIndexCode;
- cdsGclIndexID.AsInteger := 0;
- cdsGclB_Code.AsString := AGclNode.FB_Code;
- cdsGclName.AsString := AGclNode.FName;
- cdsGclUnits.AsString := AGclNode.FUnits;
- cdsGclPrice.AsFloat := AGclNode.FPrice;
- cdsGclNewPrice.AsFloat := AGclNode.FNewPrice;
- cdsGclQuantity.AsFloat := AGclNode.FQuantity;
- cdsGclTotalPrice.AsFloat := AGclNode.FTotalPrice;
- cdsGclDealQuantity.AsFloat := AGclNode.FDealQuantity;
- cdsGclDealTotalPrice.AsFloat := AGclNode.FDealTotalPrice;
- cdsGclDifferQuantity.AsFloat := AGclNode.FDealQuantity - AGclNode.FQuantity;
- cdsGclDifferTotalPrice.AsFloat := AGclNode.FDealTotalPrice - AGclNode.FTotalPrice;
- cdsGclOrgQuantity.AsFloat := AGclNode.FOrgQuantity;
- cdsGclOrgTotalPrice.AsFloat := AGclNode.FOrgTotalPrice;
- cdsGclMisQuantity.AsFloat := AGclNode.FMisQuantity;
- cdsGclMisTotalPrice.AsFloat := AGclNode.FMisTotalPrice;
- cdsGclOthQuantity.AsFloat := AGclNode.FOthQuantity;
- cdsGclOthTotalPrice.AsFloat := AGclNode.FOthTotalPrice;
- cdsGcl.Post;
- WriteXmjNode(AGclNode);
- end;
- procedure TrmGcl_XmjBillsData.WriteTopGclTypeData;
- var
- i: Integer;
- begin
- FIndex := 0;
- for i := 0 to FGclList.Count - 1 do
- WriteGclNode(TGclNode(FGclList.Items[i]));
- end;
- procedure TrmGcl_XmjBillsData.WriteXmjNode(
- AGclNode: TGclNode);
- var
- i: Integer;
- XmjNode: TXmjNode;
- begin
- for i := 0 to AGclNode.XmjCount - 1 do
- begin
- XmjNode := AGclNode.XmjNode[i];
- cdsGcl.Append;
- cdsGclIndexCode.AsString := AGclNode.FIndexCode;
- cdsGclIndexID.AsInteger := FIndex;
- cdsGclCode.AsString := XmjNode.FCode;
- cdsGclPeg.AsString := XmjNode.FPeg;
- cdsGclNameDanWei.AsString := XmjNode.FNameDanWei;
- cdsGclNameFenBu.AsString := XmjNode.FNameFenBu;
- cdsGclNameFenXiang.AsString := XmjNode.FNameFenXiang;
- cdsGclNameUnit.AsString := XmjNode.FNameUnit;
- cdsGclPosition.AsString := XmjNode.FPosition;
- cdsGclDrawingCode.AsString := XmjNode.FDrawingCode;
- cdsGclOrgQuantity.AsFloat := XmjNode.FOrgQuantity;
- cdsGclOrgTotalPrice.AsFloat := XmjNode.FOrgTotalPrice;
- cdsGclMisQuantity.AsFloat := XmjNode.FMisQuantity;
- cdsGclMisTotalPrice.AsFloat := XmjNode.FMisTotalPrice;
- cdsGclOthQuantity.AsFloat := XmjNode.FOthQuantity;
- cdsGclOthTotalPrice.AsFloat := XmjNode.FOthTotalPrice;
- cdsGclQuantity.AsFloat := XmjNode.FQuantity;
- cdsGclTotalPrice.AsFloat := XmjNode.FTotalPrice;
- cdsGcl.Post;
- Inc(FIndex);
- end;
- end;
- end.
|