unit U_OrderAttachment;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics,
  cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxButtonEdit,
  cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
  ComCtrls, ToolWin, DBClient, ADODB, cxGridCustomPopupMenu,
  cxGridPopupMenu;

type
  TfrmOrderAttachment = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Customnoname: TEdit;
    Label2: TLabel;
    SCXName: TEdit;
    Label3: TLabel;
    OrderCode: TEdit;
    Label4: TLabel;
    OrderNo: TEdit;
    Label5: TLabel;
    Label11: TLabel;
    ADefStr3: TEdit;
    Label12: TLabel;
    ADefStr4: TEdit;
    Label13: TLabel;
    Label14: TLabel;
    ADefStr5: TEdit;
    Label15: TLabel;
    ADefStr6: TEdit;
    Label16: TLabel;
    ADefStr7: TEdit;
    Label17: TLabel;
    ADefStr8: TEdit;
    Label18: TLabel;
    ADefStr9: TEdit;
    Label19: TLabel;
    cxGrid5: TcxGrid;
    TvSub: TcxGridDBTableView;
    vSubColumn3: TcxGridDBColumn;
    vSubColumn4: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    TvSubColumn1: TcxGridDBColumn;
    cxGridLevel4: TcxGridLevel;
    Label20: TLabel;
    Label21: TLabel;
    QFDate: TDateTimePicker;
    QFPerson: TEdit;
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    vSubColumn1: TcxGridDBColumn;
    DataSource1: TDataSource;
    CDS_Sub: TClientDataSet;
    ADOTemp: TADOQuery;
    ADOCmd: TADOQuery;
    ADOQuery1: TADOQuery;
    vSubColumn5: TcxGridDBColumn;
    vSubColumn6: TcxGridDBColumn;
    vSubColumn7: TcxGridDBColumn;
    BegRKDate: TDateTimePicker;
    cxGridPopupMenu1: TcxGridPopupMenu;
    vSubColumn8: TcxGridDBColumn;
    vSubColumn9: TcxGridDBColumn;
    Label6: TLabel;
    ADefStr10: TRichEdit;
    ADOQuery2: TADOQuery;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label22: TLabel;
    Label24: TLabel;
    procedure ADefStr3DblClick(Sender: TObject);
    procedure ADefStr4DblClick(Sender: TObject);
    procedure ADefStr5DblClick(Sender: TObject);
    procedure ADefStr6DblClick(Sender: TObject);
    procedure ADefStr9DblClick(Sender: TObject);
    procedure ADefStr7DblClick(Sender: TObject);
    procedure ADefStr8DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure Label8Click(Sender: TObject);
  private
    { Private declarations }
    procedure SaveJiangYe();
  public

    { Public declarations }
    FAMainId:string;
  end;

var
  frmOrderAttachment: TfrmOrderAttachment;

implementation
uses
  U_DataLink,U_ZDYHelp,U_Fun,U_GetPGJBInList,U_ZDYHelpSel;

{$R *.dfm}

procedure TfrmOrderAttachment.ADefStr3DblClick(Sender: TObject);
begin
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='CPBZ';
      flagname:='��װ';
      if ShowModal=1 then
      begin
        Self.ADefStr3.Text:=Self.ADefStr3.Text+Trim(ReturnStr);
      end;
    end;
  finally
    frmZDYHelpSel.Free;
  end;
end;

procedure TfrmOrderAttachment.ADefStr4DblClick(Sender: TObject);
begin
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='CPMT';
      flagname:='��ͷ';
      if ShowModal=1 then
      begin
        Self.ADefStr4.Text:=Self.ADefStr4.Text+Trim(ReturnStr);
      end;
    end;
  finally
    frmZDYHelpSel.Free;
  end;
end;

procedure TfrmOrderAttachment.ADefStr5DblClick(Sender: TObject);
begin
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='CPBM';
      flagname:='����';
      if ShowModal=1 then
      begin
        Self.ADefStr5.Text:=Self.ADefStr5.Text+Trim(ReturnStr);
      end;
    end;
  finally
    frmZDYHelpSel.Free;
  end;
end;

