unit U_KnitDRtInPut;

interface

uses
  Windows, Messages, SysUtils, 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, cxTextEdit, cxMaskEdit, cxButtonEdit,
  StdCtrls, ToolWin, DBClient, ADODB, ExtCtrls, BtnEdit, cxCalendar, StrUtils,
  cxDropDownEdit, cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels,
  cxLookAndFeelPainters, cxNavigator, dxSkinsCore, dxSkinsDefaultPainters,
  dxDateRanges, dxBarBuiltInMenu, U_BaseList;

type
  TfrmKnitDRtInPut = class(Tform)
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    ScrollBox1: TScrollBox;
    ToolBar2: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    ADOTemp: TADOQuery;
    ADOCmd: TADOQuery;
    DataSource1: TDataSource;
    Order_Sub: TClientDataSet;
    ADOQuery1: TADOQuery;
    cxGridPopupMenu2: TcxGridPopupMenu;
    Label1: TLabel;
    OutType: TComboBox;
    Note: TEdit;
    Label12: TLabel;
    Label11: TLabel;
    ToCoName: TBtnEditC;
    cv1Column3: TcxGridDBColumn;
    cxStyleRepository1: TcxStyleRepository;
    dazi1: TcxStyle;
    v1Column5: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    Label2: TLabel;
    DlyDate: TDateTimePicker;
    Tv1Column2: TcxGridDBColumn;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    Label27: TLabel;
    QtyUnit: TComboBox;
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToCoNameBtnUpClick(Sender: TObject);
    procedure ToCoNameBtnDnClick(Sender: TObject);
    procedure JSQtyUnitChange(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
  private
    fuserName: string;
    procedure InitData();
    function SaveData(): Boolean;
    { Private declarations }
  public
    PState, CopyInt: Integer;
    FDRMID: string;
    FAuthority: string;
    { Public declarations }
  end;

var
  frmKnitDRtInPut: TfrmKnitDRtInPut;
  newh: hwnd;

implementation

uses
  U_DataLink, U_ZDYHelp, U_RTFun, U_CompanySel, U_KnitPlanSel,
  U_KnitClothTotalStkList_Sel;
//  U_TradePlanSel, U_TradeSalesContractSel,

{$R *.dfm}

procedure TfrmKnitDRtInPut.TBCloseClick(Sender: TObject);
begin
  Close;

end;

procedure TfrmKnitDRtInPut.InitData();
var
  fsj: string;
begin
  if PState = 0 then
  begin
    DlyDate.DateTime := strtodatetime(Trim(FormatDateTime('yyyy-MM-dd', Now)));

  end;
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    sql.Add(' select A.*  ');
    sql.Add(' from Knit_Cloth_DR_Sub A');
    if PState = 1 then
    begin
      sql.Add('where DRMID=''' + Trim(FDRMID) + '''');
    end;
    if PState = 0 then
    begin
      sql.Add(' where 1<>1');
    end;
    Open;
  end;
  SCreateCDS(ADOQuery1, Order_Sub);
  SInitCDSData(ADOQuery1, Order_Sub);

  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.* ');
    sql.Add(' from Knit_Cloth_DR_Main A');
    sql.Add(' where DRMID=''' + Trim(FDRMID) + ''' ');
    Open;
  end;
  SCSHData(ADOQuery1, ScrollBox1, 1);

end;

procedure TfrmKnitDRtInPut.JSQtyUnitChange(Sender: TObject);
begin
  if not Order_Sub.IsEmpty then
  begin

    exit;
  end;
end;

procedure TfrmKnitDRtInPut.FormShow(Sender: TObject);
var
  fsj: string;
begin

  readCxGrid(trim(self.Caption), Tv1, '��������');

  InitData();
end;

function TfrmKnitDRtInPut.SaveData(): Boolean;
var
  MaxMid, MaxSid: string;
begin
  try
    ADOCmd.Connection.BeginTrans;
    /////////////////              ��������                /////////////////
    if Trim(FDRMID) = '' then
    begin
      if GetLSNo(ADOCmd, MaxMid, 'DM', 'Knit_Cloth_DR_Main', 4, 1) = False then
        raise Exception.Create('ȡ����ʧ�ܣ�');
    end
    else
    begin
      MaxMid := Trim(FDRMID);
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      SQL.Add('select * from Knit_Cloth_DR_Main where DRMID=''' + Trim(MaxMid) + '''');
      Open;
    end;
    with ADOCmd do
    begin
      if Trim(FDRMID) = '' then
      begin
        Append;
        FieldByName('FillID').Value := Trim(DCode);
        FieldByName('Filler').Value := Trim(DName);
      end
      else
      begin
        Edit;
        FieldByName('EditID').Value := Trim(DCode);
        FieldByName('Editer').Value := Trim(DName);
        FieldByName('EditTime').Value := SGetServerDateTime(ADOTemp);
      end;
      RTSetsavedata(ADOCmd, 'Knit_Cloth_DR_Main', ScrollBox1, 1);
      FieldByName('DRMID').Value := Trim(MaxMid);
      FieldByName('Status').Value := '0';
      Post;
    end;
  /////////////////              ��������                /////////////////
  ///
  /////////////////              �����ӱ�                /////////////////
    Order_Sub.DisableControls;
    with Order_Sub do
    begin
      First;
      while not Eof do
      begin
        if Trim(Order_Sub.fieldbyname('DRSID').AsString) = '' then
        begin
          if GetLSNo(ADOCmd, MaxSid, 'DS', 'Knit_Cloth_DR_Sub', 4, 1) = False then
            raise Exception.Create('ȡ����ˮ��ʧ�ܣ�');
        end
        else
        begin
          MaxSid := Trim(Order_Sub.fieldbyname('DRSID').AsString);
        end;

        with ADOCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add('select * from Knit_Cloth_DR_Sub ');
          sql.Add(' where DRMID=''' + Trim(MaxMid) + '''');
          sql.Add(' and DRSID=''' + Trim(MaxSid) + '''');
          Open;
          if ADOCmd.IsEmpty then
          begin
            Append;
          end
          else
          begin
            Edit;
          end;
          RTSetSaveDataCDS(ADOCmd, Tv1, Order_Sub, 'Knit_Cloth_DR_Sub', 0);
          FieldByName('DRMID').Value := Trim(MaxMid);
          FieldByName('DRSID').Value := Trim(MaxSid);
          FieldByName('QtyUnit').Value := Trim(QtyUnit.text);
          FieldByName('MainId').Value := Order_Sub.fieldbyname('MainId').Value;
          FieldByName('SubId').Value := Order_Sub.fieldbyname('SubId').Value;
          FieldByName('ConMId').Value := Order_Sub.fieldbyname('ConMId').Value;
          FieldByName('ConSId').Value := Order_Sub.fieldbyname('ConSId').Value;
          Post;
        end;
        Order_Sub.Edit;
        Order_Sub.FieldByName('DRSID').Value := Trim(MaxSid);
        Next;
      end;
    end;
    Order_Sub.EnableControls;
   /////////////////              �����ӱ�                /////////////////
    FDRMID := Trim(MaxMid);
    ADOCmd.Connection.CommitTrans;
    Result := True;
  except
    ADOCmd.Connection.RollbackTrans;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '��ʾ��Ϣ', 0);
    Result := False;
  end;
end;

procedure TfrmKnitDRtInPut.TBSaveClick(Sender: TObject);
var
  Freal: Double;
begin
  ToolBar1.SetFocus;

  if Trim(OutType.Text) = '' then
  begin
    Application.MessageBox('�������Ͳ���Ϊ�գ�', '��ʾ', 0);
    Exit;
  end;
  if Trim(ToCoName.Text) = '' then
  begin
    Application.MessageBox('�ջ�λ����Ϊ�գ�', '��ʾ', 0);
    Exit;
  end;
  if (Order_Sub.Locate('Piece', null, [])) and (Order_Sub.Locate('Qty', null, [])) = True then
  begin
    Application.MessageBox('ϸ������ƥ������������ȫΪ�գ�', '��ʾ', 0);
    Exit;
  end;
  if SaveData() then
  begin
    Application.MessageBox('����ɹ���', '��ʾ', 0);
    ModalResult := 1;
  end;
end;

procedure TfrmKnitDRtInPut.ToolButton1Click(Sender: TObject);
begin
  if trim(QtyUnit.text) = '' then
  begin
    Application.MessageBox('����ѡ��������λ��', '��ʾ', 0);
    Exit;
  end;

  try
    frmKnitClothTotalStkList_Sel := TfrmKnitClothTotalStkList_Sel.Create(Application);
    with frmKnitClothTotalStkList_Sel do
    begin
      if Self.FAuthority <> '����' then
        FAuthority := '����ҵ��';
      frmKnitClothTotalStkList_Sel.LenUnit.text := self.QtyUnit.text;
      if ShowModal = 1 then
      begin
        while CDS_1.locate('SSel', true, []) do
        begin

          with Self.Order_Sub do
          begin
            Append;
            FieldByName('C_Code').Value := Trim(frmKnitClothTotalStkList_Sel.CDS_1.fieldbyname('C_Code').AsString);
            FieldByName('C_Name').Value := Trim(frmKnitClothTotalStkList_Sel.CDS_1.fieldbyname('C_Name').AsString);
            FieldByName('Piece').Value := frmKnitClothTotalStkList_Sel.CDS_1.fieldbyname('Piece').AsInteger;
            if Trim(frmKnitClothTotalStkList_Sel.CDS_1.fieldbyname('LenUnit').AsString) = 'M' then
            begin
              FieldByName('Qty').Value := frmKnitClothTotalStkList_Sel.CDS_1.fieldbyname('Meter').AsFloat;
            end
            else
            begin
              FieldByName('Qty').Value := frmKnitClothTotalStkList_Sel.CDS_1.fieldbyname('Yardage').AsFloat;
            end;

          end;

          CDS_1.Edit;
          CDS_1.fieldbyname('SSel').value := false;
        end;
      end;
    end;
  finally
    frmKnitClothTotalStkList_Sel.Free;
  end;
end;

procedure TfrmKnitDRtInPut.ToolButton2Click(Sender: TObject);
begin
  if Order_Sub.IsEmpty then
    Exit;
  if Trim(Order_Sub.fieldbyname('SSId').AsString) <> '' then
  begin
    with ADOTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from Knit_Cloth_DR_Sub where SSId=''' + Trim(Order_Sub.fieldbyname('SSId').AsString) + '''');
      sql.add(' and isnull(FHPS,0)>0');
      Open;
    end;
    if ADOTemp.IsEmpty = False 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 Knit_Cloth_DR_Sub where SSId=''' + Trim(Order_Sub.fieldbyname('SSId').AsString) + '''');
      ExecSQL;
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('Update Knit_Cloth_DR_Main Set ');
      sql.Add('SQPSHZ=(select Sum(SQPS) from Knit_Cloth_DR_Sub A where A.DRMID=Knit_Cloth_DR_Main.DRMID)');
      sql.Add('where DRMID=''' + Trim(FDRMID) + '''');
      ExecSQL;
    end;
  end;
  Order_Sub.Delete;
end;

procedure TfrmKnitDRtInPut.ToolButton3Click(Sender: TObject);
var
  FConMainId, FMPRTCode: string;
begin
  try
    frmKnitPlanSel := TfrmKnitPlanSel.Create(Application);
    with frmKnitPlanSel do
    begin
      if ShowModal = 1 then
      begin
        while CDS_1.locate('SSel', true, []) do
        begin
//          if not self.Order_Sub.locate('ConSId', trim(frmKnitPlanSel.CDS_1.Fieldbyname('ConSId').AsString), []) then
//          begin
          with Self.Order_Sub do
          begin
            Append;
            FieldByName('ConNo').Value := Trim(frmKnitPlanSel.CDS_1.fieldbyname('ConNo').AsString);
            FieldByName('OrderNo').Value := Trim(frmKnitPlanSel.CDS_1.fieldbyname('OrderNo').AsString);
            FieldByName('MainID').Value := Trim(frmKnitPlanSel.CDS_1.fieldbyname('MainID').AsString);
            FieldByName('SubID').Value := frmKnitPlanSel.CDS_1.fieldbyname('SubID').Value;
            FieldByName('C_Code').Value := frmKnitPlanSel.CDS_1.fieldbyname('C_Code').Value;
            FieldByName('C_Name').Value := frmKnitPlanSel.CDS_1.fieldbyname('C_Name').Value;
            FieldByName('Piece').Value := frmKnitPlanSel.CDS_1.fieldbyname('SumPiece').Value;
            FieldByName('Qty').Value := frmKnitPlanSel.CDS_1.fieldbyname('SumStkGrossWeight').Value;
          end;
//          end;
          CDS_1.Edit;
          CDS_1.fieldbyname('SSel').value := false;
        end;
      end;
    end;
  finally
    frmKnitPlanSel.Free;
  end;
end;

procedure TfrmKnitDRtInPut.ToolButton4Click(Sender: TObject);
begin
  WriteCxGrid(trim(self.Caption), Tv1, '��������')
end;

procedure TfrmKnitDRtInPut.ToCoNameBtnUpClick(Sender: TObject);
begin

  try
    frmCompanySel := TfrmCompanySel.Create(Application);
    with frmCompanySel do
    begin
      FCoType := '�ͻ�';
      if ShowModal = 1 then
      begin
        self.ToCoName.TxtCode := Trim(frmCompanySel.CDS_1.fieldbyname('CoCode').AsString);
        self.ToCoName.Text := Trim(frmCompanySel.CDS_1.fieldbyname('CoAbbrName').AsString);
      end;
    end;

  finally
    frmCompanySel.Free;
  end;

end;

procedure TfrmKnitDRtInPut.ToCoNameBtnDnClick(Sender: TObject);
begin
  ToCoName.Text := '';
end;

end.