| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | 
							- unit PriceMarginBillsFme;
 
- interface
 
- uses
 
-   SelectDetailGLsFrm,
 
-   PriceMarginBillsDm, ProjectGLDm, DetailGLDm, sdDB,
 
-   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 
-   Dialogs, sdGridDBA, ZJGrid, ExtCtrls, StdCtrls, JimLabels, dxBar,
 
-   JimPages, ComCtrls, ToolWin, ActnList, XPMenu;
 
- type
 
-   TPriceMarginBillsFrame = class(TFrame)
 
-     pnlGclBills: TPanel;
 
-     pnlDetail: TPanel;
 
-     sprDetail: TSplitter;
 
-     zgGclBills: TZJGrid;
 
-     saGclBills: TsdGridDBA;
 
-     pnlRelaData: TPanel;
 
-     sprRela: TSplitter;
 
-     pnlDetailBills: TPanel;
 
-     labTitle: TJimGradLabel;
 
-     zgDetailGclBills: TZJGrid;
 
-     saDetailGclBills: TsdGridDBA;
 
-     pnlRelaTop: TPanel;
 
-     tbRelaTop: TToolBar;
 
-     tobtnDetailGL: TToolButton;
 
-     tobtnParent: TToolButton;
 
-     jpsRela: TJimPages;
 
-     jpsRelaDetailGL: TJimPage;
 
-     jpsRelaBillsParent: TJimPage;
 
-     zgDetailGL: TZJGrid;
 
-     saDetailGL: TsdGridDBA;
 
-     dxpmDetailGL: TdxBarPopupMenu;
 
-     pnlBills: TPanel;
 
-     actnPriceMarginBills: TActionList;
 
-     actnAddDetailGLs: TAction;
 
-     dxpmDetailGclBills: TdxBarPopupMenu;
 
-     actnCopyDetailGLs: TAction;
 
-     xpm: TXPMenu;
 
-     actnApplyToSameBills: TAction;
 
-     procedure zgDetailGLMouseDown(Sender: TObject; Button: TMouseButton;
 
-       Shift: TShiftState; X, Y: Integer);
 
-     procedure dxpmDetailGLPopup(Sender: TObject);
 
-     procedure actnAddDetailGLsExecute(Sender: TObject);
 
-     procedure dxpmDetailGclBillsPopup(Sender: TObject);
 
-     procedure actnApplyToSameBillsExecute(Sender: TObject);
 
