unit U_ClothContractInPut;

interface

uses
  Windows, Messages, strUtils, SysUtils, cxTextEdit, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
  cxGrid, cxMemo, cxRichEdit, ComCtrls, cxContainer, cxMaskEdit, cxButtonEdit,
  StdCtrls, ToolWin, DBClient, ADODB, ExtCtrls, BtnEdit, cxDropDownEdit,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels, cxLookAndFeelPainters,
  cxNavigator, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint,
  dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide,
  dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy,
  dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis,
  dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black,
  dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink,
  dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue,
  dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray,
  dxSkinOffice2013White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic,
  dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,
  dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinsDefaultPainters,
  dxSkinValentine, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue,
  dxSkinscxPCPainter;

type
  TfrmClothContractInPut = class(TForm)
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    ScrollBox1: TScrollBox;
    Label1: TLabel;
    ConNo: TEdit;
    Label4: TLabel;
    DeliveryDate: TDateTimePicker;
    Label5: TLabel;
    ToolBar2: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1PRTSpec: TcxGridDBColumn;
    v1PRTColor: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    v1PRTKZ: TcxGridDBColumn;
    v1Money: TcxGridDBColumn;
    v1Price: TcxGridDBColumn;
    v1ClothUnit: TcxGridDBColumn;
    ADOTemp: TADOQuery;
    ADOCmd: TADOQuery;
    DataSource1: TDataSource;
    Order_Sub: TClientDataSet;
    DataSource2: TDataSource;
    ADOZDY: TADOQuery;
    CDS_ZDY: TClientDataSet;
    FactoryNoName: TcxButtonEdit;
    ADOQueryTmp: TADOQuery;
    v1Column1: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    PanZDY: TPanel;
    CXGridZDY: TcxGrid;
    TVZDY: TcxGridDBTableView;
    VHelpZDYName: TcxGridDBColumn;
    CXGridZDYLevel1: TcxGridLevel;
    Button1: TButton;
    v1Column4: TcxGridDBColumn;
    Label2: TLabel;
    QDTime: TDateTimePicker;
    Label3: TLabel;
    CompanyName: TcxButtonEdit;
    Label6: TLabel;
    QDPalce: TEdit;
    v1Column5: TcxGridDBColumn;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    LXPerson: TEdit;
    LXTel: TEdit;
    JHPlace: TcxButtonEdit;
    Label10: TLabel;
    fromConNo: TcxButtonEdit;
    v1T_Qty: TcxGridDBColumn;
    v1T_money: TcxGridDBColumn;
    v1T_Ps: TcxGridDBColumn;
    cxGridPopupMenu1: TcxGridPopupMenu;
    v1Mrate: TcxGridDBColumn;
    v1T_Price: TcxGridDBColumn;
    Panel1: TPanel;
    Label11: TLabel;
    Tv1Column1: TcxGridDBColumn;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    procedure TBCloseClick(Sender: TObject);
    procedure TVZDYCellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure TVZDYKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure v1OrderUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1PRTUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1PRTColorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure FactoryNoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1PRTMFPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1OrderQtyPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1ClothQtyPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure FactoryNoNamePropertiesChange(Sender: TObject);
    procedure CompanyNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure JHPlacePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1Column1PropertiesEditValueChanged(Sender: TObject);
    procedure fromConNoKeyPress(Sender: TObject; var Key: Char);
    procedure v1ClothUnitPropertiesEditValueChanged(Sender: TObject);
    procedure fromConNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure v1Column6PropertiesEditValueChanged(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
  private
    FXS: Integer;
    procedure InitData();
    procedure ZDYHelp(FButn: TcxButtonEdit; LType: string);
    function SaveData(): Boolean;
    function YFData(fMainID, FsubID: string): Boolean;
    procedure DoQuery(fkeyNo: string);
    procedure DoKc();
    { Private declarations }
  public
    PState: Integer;
    FMainId: string;

    { Public declarations }
  end;

var
  frmClothContractInPut: TfrmClothContractInPut;

implementation

uses
  U_DataLink, U_ZDYHelp, U_Fun, U_ZdyAttachGYS, U_ClothContractList_CG_help,
  U_ZdyAttachCP;

{$R *.dfm}
procedure TfrmClothContractInPut.DoKc();
begin
  Label11.Caption := '���ۣ�0';
  if Order_Sub.IsEmpty then
    exit;
  if trim(Order_Sub.fieldbyname('C_CodeName').AsString) = '' then
    exit;

  with ADOTemp do
  begin
    close;
    sql.Clear;
    SQL.Add(' SELECT Top 1 Price  FROM YF_Money_CR A');
    sql.Add(' where P_CodeName=' + quotedstr(trim(Order_Sub.fieldbyname('C_CodeName').AsString)));
    sql.Add(' and factoryName=' + quotedstr(trim(FactoryNoName.Text)));
    sql.Add(' and CRType=''Ӧ����Ǽ�'' ');
    sql.Add(' and price>0 ');
    sql.Add(' order by FillTime desc');
    open;
  end;
  if not ADOTemp.IsEmpty then
  begin
    Label11.Caption := '���ۣ�' + trim(ADOTemp.fieldbyname('price').AsString);
  end;
end;

procedure TfrmClothContractInPut.DoQuery(fkeyNo: string);
begin
  if trim(fkeyNo) = '' then
    exit;
  with ADOTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select A.* from Contract_Main A ');
    sql.Add('inner join  Contract_sub B on B.MainID=A.mainID ');
    sql.Add('where A.conNo=' + quotedstr(trim(fkeyNo)));
    sql.Add('and Isnull(B.C_status,''0'')=''0'' ');
    open;
    if not IsEmpty then
    begin
      FactoryNoName.Text := fieldbyname('FactoryNoName').AsString;
      LXPerson.Text := fieldbyname('LXPerson').AsString;
      LXPerson.Text := fieldbyname('LXPerson').AsString;
      LXTel.Text := fieldbyname('LXPerson').AsString;
      fromConNo.Hint := fieldbyname('mainID').AsString;
      JHPlace.Text := fieldbyname('QDPalce').AsString;
    end
    else
    begin
      application.MessageBox('�˲ɹ��ƻ����Ŵ���', '��ʾ��Ϣ', 0);
      exit;
    end;
  end;

  with ADOTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * ');
    sql.Add('from Contract_Main A');
    sql.Add('inner join  Contract_sub B on B.MainID=A.mainID ');
    sql.Add('where A.conNo=' + quotedstr(trim(fkeyNo)));
    sql.Add('and Isnull(B.C_status,''0'')=''0'' ');
    open;
    if not IsEmpty then
    begin
      SCreateCDS20(ADOTemp, Order_Sub);
      SInitCDSData20(ADOTemp, Order_Sub);
    end
    else
    begin
    end;
  end;
  with Order_Sub do
  begin
    DisableControls;
    First;
    while not eof do
    begin
      edit;
      fieldbyname('fromMainID').Value := fieldbyname('MainID').AsString;
      fieldbyname('fromsubID').Value := fieldbyname('subID').AsString;
      fieldbyname('MainID').Value := '';
      fieldbyname('subID').Value := '';
      post;
      next;
    end;
    First;
    EnableControls;
  end;

end;

function TfrmClothContractInPut.YFData(fMainID, FsubID: string): Boolean;
var
  CRID, OrdMainId, YFID, FComTaiTou, FCRID, FFactoryName: string;
begin
  Result := False;
  try
    with ADOQueryTmp do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from YF_Money_KC where FactoryName=''' + Trim(FactoryNoName.Text) + '''');
      Open;
    end;
    if not ADOQueryTmp.IsEmpty then
    begin
      CRID := ADOQueryTmp.fieldbyname('CRID').AsString;
    end
    else
    begin
      with ADOCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('Update YF_Money_CRID set CRID=CRID+1');
        sql.Add('select * from YF_Money_CRID ');
        Open;
      end;
      CRID := ADOCmd.fieldbyname('CRID').AsString;
      with ADOCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('select * from YF_Money_KC ');
        sql.add('where CRID=' + quotedstr(trim(CRID)));
        Open;
      end;
      with ADOCmd do
      begin
        Append;
        FieldByName('CRID').Value := StrToInt(CRID);
        FieldByName('FactoryName').Value := Trim(FactoryNoName.Text);
        FieldByName('ZdyStr1').Value := 'Ӧ����';
        Post;
      end;
    end;

    with ADOQueryTmp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from YF_Money_CR where mainID=''' + Trim(fMainID) + '''');
      sql.Add('and subID=''' + Trim(FsubID) + '''');
      sql.Add('and YFName=''��������'' ');
      Open;
    end;
    if ADOQueryTmp.IsEmpty then
    begin
      if GetLSNo(ADOCmd, YFID, 'YF', 'YF_Money_CR', 3, 1) = False then
      begin
        Application.MessageBox('ȡ����Ӧ������ʧ��!', '��ʾ', 0);
        Exit;
      end;
    end
    else
    begin
      YFID := Trim(ADOQueryTmp.fieldbyname('YFID').AsString);
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from YF_Money_CR where YFID=''' + Trim(YFID) + '''');
      Open;
    end;
    with ADOCmd do
    begin
      if ADOQueryTmp.IsEmpty then
        Append
      else
        Edit;
      FieldByName('YFID').Value := Trim(YFID);
      FieldByName('YFTypeId').Value := Trim(ConNo.Text);
      FieldByName('CRID').Value := StrToInt(CRID);
      FieldByName('Filler').Value := Trim(DName);
      FieldByName('CRType').Value := 'Ӧ����Ǽ�';
      FieldByName('CRFlag').Value := 'Ӧ����';
      FieldByName('QtyFlag').Value := 1;
      FieldByName('FactoryName').Value := Trim(FactoryNoName.Text);
      FieldByName('CRTime').Value := formatDateTime('yyyy-MM-dd', DeliveryDate.Date);
      FieldByName('Qty').Value := Order_Sub.fieldbyname('C_Qty').AsFloat;
      FieldByName('PS').Value := Order_Sub.fieldbyname('Qty1').AsFloat;
      FieldByName('T_Ps').Value := Order_Sub.fieldbyname('T_Ps').AsFloat;
      FieldByName('T_Qty').Value := Order_Sub.fieldbyname('T_Qty').AsFloat;
      FieldByName('YFType').Value := '�Զ�����';
      FieldByName('Price').Value := Order_Sub.fieldbyname('Price').asfloat;
      FieldByName('T_Price').Value := Order_Sub.fieldbyname('T_Price').asfloat;
      FieldByName('HuiLv').Value := 1;
      FieldByName('BZType').Value := '�����';
      FieldByName('ComTaiTou').Value := Trim(FComTaiTou);
      FieldByName('QtyUnit').Value := Trim(Order_Sub.fieldbyname('C_Unit').AsString);
      FieldByName('YFName').Value := '��������';
      FieldByName('MainId').Value := Trim(fMainID);
      FieldByName('subID').Value := Trim(FsubID);
      FieldByName('P_CodeName').Value := Trim(Order_Sub.fieldbyname('C_CodeName').AsString);
      FieldByName('P_Color').Value := Trim(Order_Sub.fieldbyname('C_color').AsString);
      Post;
    end;

    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('Update YF_Money_CR Set Money=Price*Qty,BBMoney=Price*Qty,T_money=T_Price*T_Qty ');
      sql.Add(' where YFID=''' + Trim(YFID) + '''');
      ExecSQL;
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add(' Update YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)');
      sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)');
      sql.Add(' where CRID=' + CRID);
      ExecSQL;
    end;
    Result := True;
  except
  end;
end;

procedure TfrmClothContractInPut.TBCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmClothContractInPut.InitData();
begin
  with ADOQueryTmp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * ');
    sql.Add('from Contract_Main A');
    sql.Add('inner join  Contract_sub B on B.MainID=A.mainID ');
    sql.Add('where  A.mainID= ''' + Trim(fMainID) + ''' ');
    sql.Add('and  A.conType=''��������'' ');
    Open;
  end;

  SCreateCDS20(ADOQueryTmp, Order_Sub);
  SInitCDSData20(ADOQueryTmp, Order_Sub);
  SCSHData(ADOQueryTmp, ScrollBox1, 0);
  if not ADOQueryTmp.IsEmpty then
  begin
    fromConNo.Hint := trim(ADOQueryTmp.fieldbyname('fromMainID').AsString);
    fromConNo.Text := trim(ADOQueryTmp.fieldbyname('fromConNo').AsString);
  end;
  if PState = 0 then
  begin
    with ADOTemp do
    begin
      Close;
      SQL.Clear;
      sql.Add('select Top 1* from Contract_Main order by FillTime desc ');
      Open;
    end;
    QDTime.DateTime := SGetServerDate(ADOTemp);
    DeliveryDate.DateTime := SGetServerDate(ADOTemp);
    QDTime.Checked := True;
    DeliveryDate.Checked := False;
   // ConNo.Text:='�Զ�����';
    //CompanyName.Text:='¡���֯';
  end;
  PanZDY.Visible := False;
end;

procedure TfrmClothContractInPut.ZDYHelp(FButn: TcxButtonEdit; LType: string);
var
  FType, ZDYName, FText: string;
begin
  PanZDY.Visible := True;
  PanZDY.Left := FButn.Left;
  PanZDY.Top := FButn.Top + FButn.Height;
  with ADOZDY do
  begin
    Filtered := False;
    Close;
    SQL.Clear;
    SQL.Add('select RTrim(ZDYNo) ZDYNo,RTrim(ZDYName) ZDYName from KH_ZDY where Type=''' + Trim(LType) + '''');
    Open;
  end;
  FText := Trim(FButn.Text);
  if FText <> '' then
    SDofilter(ADOZDY, ' ZDYName like ' + QuotedStr('%' + Trim(FText) + '%'))
  else
    SDofilter(ADOZDY, '');
  VHelpZDYName.Summary.GroupFormat := Trim(FButn.Name);
end;

procedure TfrmClothContractInPut.TVZDYCellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
  FName: string;
begin
  if ADOZDY.IsEmpty then
    Exit;
  FName := Trim(VHelpZDYName.Summary.GroupFormat);
  TcxButtonEdit(FindComponent(FName)).Text := Trim(ADOZDY.fieldbyname('ZDYName').AsString);
  TcxButtonEdit(FindComponent(FName)).Hint := Trim(ADOZDY.fieldbyname('ZDYNO').AsString);
  PanZDY.Visible := False;
end;

procedure TfrmClothContractInPut.Button1Click(Sender: TObject);
begin
  PanZDY.Visible := False;
end;

procedure TfrmClothContractInPut.TVZDYKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    if ADOZDY.IsEmpty then
      Exit;
    TcxButtonEdit(FindComponent(VHelpZDYName.Summary.GroupFormat)).Text := Trim(ADOZDY.fieldbyname('ZDYName').AsString);
    TcxButtonEdit(FindComponent(VHelpZDYName.Summary.GroupFormat)).Hint := Trim(ADOZDY.fieldbyname('ZDYNO').AsString);
    PanZDY.Visible := False;
    ADOZDY.Active := False;
  end;
end;

procedure TfrmClothContractInPut.FormShow(Sender: TObject);
begin
 {if Trim(DParameters1)='1' then
  begin
    v1Price.Visible:=False;
  //  v1ClothQty.Visible:=False;
   // v1PRTQty.Visible:=False;
  end else
  begin
    v1Price.Visible:=True;
    v1ClothQty.Visible:=True;
    v1PRTQty.Visible:=True;
  end;}
  readCXgrid(self.Caption, tv1);
  InitData();
end;

function TfrmClothContractInPut.SaveData(): Boolean;
var
  maxno: string;
begin
  try
    ADOCmd.Connection.BeginTrans;
    ///��������
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      SQL.Add('select * from Contract_Main where MainId=''' + Trim(fMainID) + '''');
      Open;
    end;
    with ADOCmd do
    begin
      if Trim(fMainID) = '' then
      begin
        Append;
        if GetLSNo(ADOTemp, maxno, '', 'Contract_Main', 3, 1) = False then
        begin
          ADOCmd.Connection.RollbackTrans;
          Application.MessageBox('������ˮ���쳣��', '��ʾ', 0);
          exit;
        end;
        conNo.Text := trim(maxno);
        if GetLSNo(ADOTemp, maxno, 'CM', 'Contract_Main', 3, 1) = False then
        begin
          ADOCmd.Connection.RollbackTrans;
          Application.MessageBox('������ˮ���쳣��', '��ʾ', 0);
          exit;
        end;
      end
      else
      begin
        maxno := Trim(fMainID);
        Edit;
      end;
      FieldByName('MainId').Value := Trim(maxno);
      SSetsaveSql(ADOCmd, 'Contract_Main', ScrollBox1, 0);
//      FieldByName('conno').Value := Trim(LXPerson.Text);
      FieldByName('LXPerson').Value := Trim(LXPerson.Text);
      FieldByName('LXTel').Value := Trim(LXTel.Text);
      if Trim(fMainID) = '' then
      begin
        FieldByName('Filler').Value := Trim(DName);
      end
      else
      begin
        FieldByName('Editer').Value := Trim(DName);
        FieldByName('EditTime').Value := SGetServerDateTime(ADOTemp);
      end;
      FieldByName('ConType').Value := '��������';
      FieldByName('status').Value := '0';
      FieldByName('fromconNo').Value := null;
      FieldByName('fromMainID').Value := Trim(fromConNo.Hint);
      FieldByName('fromConNO').Value := Trim(fromConNo.text);
      Post;
    end;
    fMainID := Trim(maxno);
    ///�����ӱ�
    with Order_Sub do
    begin
      First;
      while not Eof do
      begin
        if Trim(Order_Sub.fieldbyname('C_Unit').AsString) = 'Kg' then
        begin
        end;
        if Trim(Order_Sub.fieldbyname('SubId').AsString) = '' then
        begin
          if GetLSNo(ADOTemp, maxno, 'CS', 'Contract_Sub', 3, 1) = False then
          begin
            ADOCmd.Connection.RollbackTrans;
            Application.MessageBox('ȡ����ˮ��ʧ�ܣ�', '��ʾ', 0);
            Exit;
          end;
        end
        else
        begin
          maxno := Trim(Order_Sub.fieldbyname('SubId').AsString);
        end;
        with ADOCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add('select * from Contract_Sub where MainId=''' + Trim(fMainID) + '''');
          sql.Add(' and SubId=''' + Trim(maxno) + '''');
          Open;
        end;
        with ADOCmd do
        begin
          if Trim(Order_Sub.fieldbyname('SubId').AsString) = '' then
            Append
          else
            Edit;
          FieldByName('MainId').Value := Trim(fMainID);
          FieldByName('SubId').Value := Trim(maxno);
          FieldByName('ConNo').Value := Trim(ConNo.Text);
          RTSetSaveDataCDS(ADOCmd, Tv1, Order_Sub, 'Contract_Sub', 0);
          FieldByName('fromMainID').Value := Trim(Order_Sub.fieldbyname('fromMainID').AsString);
          FieldByName('fromsubID').Value := Trim(Order_Sub.fieldbyname('fromsubID').AsString);
          FieldByName('mrate').Value := Trim(Order_Sub.fieldbyname('mrate').AsString);
          FieldByName('C_status').Value := '0';
          FieldByName('MFQty').Value := Order_Sub.fieldbyname('MFQty').AsFloat;
          FieldByName('KZQty').Value := Order_Sub.fieldbyname('KZQty').AsFloat;
          FieldByName('C_Qty').Value := Order_Sub.fieldbyname('C_Qty').AsFloat;
          FieldByName('Qty1').Value := Order_Sub.fieldbyname('Qty1').AsFloat;
          FieldByName('Qty2').Value := Order_Sub.fieldbyname('Qty2').AsFloat;
          FieldByName('Qty3').Value := Order_Sub.fieldbyname('Qty3').AsFloat;
          FieldByName('Price').Value := Order_Sub.fieldbyname('Price').AsFloat;
          FieldByName('money').Value := Order_Sub.fieldbyname('money').AsFloat;
          FieldByName('T_ps').Value := Order_Sub.fieldbyname('T_ps').AsFloat;
          FieldByName('T_Qty').Value := Order_Sub.fieldbyname('T_Qty').AsFloat;
          FieldByName('T_Price').Value := Order_Sub.fieldbyname('T_Price').AsFloat;
          FieldByName('T_money').Value := Order_Sub.fieldbyname('T_money').AsFloat;
          FieldByName('H_ps').Value := Order_Sub.fieldbyname('H_ps').AsFloat;
          FieldByName('H_Qty').Value := Order_Sub.fieldbyname('H_Qty').AsFloat;
          if Trim(Order_Sub.fieldbyname('C_Unit').AsString) = 'Kg' then
          begin
            if Order_Sub.fieldbyname('MFQty').AsFloat * Order_Sub.fieldbyname('KZQty').AsFloat > 0 then
              FieldByName('MQty').Value := Order_Sub.fieldbyname('C_Qty').Value * 1.00 * 1000 / (Order_Sub.fieldbyname('MFQty').Value * 1.00 / 100 * Order_Sub.fieldbyname('KZQty').Value);
          end
          else
          begin
            FieldByName('MQty').Value := Order_Sub.fieldbyname('C_Qty').Value;
          end;
          FieldByName('C_Valid').Value := 'Y';
          Post;
        end;
        Order_Sub.Edit;
        Order_Sub.FieldByName('SubId').Value := Trim(maxno);

//        if not YFData(fMainID, maxno) then
//        begin
//          ADOCmd.Connection.RollbackTrans;
//          exit;
//        end;
        //Order_Sub.Post;
        Next;
      end;
    end;

    ADOCmd.Connection.CommitTrans;
    Result := True;
  except
    Result := False;
    ADOCmd.Connection.RollbackTrans;
    if GetLSNo(ADOTemp, maxno, 'CM', 'Contract_Main', 3, 1) = False then
    begin
    end;
    Application.MessageBox('����ʧ�ܣ�', '��ʾ', 0);
  end;
end;

procedure TfrmClothContractInPut.TBSaveClick(Sender: TObject);
begin
  cxGrid1.SetFocus;
//  if Trim(ConNo.Text)='' then
//  begin
//    Application.MessageBox('��ͬ��Ų���Ϊ�գ�','��ʾ',0);
//    Exit;
//  end;
  if Trim(FactoryNoName.Text) = '' then
  begin
    Application.MessageBox('��������Ϊ�գ�', '��ʾ', 0);
    Exit;
  end;
  if Order_Sub.IsEmpty then
  begin
    Application.MessageBox('��ϸ����Ϊ�գ�', '��ʾ', 0);
    exit;
  end;
  if Order_Sub.Locate('C_Qty', null, []) then
  begin
    Application.MessageBox('��������Ϊ��!', '��ʾ', 0);
    Exit;
  end;
  if Order_Sub.Locate('C_Unit', null, []) then
  begin
    Application.MessageBox('������λ����Ϊ��!', '��ʾ', 0);
    Exit;
  end;
{  if Order_Sub.Locate('KZQty',null,[]) then
  begin
    Application.MessageBox('���ز���Ϊ��!','��ʾ',0);
    Exit;
  end;
  if Order_Sub.Locate('MFQty',null,[]) then
  begin
    Application.MessageBox('�ŷ�����Ϊ��!','��ʾ',0);
    Exit;
  end;    }
  with ADOTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select MainID from Contract_Main A');
    sql.Add('where mainID<>' + quotedstr(trim(fMainID)));
    sql.Add('and conNo=' + quotedstr(trim(conNo.Text)));
    sql.Add('and conType=''��������''');
    open;
  end;
  if not ADOTemp.IsEmpty then
  begin
    application.MessageBox('���񵥺��ظ���', '��ʾ��Ϣ', 0);
    exit;
  end;
  if SaveData() then
  begin
    Application.MessageBox('����ɹ���', '��ʾ', 0);
    ModalResult := 1;
  //  ConNo.Text:='�Զ�����';
  {  FactoryNoName.Text:='';
    CompanyName.Text:='������֯';
    LXPerson.Text:='';
    LXTel.Text:='';
    JHPlace.Text:='';
    Order_Sub.EmptyDataSet;
    PState:=0;
    FMainId:='';    }
  end;
end;

procedure TfrmClothContractInPut.v1OrderUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'OrdUnit';
      flagname := '��λ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('OrderUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.v1PRTUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'OrdUnit';
      flagname := '��λ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('PRTUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.v1PRTColorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'OrdColor';
      flagname := '��ɫ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('PRTColor').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.ToolButton1Click(Sender: TObject);
begin
  with Order_Sub do
  begin
    Append;
    fieldbyname('PriceUnit').Value := '�����';
    fieldbyname('C_UNit').Value := 'M';
    Post;
  end;
end;

procedure TfrmClothContractInPut.ToolButton2Click(Sender: TObject);
begin
  if Order_Sub.IsEmpty then
    Exit;
  if Trim(Order_Sub.fieldbyname('SubId').AsString) <> '' then
  begin
   { with ADOTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from Contrac_Sub_MX where SubId='''+Trim(Order_Sub.fieldbyname('SubId').AsString)+'''');
      Open;
    end;
    if ADOTemp.IsEmpty then
    begin
      Application.MessageBox('�ѵ�������ɾ������!','��ʾ',0);
      Exit;
    end;    }
    if Application.MessageBox('ȷ��Ҫɾ��������', '��ʾ', 32 + 4) <> IDYES then
      Exit;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete YF_Money_CR where subID=''' + Trim(Order_Sub.fieldbyname('subID').AsString) + '''');
      sql.Add('delete Contract_Sub where SubId=''' + Trim(Order_Sub.fieldbyname('SubId').AsString) + '''');
      ExecSQL;
    end;
  end;
  Order_Sub.Delete;
end;

procedure TfrmClothContractInPut.FactoryNoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  if Trim(fMainID) <> '' then
  begin
    with ADOTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from YF_Money_CR A where exists(');
      sql.Add('select * from Contract_Sub_MX B inner join Contract_Sub C on B.SubId=C.SubId ');
      sql.Add(' where C.Mainid=''' + Trim(fMainID) + '''');
      sql.Add(' and B.MXID=A.YFTypeId)');
      Open;
    end;
    if ADOTemp.IsEmpty = False then
    begin
      Application.MessageBox('�Ѿ�����Ӧ������޸Ĺ�Ӧ��!', '��ʾ', 0);
      Exit;
    end;
  end;

  try
    frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application);
    with frmZdyAttachGYS do
    begin
      if ShowModal = 1 then
      begin
        FactoryNoName.Text := Trim(CDS_HZ.fieldbyname('ZDYName').AsString);
        FactoryNoName.Hint := Trim(CDS_HZ.fieldbyname('ZdyCode').AsString);
        LXTel.Text := Trim(CDS_HZ.fieldbyname('DEFstr2').AsString);
        LXPerson.Text := Trim(CDS_HZ.fieldbyname('DEFstr4').AsString);
      end;
    end;
  finally
    frmZdyAttachGYS.Free;
  end;
end;

procedure TfrmClothContractInPut.v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZdyAttachCP := TfrmZdyAttachCP.Create(Application);
    with frmZdyAttachCP do
    begin
      FType := '����';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('C_Code').Value := Trim(CDS_HZ.fieldbyname('ZdyCode').AsString);
        Self.Order_Sub.FieldByName('C_CodeName').Value := Trim(CDS_HZ.fieldbyname('ZdyName').AsString);
        Self.Order_Sub.FieldByName('CP_CodeName').Value := Trim(CDS_HZ.fieldbyname('CPhh').AsString);
   //     Self.Order_Sub.FieldByName('Color').Value:=Trim(CDS_HZ.fieldbyname('DEFstr3').AsString);
    //    Self.Order_Sub.FieldByName('SOrddefstr4').Value:=Trim(ClientDataSet1.fieldbyname('Note').AsString);
        Self.Order_Sub.Post;
      end;
    end;
  finally
    frmZdyAttachCP.Free;
  end;
  DoKc();
  self.tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmClothContractInPut.v1PRTMFPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'KZ';
      flagname := '���ص�λ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('KZUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.v1OrderQtyPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'MF';
      flagname := '�ŷ���λ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('MFUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.v1ClothQtyPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'PriceUnit';
      flagname := '�Ƽ۵�λ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('PriceUnit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'OrderUnit';
      flagname := '��λ';
      if ShowModal = 1 then
      begin
        Self.Order_Sub.Edit;
        Self.Order_Sub.FieldByName('C_Unit').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.FactoryNoNamePropertiesChange(Sender: TObject);
begin
  {if FXS=99 then
  begin
    PanZDY.Visible:=False;
    FXS:=0;
    Exit;
  end;
  ZDYHelp(FactoryNoName,'FactoryNo1Name');  }
end;

procedure TfrmClothContractInPut.CompanyNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'OrdDefStr2';
      flagname := '�跽';
      if ShowModal = 1 then
      begin
        FXS := 99;
        CompanyName.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothContractInPut.JHPlacePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin

  try
    frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application);
    with frmZdyAttachGYS do
    begin
      if ShowModal = 1 then
      begin
        JHPlace.Text := Trim(CDS_HZ.fieldbyname('zdyName').AsString);
      end;
    end;
  finally
    frmZdyAttachGYS.Free;
  end;

end;

procedure TfrmClothContractInPut.v1Column1PropertiesEditValueChanged(Sender: TObject);
var
  mvalue: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;

  if trim(mvalue) = '' then
    exit;

  if rightBstr(trim(mvalue), 1) <> '#' then
  begin
    mvalue := trim(mvalue) + '#';
  end;

  with Order_Sub do
  begin
    Edit;
    FieldByName('C_CodeName').Value := Trim(mvalue);
    Post;
  end;

  with ADOTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select *  from KH_Zdy_Attachment A ');
    sql.Add('where zdyName=' + quotedstr(trim(Order_Sub.fieldbyname('C_CodeName').AsString)));
    open;
  end;
  if ADOTemp.IsEmpty then
  begin
    application.MessageBox('Ʒ�������ڣ�', '��ʾ��Ϣ', 0);
    with Order_Sub do
    begin
      Edit;
      FieldByName('C_CodeName').Value := '';
      Post;
    end;
  end;

  self.tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmClothContractInPut.fromConNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    DoQuery(fromConNo.text);
  end;
end;

procedure TfrmClothContractInPut.v1ClothUnitPropertiesEditValueChanged(Sender: TObject);
var
  mvalue, fieldname: string;
begin
  if Trim(TcxTextEdit(Sender).EditingText) <> '' then
  begin
    mvalue := TcxTextEdit(Sender).EditingText;
  end
  else
  begin
    mvalue := '0';
  end;
  fieldname := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName;
  with Order_Sub do
  begin
    Edit;
    FieldByName(Trim(fieldname)).Value := mvalue;
    Post;
  end;
  with Order_Sub do
  begin
    Edit;
    FieldByName('money').Value := strtofloat(format('%.2f', [FieldByName('C_Qty').AsFloat * FieldByName('Price').AsFloat]));
    Post;
  end;
  self.tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmClothContractInPut.fromConNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmClothContractList_CG_help := TfrmClothContractList_CG_help.Create(Application);
    with frmClothContractList_CG_help do
    begin
      if ShowModal = 1 then
      begin
        fromConNO.Text := Trim(Order_Main.fieldbyname('ConNO').AsString);
      end;
    end;
  finally
    frmClothContractList_CG_help.Free;
  end;
  DoQuery(fromConNo.text);
end;

procedure TfrmClothContractInPut.v1Column6PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, fieldname: string;
begin
  if Trim(TcxTextEdit(Sender).EditingText) <> '' then
  begin
    mvalue := TcxTextEdit(Sender).EditingText;
  end
  else
  begin
    mvalue := '0';
  end;
  fieldname := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName;
  with Order_Sub do
  begin
    Edit;
    FieldByName(Trim(fieldname)).Value := mvalue;
    Post;
  end;
  with Order_Sub do
  begin
    Edit;
    FieldByName('T_money').Value := strtofloat(format('%.2f', [FieldByName('T_Qty').AsFloat * FieldByName('T_Price').AsFloat]));
    Post;
  end;
  self.tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmClothContractInPut.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  writeCXgrid(self.Caption, tv1);
end;

procedure TfrmClothContractInPut.FormCreate(Sender: TObject);
begin
  cxGrid1.Align := Alclient;
end;

procedure TfrmClothContractInPut.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  DoKc();
end;

end.