unit U_TatDRtInPut;

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, dxDateRanges, dxBarBuiltInMenu, U_BaseList,
  dxScrollbarAnnotations, dxSkinsCore, dxSkinsDefaultPainters, U_BaseInput,
  dxSkinWXI;

type
  TfrmTatDRtInPut = 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;
    SelectStk: TToolButton;
    ToolButton4: TToolButton;
    Label27: TLabel;
    QtyUnit: TComboBox;
    Tv1Column1: TcxGridDBColumn;
    Label3: TLabel;
    ToConNo: TBtnEditC;
    Label4: TLabel;
    ToConSId: TBtnEditC;
    Label5: TLabel;
    ToConMId: TBtnEditC;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    Label6: TLabel;
    SHAddress: TBtnEditC;
    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 SelectStkClick(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToConNoBtnDnClick(Sender: TObject);
    procedure ToConNoBtnUpClick(Sender: TObject);
    procedure SHAddressBtnUpClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    fuserName: string;
    procedure InitData();
    function SaveData(): Boolean;
    { Private declarations }
  public
    PState, CopyInt: Integer;
    FDRMID: string;
    { Public declarations }
  end;

var
  frmTatDRtInPut: TfrmTatDRtInPut;
  newh: hwnd;

implementation

uses
  U_DataLink, U_ZDYHelp, U_RTFun, U_CompanySel, U_TatPlanSel,
  U_TradeSalesContractSel, U_TatClothStkSel, U_globalVar;

{$R *.dfm}

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

end;

procedure TfrmTatDRtInPut.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 Tat_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);
  SCSHData(ADOQuery1, ScrollBox1, 2);

  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.* ');
    sql.Add(' from Tat_Cloth_DR_Main A');
    sql.Add(' where DRMID=''' + Trim(FDRMID) + ''' ');
    Open;
  end;
  SCSHData(ADOQuery1, ScrollBox1, 1);
  ToCoName.TxtCode := Trim(ADOQuery1.FieldByName('tocono').AsString);
end;

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

    exit;
  end;
end;

procedure TfrmTatDRtInPut.ToConNoBtnDnClick(Sender: TObject);
begin
  ToConNo.Text := '';
end;

procedure TfrmTatDRtInPut.ToConNoBtnUpClick(Sender: TObject);
begin
  try
    frmTradeSalesContractSel := TfrmTradeSalesContractSel.Create(Application);
    with frmTradeSalesContractSel do
    begin
      if ShowModal = 1 then
      begin
        with Self.Order_Sub do
        begin
          self.ToConNo.Text := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConNo').AsString);
          self.ToConMId.Text := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConMId').AsString);
          self.ToConSId.Text := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConSId').AsString);
          self.ToCoName.TxtCode := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('buyno').AsString);
          self.ToCoName.Text := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('BuyName').AsString);
          self.QtyUnit.Text := Trim(frmTradeSalesContractSel.CDS_1.fieldbyname('ConUnit').AsString);
        end;
      end;
    end;
  finally
    frmTradeSalesContractSel.Free;
  end;
end;

procedure TfrmTatDRtInPut.FormCreate(Sender: TObject);
var
  fFontSize: Integer;
begin
  if gFontSize >= 9 then
  begin
    fFontSize := gFontSize;
  end
  else
    fFontSize := 9;
  Self.Font.Size := fFontSize;
  self.Font.name := '微软雅黑'
end;

procedure TfrmTatDRtInPut.FormShow(Sender: TObject);
var
  fsj: string;
  fFontSize: Integer;
begin

  readCxGrid(trim(self.Caption), Tv1, '发货管理');

  InitData();
end;

function TfrmTatDRtInPut.SaveData(): Boolean;
var
  MaxMid, MaxSid: string;
begin
  try
    ADOCmd.Connection.BeginTrans;
    /////////////////              保存主表                /////////////////
    if Trim(FDRMID) = '' then
    begin
      if GetLSNo(ADOCmd, MaxMid, 'TDM', 'Tat_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 Tat_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;
      FieldByName('tocoNo').Value := Trim(ToCoName.TxtCode);
      RTSetsavedata(ADOCmd, 'Tat_Cloth_DR_Main', ScrollBox1, 1);
      FieldByName('DRMID').Value := Trim(MaxMid);
      FieldByName('Status').Value := '0';
      FieldByName('LX').Value := '梭织';
      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, 'TDS', 'Tat_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 Tat_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, 'Tat_Cloth_DR_Sub', 0);
          FieldByName('DRMID').Value := Trim(MaxMid);
          FieldByName('DRSID').Value := Trim(MaxSid);
          FieldByName('QtyUnit').Value := 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 TfrmTatDRtInPut.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 TfrmTatDRtInPut.ToolButton1Click(Sender: TObject);
var
  FQtyUnit, FFSubid: string;
begin
 {
  try
    frmTradePlanSel := TfrmTradePlanSel.Create(Application);
    with frmTradePlanSel do
    begin
      if ShowModal = 1 then
      begin
        while CDS_1.locate('SSel', true, []) do
        begin
//          Self.CustomerNoName.Text := Trim(frmTradePlanSel.Order_Main.fieldbyname('CustomerNoName').AsString);
//          FQtyUnit := Trim(frmTradePlanSel.Order_Main.fieldbyname('orderUnit').AsString);
//          if Self.Order_Sub.Locate('Subid', Trim(frmTradePlanSel.Order_Main.fieldbyname('Subid').AsString), []) = False then
          begin
            with Self.Order_Sub do
            begin
              Append;
              FieldByName('SCConNo').Value := Trim(frmTradePlanSel.CDS_1.fieldbyname('Orderno').AsString);
              FieldByName('SSConMainId').Value := frmTradePlanSel.CDS_1.fieldbyname('ConMainId').Value;
              FieldByName('SSConSubId').Value := frmTradePlanSel.CDS_1.fieldbyname('ConSubId').Value;
              FieldByName('MainId').Value := frmTradePlanSel.CDS_1.fieldbyname('MainId').Value;
              FieldByName('SubId').Value := frmTradePlanSel.CDS_1.fieldbyname('SubId').Value;
              FieldByName('PRTColor').Value := Trim(frmTradePlanSel.CDS_1.fieldbyname('P_Color').AsString);
              FieldByName('SPrtCode').Value := Trim(frmTradePlanSel.CDS_1.fieldbyname('P_Code').AsString);
              FieldByName('SPrtCodeName').Value := Trim(frmTradePlanSel.CDS_1.fieldbyname('P_CodeName').AsString);
              FieldByName('PRTHX').Value := Trim(frmTradePlanSel.CDS_1.fieldbyname('P_HX').AsString);
//              FieldByName('orderUnit').Value := JSQtyUnit.Text;
//              if Trim(JSQtyUnit.Text) = 'Kg' then
//              begin
//                FieldByName('sqqty').Value := frmTradePlanSel.Order_Main.fieldbyname('JYGW').Value;
//              end
//              else if Trim(JSQtyUnit.Text) = 'M' then
//              begin
//                FieldByName('sqqty').Value := frmTradePlanSel.Order_Main.fieldbyname('JYLen').Value;
//              end
//              else if Trim(JSQtyUnit.Text) = 'Y' then
//              begin
//                FieldByName('sqqty').Value := frmTradePlanSel.Order_Main.fieldbyname('JYYLen').Value;
//              end;

            end;
          end;
          CDS_1.Delete;
        end;
      end;
    end;
  finally
    frmTradePlanSel.Free;
  end;   }
end;

procedure TfrmTatDRtInPut.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 Tat_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 Tat_Cloth_DR_Sub where DRSID=''' + Trim(Order_Sub.fieldbyname('DRSID').AsString) + '''');
      ExecSQL;
    end;
  end;
  Order_Sub.Delete;
end;

procedure TfrmTatDRtInPut.SelectStkClick(Sender: TObject);
var
  FConMainId, FMPRTCode: string;
begin
  if ToConNo.Text = '' then
  begin
    Application.MessageBox('请先选择出到合同号！', '提示信息', MB_OK);
    ToConNo.SetFocus;
    exit;
  end;
  try
    frmTatClothStkSel := TfrmTatClothStkSel.Create(Application);
    with frmTatClothStkSel do
    begin
      FConSId := ToConSId.Text;
      if ShowModal = 1 then
      begin
        while CDS_2.locate('SSel', true, []) do
        begin
          with Self.Order_Sub do
          begin
            Append;
            FieldByName('ConNo').Value := frmTatClothStkSel.CDS_2.fieldbyname('ConNo').Value;
            FieldByName('ConMID').Value := frmTatClothStkSel.CDS_2.fieldbyname('ConMID').Value;
            FieldByName('ConSID').Value := frmTatClothStkSel.CDS_2.fieldbyname('ConSID').Value;
            FieldByName('OrderNo').Value := frmTatClothStkSel.CDS_2.fieldbyname('OrderNo').Value;
            FieldByName('C_Code').Value := frmTatClothStkSel.CDS_2.fieldbyname('C_Code').Value;
            FieldByName('C_Name').Value := frmTatClothStkSel.CDS_2.fieldbyname('C_Name').Value;
            FieldByName('C_Color').Value := frmTatClothStkSel.CDS_2.fieldbyname('C_Color').Value;
            FieldByName('Grade').Value := frmTatClothStkSel.CDS_2.fieldbyname('Grade').Value;
            FieldByName('BatchNo').Value := frmTatClothStkSel.CDS_2.fieldbyname('BatchNo').Value;
          end;
          CDS_2.Edit;
          CDS_2.fieldbyname('SSel').value := false;
        end;
      end;
    end;
  finally
    frmTatClothStkSel.Free;
  end;
end;

procedure TfrmTatDRtInPut.SHAddressBtnUpClick(Sender: TObject);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      MainType := '发货申请送货地址';
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmTatDRtInPut.ToolButton4Click(Sender: TObject);
begin
  WriteCxGrid(trim(self.Caption), Tv1, '发货管理')
end;

procedure TfrmTatDRtInPut.ToCoNameBtnUpClick(Sender: TObject);
begin

  try
    frmCompanySel := TfrmCompanySel.Create(Application);
    with frmCompanySel do
    begin
      if trim(OutType.Text) = '销售出库' then
        FCoType := '客户'
      else
        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 TfrmTatDRtInPut.ToCoNameBtnDnClick(Sender: TObject);
begin
  ToCoName.Text := '';
end;

end.