procedure TfrmOrderAttachment.ADefStr6DblClick(Sender: TObject);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='CPFeel';
      flagname:='�ָ�';
      if ShowModal=1 then
      begin
        Self.ADefStr6.Text:=Trim(ClientDataSet1.fieldbyname('zdyname').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmOrderAttachment.ADefStr9DblClick(Sender: TObject);
begin
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='CPFX';
      flagname:='����';
      if ShowModal=1 then
      begin
        Self.ADefStr9.Text:=Self.ADefStr9.Text+Trim(ReturnStr);
      end;
    end;
  finally
    frmZDYHelpSel.Free;
  end;
end;

procedure TfrmOrderAttachment.ADefStr7DblClick(Sender: TObject);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='CPXS';
      flagname:='��ˮ';
      if ShowModal=1 then
      begin
        Self.ADefStr7.Text:=Trim(ClientDataSet1.fieldbyname('zdyname').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmOrderAttachment.ADefStr8DblClick(Sender: TObject);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='CPSLD';
      flagname:='ɫ�ζ�';
      if ShowModal=1 then
      begin
        Self.ADefStr8.Text:=Trim(ClientDataSet1.fieldbyname('zdyname').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmOrderAttachment.FormShow(Sender: TObject);
begin
  ReadCxGrid('�޷IJ��ƻ���1',TvSub,'ָʾ������');
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    sql.Add(' exec P_WFBOrder_ListAtt :begdate,:endate,:MainId');
    ADOQuery1.Parameters.ParamByName('MainId').Value:=Trim(FAMainId);
    ADOQuery1.Parameters.ParamByName('begdate').Value:='';
    ADOQuery1.Parameters.ParamByName('endate').Value:='';
    Open;
  end;
 // SCreateCDS20(ADOQuery1,Order_Sub);
  //SInitCDSData20(ADOQuery1,Order_Sub);

  SCSHDataWTag(ADOQuery1,Panel1);
  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from WFBOrder_Main_Attachment where MainId='''+Trim(FAMainId)+'''');
    Open;
  end;
  if ADOQuery1.IsEmpty then
  begin
    Label7.Caption:='���';
    Label7.Font.Color:=clRed;
    with ADOQuery1 do
    begin
      close;
      sql.Clear;
      sql.Add('select Top 1* from WFBOrder_Main_Attachment ');
      Open;
    end;
    if ADOQuery1.IsEmpty=False then
    begin
      with ADOQuery1 do
      begin
        Close;
        sql.Clear;
        sql.Add('select Top 1* from WFBOrder_Main_Attachment order by FillTime desc ');
        Open;
      end;
      with ADOQuery1 do
      begin
        ADefStr3.Text:=Trim(fieldbyname('ADefStr3').AsString);
        ADefStr4.Text:=Trim(fieldbyname('ADefStr4').AsString);
        ADefStr5.Text:=Trim(fieldbyname('ADefStr5').AsString);
        ADefStr6.Text:=Trim(fieldbyname('ADefStr6').AsString);
        ADefStr7.Text:=Trim(fieldbyname('ADefStr7').AsString);
        ADefStr8.Text:=Trim(fieldbyname('ADefStr8').AsString);
        ADefStr9.Text:=Trim(fieldbyname('ADefStr9').AsString);

      end;
    end;
  end else
  begin
    Label7.Caption:='������';
    Label7.Font.Color:=clBlue;
    if Trim(ADOQuery1.fieldbyname('ADefStr11').AsString)='clBlue' then
    begin
      ADefStr10.Font.Color:=clBlue;
    end else
    if Trim(ADOQuery1.fieldbyname('ADefStr11').AsString)='clRed' then
    begin
      ADefStr10.Font.Color:=clRed;
    end else
    if Trim(ADOQuery1.fieldbyname('ADefStr11').AsString)='clOlive' then
    begin
      ADefStr10.Font.Color:=clOlive;
    end else
    if Trim(ADOQuery1.fieldbyname('ADefStr11').AsString)='clFuchsia' then
    begin
      ADefStr10.Font.Color:=clFuchsia;
    end else
    begin
      ADefStr10.Font.Color:=clBlack;
    end;
  end;
  with ADOCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from WFBOrder_Main_Attachment where MainId='''+Trim(FAMainId)+'''');
    Open;
  end;
  if ADOCmd.IsEmpty then
  begin
   QFPerson.Text:=Trim(DName);
   QFDate.DateTime:=SGetServerDate(ADOQuery1);
  end;
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select A.*,Case when OrdUnit=''�K'' then A.SOrdQty');
    SQL.Add('     else A.SOrdQty*A.SWFBKZ*1.00/1000 end as OrdQty,');
    sql.Add(' Case when B.OrderType=''��Ʒ'' then A.SWFBFK2 else A.SWFBFK end as FSWFBFK, ');
    sql.add('YLPBStr=dbo.F_Get_WFBOrder_SubStr(A.SubId,''YLPB'')');
    SQL.Add('from WFBOrder_Sub A');
    SQL.Add('inner join WFBOrder_Main B on A.MainId=B.MainId');
    sql.Add(' where A.MainId='''+Trim(FAMainId)+'''');
    Open;
  end;
  SCreateCDS20(ADOQuery1,CDS_Sub);
  SInitCDSData20(ADOQuery1,CDS_Sub);
end;

procedure TfrmOrderAttachment.TBSaveClick(Sender: TObject);
var
  maxnno:String;
begin
  try
    ADOCmd.Connection.BeginTrans;
    with ADOCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from WFBOrder_Main_Attachment where MainId='''+Trim(FAMainId)+'''');
      Open;
    end;
    with ADOCmd do
    begin
      if ADOCmd.IsEmpty then
      begin
        Append;
        FieldByName('Filler').Value:=Trim(DName);
      end else
      begin
        Edit;
        FieldByName('Editer').Value:=Trim(DName);
        FieldByName('EditTime').Value:=SGetServerDateTime(ADOQuery1);
      end;
      FieldByName('MainId').value:=Trim(FAMainId);
      FieldByName('ADefStr11').Value:=Trim(ADefStr10.Hint);
      SSetsavedata(ADOCmd,'WFBOrder_Main_Attachment',Panel1,9);
      Post;
    end;
    with CDS_Sub do
    begin
      First;
      while not Eof do
      begin
        with ADOCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from WFBOrder_Sub where SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
          Open;
        end;
        with ADOCmd do
        begin
          Edit;
          if Trim(CDS_Sub.fieldbyname('SOrderMQty').AsString)<>'' then
            FieldByName('SOrderMQty').Value:=CDS_Sub.fieldbyname('SOrderMQty').AsString;
          FieldByName('SNote').Value:=CDS_Sub.fieldbyname('SNote').AsString;
          Post;
        end;
        Next;
      end;
    end;
    ADOCmd.Connection.CommitTrans;
    SaveJiangYe();
    Application.MessageBox('����ɹ���','��ʾ',0);
    Label7.Caption:='������';
    Label7.Font.Color:=clBlue;
  except
    ADOCmd.Connection.RollbackTrans;
    Application.MessageBox('�����쳣��','��ʾ',0);
  end;
end;
procedure TfrmOrderAttachment.SaveJiangYe();
var
  maxno,maxnosub:string;
begin
  try
    ADOCmd.Connection.BeginTrans;
    with ADOQuery1 do
    begin
      Close;
      sql.Clear;
      sql.Add('select A.MainId,A.SWFBColor from WFBOrder_Sub A inner join WFBOrder_Main_Attachment B');
      sql.Add(' on A.MainId=B.MainId where A.MainId='''+Trim(FAMainId)+'''');
      sql.Add(' group by A.MainId,A.SWFBColor');
      Open;
    end;
    with ADOQuery1 do
    begin
      First;
      while not Eof do
      begin
        with ADOTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from WFBYCL_MainIdColor_JiangYe where MainId='''+Trim(FAMainId)+'''');
          sql.Add(' and SWFBColor='''+Trim(ADOQuery1.fieldbyname('SWFBColor').AsString)+'''');
          Open;
        end;
        if ADOTemp.IsEmpty then
        begin
          if GetLSNo(ADOCmd,maxno,'MC','WFBYCL_MainIdColor_JiangYe',2,1)=False then
          begin
            ADOCmd.Connection.RollbackTrans;
            Application.MessageBox('ȡ���ϱ�����ʧ�ܣ�','��ʾ',0);
            Exit;
          end;
          with ADOCmd do
          begin
            close;
            sql.Clear;
            sql.Add('select * from WFBYCL_MainIdColor_JiangYe where 1<>1');
            Open;
          end;
          with ADOCmd do
          begin
            Append;
            FieldByName('MCID').Value:=Trim(maxno);
            FieldByName('MainId').Value:=Trim(FAMainId);
            FieldByName('SWFBColor').Value:=Trim(ADOQuery1.fieldbyname('SWFBColor').AsString);
            Post;
          end;
        end else
        begin
          maxno:=Trim(ADOTemp.fieldbyname('MCID').AsString);
        end;
        with ADOQuery2 do
        begin
          Close;
          sql.Clear;
          sql.Add('exec  P_JiangLiaoListMainIdColor :MainId,:SWFBColor,:WSQl');
          Parameters.ParamByName('MainId').Value:=Trim(FAMainId);
          Parameters.ParamByName('SWFBColor').Value:=Trim(ADOQuery1.fieldbyname('SWFBColor').AsString);
          Parameters.ParamByName('WSQl').Value:='';
          Open;
        end;
        with ADOQuery2 do
        begin
          First;
          while not Eof do
          begin
            with ADOTemp do
            begin
              Close;
              sql.Clear;
              sql.Add('select * from WFBYCL_JiangYe where MainId='''+Trim(FAMainId)+'''');
              sql.Add(' and SWFBColor='''+Trim(ADOQuery1.fieldbyname('SWFBColor').AsString)+'''');
              sql.Add(' and YCLCode='''+Trim(ADOQuery2.fieldbyname('YCLCode').AsString)+'''');
              Open;
            end;
            if Trim(ADOTemp.fieldbyname('YJID').AsString)='' then
            begin
              if GetLSNo(ADOCmd,maxnosub,'YJ','WFBYCL_JiangYe',3,1)=False then
              begin
                ADOCmd.Connection.RollbackTrans;
                Application.MessageBox('ȡ���ϱ�����ʧ�ܣ�','��ʾ',0);
                Exit;
              end;
            end else
            begin
              maxnosub:=Trim(ADOTemp.fieldbyname('YJID').AsString);
            end;
            with ADOCmd do
            begin
              Close;
              sql.Clear;
              sql.Add('select * from WFBYCL_JiangYe where YJID='''+Trim(maxnosub)+'''');
              open;
            end;
            with ADOCmd do
            begin
              if Trim(ADOTemp.fieldbyname('YJID').AsString)='' then
                Append
              else
                Edit;
              FieldByName('MCID').Value:=Trim(maxno);
              FieldByName('YJID').Value:=Trim(maxnosub);
              FieldByName('MainId').Value:=Trim(FAMainId);
              FieldByName('SWFBColor').Value:=Trim(ADOQuery1.fieldbyname('SWFBColor').AsString);
              FieldByName('YCLCode').Value:=Trim(ADOQuery2.fieldbyname('YCLCode').AsString);
              FieldByName('YCLName').Value:=Trim(ADOQuery2.fieldbyname('YCLName').AsString);
              FieldByName('YGQty').Value:=Trim(ADOQuery2.fieldbyname('YGQty').AsString);
              Post;
            end;
            Next;
          end;
        end;
        Next;
      end;
    end;
    ADOCmd.Connection.CommitTrans;
  except
    ADOCmd.Connection.RollbackTrans;
    Application.MessageBox('���ϱ�����ʧ�ܣ�','��ʾ',0);
  end;
end;
procedure TfrmOrderAttachment.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('�޷IJ��ƻ���1',TvSub,'ָʾ������');
  Close;
end;

procedure TfrmOrderAttachment.Label8Click(Sender: TObject);
begin
  ADefStr10.Font.Color:=TLabel(Sender).Color;
  ADefStr10.Hint:=TLabel(Sender).Hint;
end;

end.