unit U_TradeDeliveryRequestInPut;

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, dxSkinBasic, 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, dxSkinOffice2016Colorful, dxSkinOffice2016Dark,
  dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray,
  dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic,
  dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust,
  dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine,
  dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark,
  dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinWXI,
  dxSkinXmas2008Blue, dxScrollbarAnnotations;

type
  TfrmTradeDeliveryRequestInPut = 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;
    v1Column1: TcxGridDBColumn;
    cxStyleRepository1: TcxStyleRepository;
    dazi1: TcxStyle;
    v1Column5: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    Label2: TLabel;
    DlyDate: TDateTimePicker;
    Tv1Column2: TcxGridDBColumn;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    Label27: TLabel;
    QtyUnit: TComboBox;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    cxgrdbclmnTv1Column1: TcxGridDBColumn;
    Tv1Column1: TcxGridDBColumn;
    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
  frmTradeDeliveryRequestInPut: TfrmTradeDeliveryRequestInPut;
  newh: hwnd;

implementation

uses
  U_DataLink, U_ZDYHelp, U_RTFun, U_TradePlanSel, U_TradeSalesContractSel,
  U_TradeClothTotalStkList_Sel, U_CompanySel;

{$R *.dfm}

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

end;

procedure TfrmTradeDeliveryRequestInPut.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 Trade_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 Trade_Cloth_DR_Main A');
    sql.Add(' where DRMID=''' + Trim(FDRMID) + ''' ');
    Open;
  end;
  SCSHData(ADOQuery1, ScrollBox1, 1);
  ToCoName.TxtCode := ADOQuery1.FieldByName('ToCoNo').asstring;

end;

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

    exit;
  end;
end;

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

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

  InitData();
end;

function TfrmTradeDeliveryRequestInPut.SaveData(): Boolean;
var
  MaxMid, MaxSid: string;
begin
  try
    ADOCmd.Connection.BeginTrans;
    /////////////////              ��������                /////////////////
    if Trim(FDRMID) = '' then
    begin
      if GetLSNo(ADOCmd, MaxMid, 'DM', 'Trade_Cloth_DR_Main', 4, 2) = False then
        raise Exception.Create('ȡ����ʧ�ܣ�');
    end
    else
    begin
      MaxMid := Trim(FDRMID);
    end;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      SQL.Add('select * from Trade_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, 'Trade_Cloth_DR_Main', ScrollBox1, 1);
      FieldByName('DRMID').Value := Trim(MaxMid);
      FieldByName('ToCoNo').Value := Trim(ToCoName.TxtCode);
      FieldByName('Status').Value := '9';
      FieldByName('Chker').Value := Trim(DName);

      FieldByName('Chker').Value := Trim(DName);

      FieldByName('ChkTime').Value := SGetServerDateTime(ADOTemp);
      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', 'Trade_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 Trade_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, 'Trade_Cloth_DR_Sub', 0);
          FieldByName('DRMID').Value := Trim(MaxMid);
          FieldByName('DRSID').Value := Trim(MaxSid);
          FieldByName('QtyUnit').Value := Order_Sub.fieldbyname('QtyUnit').Value;
          FieldByName('MainId').Value := Order_Sub.fieldbyname('MainId').Value;
          FieldByName('SubId').Value := Order_Sub.fieldbyname('SubId').Value;
          FieldByName('ConNO').Value := Order_Sub.fieldbyname('ConNO').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 TfrmTradeDeliveryRequestInPut.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 TfrmTradeDeliveryRequestInPut.ToolButton1Click(Sender: TObject);
begin
  if trim(OutType.text) = '' then
  begin
    Application.MessageBox('����ѡ��������ͣ�', '��ʾ', 0);
    Exit;
  end;

  try
    frmTradeClothTotalStkList_Sel := TfrmTradeClothTotalStkList_Sel.Create(Application);
    with frmTradeClothTotalStkList_Sel do
    begin
      frmTradeClothTotalStkList_Sel.LenUnit.text := self.QtyUnit.text;
      if trim(self.OutType.text) = '���ϳ���' then
        frmTradeClothTotalStkList_Sel.Grade.text := '����';
      if trim(self.OutType.text) = '���۳���' then
        frmTradeClothTotalStkList_Sel.Grade.text := '��Ʒ';

      FAuthority := self.FAuthority;
      if ShowModal = 1 then
      begin

        while CDS_1.locate('SSel', true, []) do
        begin
          with Self.Order_Sub do
          begin
            Append;

            //FieldByName('ConNo').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('ConNo').AsString);
            FieldByName('ConMID').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('ConMID').AsString);
            FieldByName('ConSID').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('ConSID').AsString);

            FieldByName('C_Code').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('C_Code').AsString);
            FieldByName('C_Name').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('C_Name').AsString);

            FieldByName('C_Width').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('C_Width').AsString);
            FieldByName('C_Color').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('C_Color').AsString);

            FieldByName('C_GramWeight').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('C_GramWeight').AsString);

            FieldByName('MAINID').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('MAINID').AsString);

            FieldByName('SUBID').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('SUBID').AsString);

            FieldByName('ORDERNO').Value := Trim(frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('ORDERNO').AsString);

            FieldByName('Piece').Value := frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('KCPS').AsInteger;
            ToCoName.Text := frmTradeClothTotalStkList_Sel.CDS_1.fieldbyname('BuyName').AsString;
          end;
          CDS_1.Edit;
          CDS_1.fieldbyname('SSel').value := false;
        end;

      end;
    end;
  finally
    frmTradeClothTotalStkList_Sel.Free;
  end;

end;

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

procedure TfrmTradeDeliveryRequestInPut.ToolButton3Click(Sender: TObject);
var
  FConMainId, FMPRTCode: string;
begin

  if trim(OutType.text) = '' then
  begin
    Application.MessageBox('����ѡ��������ͣ�', '��ʾ', 0);
    Exit;
  end;

  try
    frmTradeSalesContractSel := TfrmTradeSalesContractSel.Create(Application);
    with frmTradeSalesContractSel do
    begin
      FAuthority := self.FAuthority;

      frmTradeSalesContractSel.FLenUnit := self.QtyUnit.text;
      if trim(self.OutType.text) = '���ϳ���' then
        frmTradeSalesContractSel.FGrade := '����';
      if trim(self.OutType.text) = '���۳���' then
        frmTradeSalesContractSel.FGrade := '��Ʒ';

      if ShowModal = 1 then
      begin
        frmTradeSalesContractSel.CDS_1.DisableControls;
        while CDS_1.locate('SSel', true, []) do
        begin
          if not self.Order_Sub.locate('ConSId', trim(frmTradeSalesContractSel.CDS_1.Fieldbyname('ConSId').AsString), []) then
          begin
            with Self.Order_Sub do
            begin
              Append;
              ToCoName.text := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('BuyName').AsString);
              ToCoName.TxtCode := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('BuyNo').AsString);

              FieldByName('ConNo').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConNo').AsString);
              FieldByName('ConMID').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConMID').AsString);
              FieldByName('ConSID').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConSID').AsString);

              FieldByName('C_Code').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('C_Code').AsString);
              FieldByName('C_Name').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('C_Name').AsString);

              FieldByName('C_Width').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('C_Width').AsString);
              FieldByName('QtyUnit').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConUnit').AsString);
              FieldByName('C_Color').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('C_Color').AsString);

              FieldByName('C_KnitGramWeight').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('C_KnitGramWeight').AsString);
              FieldByName('C_GramWeight').Value := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('C_GramWeight').AsString);

              FieldByName('Piece').Value := frmTradeSalesContractSel.CDS_1.fieldbyname('KCPS').AsInteger;
            end;
          end;

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

        frmTradeSalesContractSel.CDS_1.EnableControls;

      end;
    end;
  finally
    frmTradeSalesContractSel.Free;
  end;
end;

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

procedure TfrmTradeDeliveryRequestInPut.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 TfrmTradeDeliveryRequestInPut.ToCoNameBtnDnClick(Sender: TObject);
begin
  ToCoName.Text := '';
end;

end.