-     procedure zgDetailGclBillsMouseDown(Sender: TObject;
 
-       Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 
-     procedure actnAddDetailGLsUpdate(Sender: TObject);
 
-   private
 
-     FPriceMarginBillsData: TPriceMarginBillsData;
 
-     FProjectGLData: TProjectGLData;
 
-     FDetailGLData: TDetailGLData;
 
-     procedure AddDetailGLs;
 
-   public
 
-     constructor Create(APriceMarginBillsData: TPriceMarginBillsData);
 
-     destructor Destroy; override;
 
-     procedure ResetViewControl;
 
-   end;
 
- implementation
 
- uses
 
-   UtilMethods, MainFrm, BillsTree, ProjectData;
 
- {$R *.dfm}
 
- { TPriceMarginBillsFrame }
 
- constructor TPriceMarginBillsFrame.Create(
 
-   APriceMarginBillsData: TPriceMarginBillsData);
 
- begin
 
-   inherited Create(nil);
 
-   FPriceMarginBillsData := APriceMarginBillsData;
 
-   FProjectGLData := TProjectData(FPriceMarginBillsData.ProjectData).ProjectGLData;
 
-   FDetailGLData := TProjectData(FPriceMarginBillsData.ProjectData).DetailGLData;
 
-   saGclBills.DataView := APriceMarginBillsData.sdvGclBills;
 
-   saDetailGclBills.DataView := APriceMarginBillsData.sdvDetailGclBills;
 
-   saDetailGL.DataView := APriceMarginBillsData.sdvDetailGL;
 
- end;
 
- destructor TPriceMarginBillsFrame.Destroy;
 
- begin
 
-   inherited;
 
- end;
 
- procedure TPriceMarginBillsFrame.zgDetailGLMouseDown(Sender: TObject;
 
-   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 
- begin
 
-   if Button = mbRight then
 
-     dxpmDetailGL.PopupFromCursorPos;
 
- end;
 
- procedure TPriceMarginBillsFrame.dxpmDetailGLPopup(Sender: TObject);
 
- begin
 
-   SetDxBtnAction(actnAddDetailGLs, MainForm.dxbtnAddDetailGLs);
 
- end;
 
- procedure TPriceMarginBillsFrame.actnAddDetailGLsExecute(Sender: TObject);
 
- var
 
-   iID: Integer;
 
-   vNode: TBillsIDTreeNode;
 
- begin
 
-   iID := saDetailGclBills.DataView.Current.ValueByName('RelaBillsID').AsInteger;
 
-   vNode := TBillsIDTreeNode(FPriceMarginBillsData.MainBillsTree.FindNode(iID));
 
-   AddDetailGLs;
 
-   {  ErrorMessage('当前清单已进行材料调差,不可再添加调差工料。');}
 
- end;
 
- procedure TPriceMarginBillsFrame.AddDetailGLs;
 
- var
 
-   DetailGLs: TList;
 
- begin
 
-   DetailGLs := TList.Create;
 
-   try
 
-     if SelectDetailGLs(FProjectGLData, DetailGLs) then
 
-       FPriceMarginBillsData.AddDetailGLs(DetailGLs);
 
-   finally
 
-     DetailGLs.Free;
 
-   end;
 
- end;
 
- procedure TPriceMarginBillsFrame.dxpmDetailGclBillsPopup(Sender: TObject);
 
- begin
 
-   SetDxBtnAction(actnApplyToSameBills, MainForm.dxbtnApplyToSameBills);
 
-   SetDxBtnAction(actnCopyDetailGLs, MainForm.dxbtnCopyDetailGls);
 
- end;
 
- procedure TPriceMarginBillsFrame.actnApplyToSameBillsExecute(
 
-   Sender: TObject);
 
- var
 
-   CurRec, Rec: TsdDataRecord;
 
-   vGLs: TList;
 
-   iRec: Integer;
 
- begin
 
-   if saDetailGclBills.DataView.RecordCount = 1 then Exit;
 
-   vGLs := TList.Create;
 
-   try
 
-     CurRec := saDetailGclBills.DataView.Current;
 
-     FDetailGLData.LoadDetailGLs(CurRec.ValueByName('RelaBillsID').AsInteger, vGLs);
 
-     for iRec := 0 to saDetailGclBills.DataView.RecordCount - 1 do
 
-     begin
 
-       Rec := saDetailGclBills.DataView.Records[iRec];
 
-       if Rec <> CurRec then
 
-       begin
 
-         FDetailGLData.ResetDetailGLs(Rec.ValueByName('RelaBillsID').AsInteger, vGLs);
 
-         // 应重新计算清单
 
-         with TProjectData(FPriceMarginBillsData.ProjectData) do
 
-           PhaseData.StageData.CalculatePriceMargin(Rec.ValueByName('RelaBillsID').AsInteger);
 
-         FPriceMarginBillsData.RefreshDetailBills(Rec.ValueByName('RelaBillsID').AsInteger);
 
-       end;
 
-       // 应重新计算使用到的工料
 
-       FProjectGLData.CalculateGLs_PM(vGLs);
 
-     end;
 
-   finally
 
-     vGLs.Free;
 
-   end;
 
- end;
 
- procedure TPriceMarginBillsFrame.zgDetailGclBillsMouseDown(Sender: TObject;
 
-   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 
- begin
 
-   if Button = mbRight then
 
-     dxpmDetailGclBills.PopupFromCursorPos;
 
- end;
 
- procedure TPriceMarginBillsFrame.actnAddDetailGLsUpdate(Sender: TObject);
 
- begin
 
-   with TProjectData(FPriceMarginBillsData.ProjectData) do
 
-     TAction(Sender).Enabled := (not PriceMarginReadOnly) and Assigned(saDetailGclBills.DataView.Current);
 
- end;
 
- procedure TPriceMarginBillsFrame.ResetViewControl;
 
- begin
 
-   with TProjectData(FPriceMarginBillsData.ProjectData) do
 
-   begin
 
-     saDetailGL.Columns.ColumnByName('Quantity').ReadOnly := PriceMarginReadOnly;
 
-     if PriceMarginReadOnly then
 
-       saDetailGL.Options := saDetailGL.Options - [aoAllowDelete]
 
-     else
 
-       saDetailGL.Options := saDetailGL.Options + [aoAllowDelete];
 
-   end;
 
- end;
 
- end.
 
 
  |