unit U_ProductOrderNewList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls,
  cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  cxGrid, DBClient, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System,
  RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, cxButtonEdit,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, ComObj, dxBarBuiltInMenu,
  cxPC, cxContainer, cxImage, cxDBEdit, 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
  FdDy = record
    inc: integer; //客户端套接字句柄
    FDdys: string[32]; //客户端套接字
    FdDysName: string[32]; //客户端套接字
  end;

  TfrmProductOrderNewList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBDel: TToolButton;
    TBPrint: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    Label1: TLabel;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    Label3: TLabel;
    OrderNo: TEdit;
    TBExport: TToolButton;
    v1OrderNo: TcxGridDBColumn;
    v1OrdDate: TcxGridDBColumn;
    v1DeliveryDate: TcxGridDBColumn;
    v1ConNo: TcxGridDBColumn;
    Order_Main: TClientDataSet;
    RMXLSExport1: TRMXLSExport;
    v1CustomerNoName: TcxGridDBColumn;
    Label4: TLabel;
    CustomerNoName: TEdit;
    PopupMenu1: TPopupMenu;
    N2: TMenuItem;
    ToolButton1: TToolButton;
    Label8: TLabel;
    SYRName: TEdit;
    Label9: TLabel;
    ConNo: TEdit;
    Label10: TLabel;
    MPRTJiBenNote: TEdit;
    Label11: TLabel;
    OrdPerson2: TEdit;
    ToolButton2: TToolButton;
    ADOQueryPrint: TADOQuery;
    CDS_Print: TClientDataSet;
    ToolButton3: TToolButton;
    Panel4: TPanel;
    Label14: TLabel;
    Panel10: TPanel;
    Image2: TImage;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    v1OrdPerson2: TcxGridDBColumn;
    v1ZQty: TcxGridDBColumn;
    v1OrderUnit3: TcxGridDBColumn;
    cxSplitter1: TcxSplitter;
    ADOQuerySub: TADOQuery;
    DataSource2: TDataSource;
    v1SYRName: TcxGridDBColumn;
    v1MPRTJiBenNote: TcxGridDBColumn;
    v1MPRTTeBieNote: TcxGridDBColumn;
    v1MPRTBZNote: TcxGridDBColumn;
    v1MPRTSCTeBieNote: TcxGridDBColumn;
    TFJ: TToolButton;
    v1filler: TcxGridDBColumn;
    RMDBMain: TRMDBDataSet;
    RM1: TRMGridReport;
    ToolButton4: TToolButton;
    Tv1Column1: TcxGridDBColumn;
    ToolButton5: TToolButton;
    cxGrid3: TcxGrid;
    TV3: TcxGridDBTableView;
    cxGridLevel2: TcxGridLevel;
    OpenDialog1: TOpenDialog;
    N1: TMenuItem;
    TV3Column1: TcxGridDBColumn;
    TV3Column2: TcxGridDBColumn;
    TV3Column3: TcxGridDBColumn;
    TV3Column4: TcxGridDBColumn;
    TV3Column5: TcxGridDBColumn;
    TV3Column6: TcxGridDBColumn;
    TV3Column7: TcxGridDBColumn;
    ToolButton6: TToolButton;
    Tv1Column2: TcxGridDBColumn;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    Panel2: TPanel;
    Button2: TButton;
    Button3: TButton;
    Label2: TLabel;
    Edit1: TEdit;
    Tv1Column3: TcxGridDBColumn;
    Label5: TLabel;
    prtcode: TEdit;
    ADOQuery1: TADOQuery;
    cxTabControl1: TcxTabControl;
    TWC: TToolButton;
    Tnowc: TToolButton;
    Panel3: TPanel;
    cxGrid2: TcxGrid;
    TV2: TcxGridDBTableView;
    V2PRTCode: TcxGridDBColumn;
    V2PRTCodeName: TcxGridDBColumn;
    V2Column1: TcxGridDBColumn;
    V2PRTMF: TcxGridDBColumn;
    V2PRTKZ: TcxGridDBColumn;
    v1PRTColor: TcxGridDBColumn;
    cxGridDBColumn1: TcxGridDBColumn;
    TV2Column1: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1SOrddefstr2: TcxGridDBColumn;
    v1PRTOrderQty: TcxGridDBColumn;
    v1OrderUnit: TcxGridDBColumn;
    cxSOrdDefNote1: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    GroupBox1: TGroupBox;
    Picture4: TcxDBImage;
    ADOQueryImageYS: TADOQuery;
    DSImage: TDataSource;
    CDS_Sub: TClientDataSet;
    Label6: TLabel;
    ZOrderNo: TEdit;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    Panel5: TPanel;
    Label7: TLabel;
    Button4: TButton;
    Button5: TButton;
    Edit2: TEdit;
    Tv1Column4: TcxGridDBColumn;
    Cds_Print1: TClientDataSet;
    RMDBDataSet1: TRMDBDataSet;
    Cds_Print2: TClientDataSet;
    ADOQuery2: TADOQuery;
    RM2: TRMGridReport;
    TV2Column2: TcxGridDBColumn;
    TV3Column8: TcxGridDBColumn;
    TV2Column3: TcxGridDBColumn;
    ToolButton14: TToolButton;
    Tchk: TToolButton;
    Tnochk: TToolButton;
    ToolButton9: TToolButton;
    Tv1Column5: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBPrintClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure OrderNoChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure TBTPClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure Tv1StylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
    procedure v1DeliveryDateCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure OrderNoKeyPress(Sender: TObject; var Key: Char);
    procedure ConNoKeyPress(Sender: TObject; var Key: Char);
    procedure Panel10MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure TFJClick(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure TWCClick(Sender: TObject);
    procedure TnowcClick(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure TV2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure ToolButton12Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure ToolButton14Click(Sender: TObject);
    procedure TchkClick(Sender: TObject);
    procedure TnochkClick(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
  private
    DQdate: TDateTime;
    procedure InitGrid();
    procedure InitForm();
    function DelData(): Boolean;
    procedure InitGridFH();
    procedure InitSub();
    procedure CJEWMS();
    procedure CJEWM(FMainid: string; FSubid: string);
    procedure InitImageYS(fwbid: string);
    procedure SetStatus();
    { Private declarations }
  public
    FFInt, FCloth: Integer;
                                                               
    { Public declarations }
  end;

var
  frmProductOrderNewList: TfrmProductOrderNewList;
  dFdDy: array[0..120] of FdDy;

implementation

uses
  U_DataLink, U_OrderInPut, U_Fun, U_LabelList, U_LabelListts, U_FjList_RZ,
  U_BpkclistZSD;

{$R *.dfm}
procedure TfrmProductOrderNewList.SetStatus();
begin
  Tchk.Visible := false;
  tNochk.Visible := false;
  TWC.Visible := false;
  Tnowc.Visible := false;
  TBEdit.Enabled := false;
  TBDel.Enabled := false;
  case cxTabControl1.TabIndex of
    0:
      begin
        TBEdit.Enabled := true;
        TBDel.Enabled := true;
        Tchk.Visible := true;

      end;
    1:
      begin

        tNochk.Visible := true;
        TWC.Visible := true;
      end;
    2:
      begin

        TNOWC.Visible := true;
      end;

  end;

end;

procedure TfrmProductOrderNewList.InitSub();
begin
//  ADOQuerySub.Close;
  if Order_Main.IsEmpty then
    exit;
  with ADOQuerySub do
  begin
    close;
    sql.Clear;
    sql.Add('select stuff((select '',''+ (select isnull(X.DRCKName,'''')  from CP_InOut X where X.subid=A.subid for xml path(''''))),1,1,'''' ) as prtKW');
    sql.Add(',prttxm=(select    DEFstr2 from  KH_Zdy_CPCB  X   where X.cbType=''CPCBCM'' and X.ZdyName=A.PRTCodeName  and  X.Zdycode=A.PRTCode and X.defstr1=a.SOrddefstr5)');
    sql.Add(' ,A.*  from JYOrder_sub A   ');
    sql.Add('where A.mainID =' + quotedstr((Order_Main.fieldbyname('mainID').AsString)));
//    ShowMessage(sql.text);
    open;
  end;
  SCreateCDS20(ADOQuerySub, CDS_Sub);
  SInitCDSData20(ADOQuerySub, CDS_Sub);
end;

procedure TfrmProductOrderNewList.FormDestroy(Sender: TObject);
begin
  frmProductOrderNewList := nil;
end;

procedure TfrmProductOrderNewList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TfrmProductOrderNewList.FormCreate(Sender: TObject);
begin
  cxgrid1.Align := alClient;
  DQdate := SGetServerDate(ADOQueryTemp);
end;

procedure TfrmProductOrderNewList.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('指示单列表FF', Tv1, '生产指示单管理');
end;

procedure TfrmProductOrderNewList.InitGrid();
var
  sqlwhere: string;
begin
  sqlwhere := '';
  if (Trim(DParameters1) <> '高权限') then   //  and  (Trim(DParameters1) <> '合并权限')
  begin
    sqlwhere := sqlwhere + ' and Filler=''' + Trim(DName) + '''';
  end;
  if cxTabControl1.TabIndex < 2 then
  begin
    sqlwhere := sqlwhere + ' and  isnull(A.status,''0'')=''' + inttostr(cxTabControl1.TabIndex) + '''';
  end;
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      sql.add('exec P_View_Order :begdate,:enddate,:WSql');
      Parameters.ParamByName('WSql').Value := sqlwhere;
      Parameters.ParamByName('begdate').Value := FormatDateTime('yyyy-MM-dd', BegDate.DateTime);
      Parameters.ParamByName('enddate').Value := FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1);
//      ShowMessage(sql.text);
      ExecSQL;
      Open;
    end;
    SCreateCDS20(ADOQueryMain, Order_Main);
    SInitCDSData20(ADOQueryMain, Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmProductOrderNewList.InitGridFH();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      sql.Add('exec Order_QryList :MainId,:WSql');
      Parameters.ParamByName('WSql').Value := ' and FillTime>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)) + '''' + ' and FillTime<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.DateTime + 1)) + '''';
      Open;
    end;
    SCreateCDS20(ADOQueryMain, Order_Main);
    SInitCDSData20(ADOQueryMain, Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmProductOrderNewList.InitForm();
begin
  ReadCxGrid('指示单列表FF', Tv1, '生产指示单管理');
  BegDate.DateTime := SGetServerDate10(ADOQueryTemp) - 15;
  EndDate.DateTime := SGetServerDate10(ADOQueryTemp);
  InitGrid();
end;

procedure TfrmProductOrderNewList.TBFindClick(Sender: TObject);
begin
  if ADOQueryMain.Active = False then
    Exit;
  SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
end;

procedure TfrmProductOrderNewList.TBEditClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    Exit;

  try
    frmOrderInPut := TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState := 1;
      FMainId := Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      FOrderNo := Trim(Self.Order_Main.fieldbyname('OrderNo').AsString);
      if ShowModal = 1 then
      begin
        InitGrid();
      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmProductOrderNewList.TBDelClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    Exit;
{  if Trim(Order_Main.fieldbyname('Filler').AsString)<>Trim(DName) then
  begin
    Application.MessageBox('不能操作他人的数据!','提示',0);
    Exit;
  end;   }

  if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  if DelData() then
  begin
    Order_Main.Delete;
  end;
  InitGrid();
end;

function TfrmProductOrderNewList.DelData(): Boolean;
begin
  try
    Result := false;
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete JYOrder_Main where MainId=''' + Trim(Order_Main.fieldbyname('MainId').AsString) + '''');
      sql.Add('delete JYOrder_Sub where MainId=''' + Trim(Order_Main.fieldbyname('MainId').AsString) + '''');
      sql.Add('delete TP_File where WBID=''' + Trim(Order_Main.fieldbyname('Mainid').AsString) + ''' and TFType=''EWM'' ');
      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('指示单删除')));
      sql.Add(',' + quotedstr(trim('指示单号：' + trim(Order_Main.FieldByName('OrderNO').AsString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      ExecSQL;
    end;
    {with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from JYOrder_Sub where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
      Open;
      if IsEmpty then
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('delete JYOrder_Main where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
          ExecSQL;
        end;
      end;
    end;
    if Trim(Order_Main.fieldbyname('SubId').AsString)='' then
    begin
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('delete JYOrder_Main where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
        ExecSQL;
      end;
    end;   }
    ADOQueryCmd.Connection.CommitTrans;
    Result := True;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result := False;
    Application.MessageBox('数据删除异常！', '提示', 0);
  end;
end;

procedure TfrmProductOrderNewList.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    Exit;
  SelExportData(Tv1, ADOQueryMain, '生产指示单列表');
end;

procedure TfrmProductOrderNewList.TBPrintClick(Sender: TObject);
var
  fPrintFile: string;
  Porderno: string;
  i, j: Integer;
begin
  if Order_Main.IsEmpty then
    Exit;
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\包装指示单.rmf';
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.*,B.*, ColorCount=(select isnull(Count(*),0) from JYOrder_Sub where MainId=A.MainId),  ');
    sql.add('ZQty=(select sum(PRTOrderQty) from JYOrder_Sub where MainId=A.MainId),');
    sql.Add('YSImage=(select  FilesOther from TP_File X where   X.WBID=YS.YSId), ');
    sql.Add('PrtImage=(select Top 1 FilesOther from TP_File X where X.WBID=B.PRTCode) ');
    sql.Add(' from JYOrder_Main A inner join JYOrder_Sub B on A.MainId=B.MainId ');
    sql.Add('  inner join KH_YS YS on  YS.code=B.prtcode and YS.CYYS=B.prtcolor ');
    sql.Add(' Where A.MainId=''' + Trim(Order_Main.fieldbyname('MainId').AsString) + '''');
    sql.Add(' order by B.PRTCode,B.PRTCodeName,B.subID ');
//    showmessage(sql.Text);
    Open;
  end;
  SCreateCDS20(ADOQueryPrint, CDS_Print);
  SInitCDSData20(ADOQueryPrint, CDS_Print);
  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\包装指示单.rmf'), '提示', 0);
    exit;
  end;
//  Panel4.Visible:=True;
  //Button1.Click;
end;

procedure TfrmProductOrderNewList.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmProductOrderNewList.TBAddClick(Sender: TObject);
var
  maxno: string;
begin
  try
    frmOrderInPut := TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState := 0;
      FMainId := '';
      if ShowModal = 1 then
      begin
        InitGrid();
      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmProductOrderNewList.OrderNoChange(Sender: TObject);
begin
  if ADOQueryMain.Active = False then
    Exit;
  SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
end;

procedure TfrmProductOrderNewList.FormShow(Sender: TObject);
begin
  InitForm();
  if Trim(DParameters2) = '合并权限' then
  begin
    ToolButton7.Visible := True;
    ToolButton8.Visible := True;
  end;
end;

procedure TfrmProductOrderNewList.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  if ToolButton1.Visible = False then
    Exit;
  ToolButton1.Click;
end;

procedure TfrmProductOrderNewList.TBTPClick(Sender: TObject);
var
  FQty, FQty1, FMxQty, FPQty, FMxQtyS, FPQtyS: string;
begin
end;

procedure TfrmProductOrderNewList.CheckBox1Click(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmProductOrderNewList.CheckBox2Click(Sender: TObject);
begin
  TBRafresh.Click;
end;

procedure TfrmProductOrderNewList.Tv1StylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
var
  id, id10: Integer;
begin
  {try
    if Tv1.GroupedItemCount=0 then
    begin
      Id:=Tv1.GetColumnByFieldName('DeliveryDate').Index-tv1.GroupedItemCount;
      Id10:=Tv1.GetColumnByFieldName('SubStatus').Index-tv1.GroupedItemCount;
      if Trim(VarToStr(ARecord.Values[id]))='' then Exit;
      if Id<0 then Exit;
      if ARecord.Values[id10]='完成' then exit;
      if (ARecord.Values[id]-DQdate)>=4 then Exit;
      if ((ARecord.Values[id]-DQdate)>=0) and ((ARecord.Values[id]-DQdate)<4) then
        AStyle:=DataLink_.QHuangSe
      else
      if ARecord.Values[id]-DQdate<0 then
      begin
        AStyle:=DataLink_OrderManage.FenHongS;
      end;
    end else
    begin

    end;
  except
  end; }
end;

procedure TfrmProductOrderNewList.v1DeliveryDateCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
 { Id:=TV1.GetColumnByFieldName('DeliveryDate').Index;//;-TV1.GroupedItemCount;
  Id10:=TV1.GetColumnByFieldName('SubStatus').Index;
  if Id<0 then Exit;
  if AViewInfo.GridRecord.Values[Id10]='完成' then Exit;
  if AViewInfo.GridRecord.Values[Id]-SGetServerDate(ADOQueryTemp)>=4 then Exit;
  if ((AViewInfo.GridRecord.Values[id]-SGetServerDate10(ADOQueryTemp))>=0) and ((AViewInfo.GridRecord.Values[id]-SGetServerDate(ADOQueryTemp))<4) then
    ACanvas.Brush.Color:=clYellow
  else
  if (AViewInfo.GridRecord.Values[id])-(SGetServerDate10(ADOQueryTemp)<0) then
  begin
    ACanvas.Brush.Color:=clRed;
  end;
  begin
    ACanvas.Brush.Color:=clRed;
  end else
  if AViewInfo.GridRecord.Values[Id]='Purple' then
  begin
    ACanvas.Brush.Color:=clPurple;
  end else
  if AViewInfo.GridRecord.Values[Id]='Olive' then
  begin
    ACanvas.Brush.Color:=clOlive;
  end else
  if AViewInfo.GridRecord.Values[Id]='Teal' then
  begin
    ACanvas.Brush.Color:=clTeal;
  end else
  if AViewInfo.GridRecord.Values[Id]='Background' then
  begin
    ACanvas.Brush.Color:=clBackground;
  end;   }
end;

procedure TfrmProductOrderNewList.N1Click(Sender: TObject);
//var
//  fPrintFile: string;
//  Porderno: string;
begin
  SelOKNo(Order_Main, false);
//  if Order_Main.IsEmpty then
//    Exit;
//  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\生产指示单10.rmf';
//  SDofilter(ADOQueryMain, ' OrderNoM=''' + Trim(Order_Main.fieldbyname('OrderNoM').AsString) + '''');
//  SCreateCDS20(ADOQueryMain, Order_Main);
//  SInitCDSData20(ADOQueryMain, Order_Main);
//  Porderno := Trim(Order_Main.fieldbyname('OrderNoM').AsString);
//  if FileExists(fPrintFile) then
//  begin
//    //RMVariables['begindate']:=begindate.DateTime;
//    //RMVariables['enddate']:=enddate.DateTime;
//    //RMVariables['printtime']:=Now;
//    //RMVariables['printer']:=Trim(gUserName);
//    RM1.LoadFromFile(fPrintFile);
//    RM1.ShowReport;
//  end
//  else
//  begin
//    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\生产指示单10.rmf'), '提示', 0);
//  end;
//  SDofilter(ADOQueryMain, '');
//  SCreateCDS20(ADOQueryMain, Order_Main);
//  SInitCDSData20(ADOQueryMain, Order_Main);
//  Order_Main.Locate('ordernoM', Porderno, []);
end;

procedure TfrmProductOrderNewList.N2Click(Sender: TObject);
//var
//  fPrintFile: string;
//  Porderno: string;
begin
  SelOKNo(Order_Main, True);
//  if Order_Main.IsEmpty then
//    Exit;
//  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\生产指示单.rmf';
//  SDofilter(ADOQueryMain, ' OrderNoM=''' + Trim(Order_Main.fieldbyname('OrderNoM').AsString) + '''');
//  SCreateCDS20(ADOQueryMain, Order_Main);
//  SInitCDSData20(ADOQueryMain, Order_Main);
//  Porderno := Trim(Order_Main.fieldbyname('OrderNoM').AsString);
//  if FileExists(fPrintFile) then
//  begin
//    //RMVariables['begindate']:=begindate.DateTime;
//    //RMVariables['enddate']:=enddate.DateTime;
//    //RMVariables['printtime']:=Now;
//    //RMVariables['printer']:=Trim(gUserName);
//    RM1.LoadFromFile(fPrintFile);
//    RM1.ShowReport;
//  end
//  else
//  begin
//    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\生产指示单.rmf'), '提示', 0);
//  end;
//  SDofilter(ADOQueryMain, '');
//  SCreateCDS20(ADOQueryMain, Order_Main);
//  SInitCDSData20(ADOQueryMain, Order_Main);
//  Order_Main.Locate('ordernoM', Porderno, []);
end;

procedure TfrmProductOrderNewList.ToolButton1Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    Exit;
  try
    frmOrderInPut := TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState := 1;
      FMainId := Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      ToolBar2.Visible := False;
      TBSave.Visible := False;
      ScrollBox1.Enabled := False;
      Tv1.OptionsSelection.CellSelect := False;
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton2Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    Exit;
  try
    frmOrderInPut := TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState := 1;
      CopyInt := 99;
      FMainId := Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton3Click(Sender: TObject);
begin
  ModalResult := 1;
end;

procedure TfrmProductOrderNewList.OrderNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    if Length(OrderNo.Text) < 3 then
      Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Filtered := False;
        Close;
        sql.Clear;
        sql.add('exec P_View_Order :begdate,:enddate,:WSql');
        if Trim(DParameters1) <> '高权限' then
        begin
          Parameters.ParamByName('WSql').Value := ' and Filler=''' + Trim(DName) + '''';
        end;
        begin
          Parameters.ParamByName('WSql').Value := ' and orderno like ''' + '%' + Trim(OrderNo.Text) + '%' + '''';
        end;
        Parameters.ParamByName('begdate').Value := '2014-01-01';
        Parameters.ParamByName('enddate').Value := '2064-01-01';
        ExecSQL;
        Open;
      end;
      SCreateCDS20(ADOQueryMain, Order_Main);
      SInitCDSData20(ADOQueryMain, Order_Main);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
end;

procedure TfrmProductOrderNewList.ConNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    if Length(conno.Text) < 3 then
      Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Filtered := False;
        Close;
        sql.Clear;
        sql.add('exec P_View_Order :begdate,:enddate,:WSql');
        if Trim(DParameters1) <> '高权限' then
        begin
          Parameters.ParamByName('WSql').Value := ' and A.Filler=''' + Trim(DName) + '''';
        end;
        begin
          Parameters.ParamByName('WSql').Value := ' and conno like ''' + '%' + Trim(conno.Text) + '%' + '''';
        end;
        Parameters.ParamByName('begdate').Value := '1899-01-01';
        Parameters.ParamByName('enddate').Value := '2050-01-01';
        ExecSQL;
        Open;
      end;
      SCreateCDS20(ADOQueryMain, Order_Main);
      SInitCDSData20(ADOQueryMain, Order_Main);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
end;

procedure TfrmProductOrderNewList.Panel10MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  TWinControl(Panel4).Perform(WM_SYSCOMMAND, $F012, 0);
end;

procedure TfrmProductOrderNewList.Button1Click(Sender: TObject);
var
  fPrintFile: string;
  Porderno, LBName, SYRName: string;
  i, j: Integer;
  OrderKg: Double;
begin
  if Order_Main.IsEmpty then
    Exit;
  LBName := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(LBName) + '.rmf';
  if Trim(Order_Main.fieldbyname('SYRName').AsString) = '' then
  begin
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select Top 1 B.ZdyName SYRName from JYOrderCon_Main A');
      sql.Add(' left join KH_Zdy B on A.SYRName=B.Note');
      sql.Add(' where A.ConNo=''' + Trim(Order_Main.fieldbyname('ConNo').AsString) + '''');
      Open;
    end;
    SYRName := Trim(ADOQueryTemp.fieldbyname('SYRName').AsString);
  end
  else
  begin
    SYRName := Trim(Order_Main.fieldbyname('SYRName').AsString);
  end;

  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.Add('exec F_Get_Print_Order ');
    sql.add('@mainID=' + quotedstr(trim(Order_Main.fieldbyname('MainID').AsString)));
    Open;
  end;
  SCreateCDS20(ADOQueryPrint, CDS_Print);
  SInitCDSData20(ADOQueryPrint, CDS_Print);

  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RMVariables['SYRName'] := Trim(SYRName);
    RM1.ShowReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\' + Trim(LBName) + '.rmf'), '提示', 0);
  end;
end;

procedure TfrmProductOrderNewList.Image2Click(Sender: TObject);
begin
  Panel4.Visible := False;
end;

procedure TfrmProductOrderNewList.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  InitSub();
end;

procedure TfrmProductOrderNewList.TFJClick(Sender: TObject);
begin
  if order_Main.IsEmpty then
    exit;
  frmFjList_RZ := TfrmFjList_RZ.create(self);
  with frmFjList_RZ do
  begin
    fkeyNo := trim(order_Main.fieldbyname('Mainid').AsString);
    ftype := 'ZSDFJ';
    if showmodal = 1 then
    begin

    end;
    ;
  end;
  frmFjList_RZ.Free;
end;

procedure TfrmProductOrderNewList.ToolButton4Click(Sender: TObject);
var
  FMainid: string;
  fPrintFile: string;
  Porderno: string;
  i, j: Integer;
begin
  if Order_Main.IsEmpty then
    Exit;
  if Order_Main.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete TBSubID where DName=''' + Trim(DCode) + '''');
    ExecSQL;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('SELECT * FROM TBSubID where 1=2 ');
    open;
  end;
  FMainid := '';
  Order_Main.DisableControls;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with Order_Main do
    begin
      First;
      while not Eof do
      begin
        if Fieldbyname('Ssel').AsBoolean then
        begin
          if FMainid = '' then
          begin
            FMainid := Trim(Order_Main.fieldbyname('CustomerNoName').AsString);
          end
          else
          begin
            if Trim(Order_Main.fieldbyname('CustomerNoName').AsString) <> FMainid then
            begin
              application.MessageBox('选择的不是同一个客户，不能一起打印！', '提示信息', 0);
              ADOQueryCmd.Connection.RollbackTrans;
              EnableControls;
              exit;
            end;
          end;
          ADOQueryCmd.append;
          ADOQueryCmd.fieldbyname('SubId').Value := Trim(Order_Main.fieldbyname('Mainid').AsString);
          ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode);
          ADOQueryCmd.post;
        end;
        Next;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
  except
    ADOQueryCmd.Connection.RollbackTrans;
  end;
  order_main.EnableControls;

  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\包装指示单合并.rmf';
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.Add('exec P_Print_OrderHZ_MX ''' + trim(DCode) + '''');
    Open;
  end;
  SCreateCDS20(ADOQueryPrint, CDS_Print);
  SInitCDSData20(ADOQueryPrint, CDS_Print);
  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\包装指示单合并.rmf'), '提示', 0);
    exit;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton5Click(Sender: TObject);
var
  excelApp, WorkBook: Variant;
  i, j, k, ExcelRowCount: integer;
  maxId, M1, M2, M3: string;
  FMessage: string;
begin
  try
    excelApp := CreateOleObject('Excel.Application');
    openDialog1.Filter := '*.CSV;*.xls';
    if opendialog1.Execute then
    begin
      WorkBook := excelApp.WorkBooks.Open(OpenDialog1.FileName);
    end
    else
      exit;
    excelApp.Visible := false;
    ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
  except
    application.MessageBox('加载EXCEL错误！', '错误信息', MB_ICONERROR);
    exit;
  end;
  try
    k := 0;
    for i := 1 to 100 do
    begin
      //遍历界面绑定界面中显示的字段和名称
      for j := 0 to Tv3.ColumnCount - 1 do
      begin
        if trim(Tv3.Columns[j].Caption) = '总成品数量' then
          continue;
        if trim(Tv3.Columns[j].Caption) = '样品类型' then
          continue;
        if trim(Tv3.Columns[j].Caption) = '选择' then
          continue;
        if trim(Tv3.Columns[j].Caption) = '录入人' then
          continue;
        if trim(Tv3.Columns[j].Caption) = '录入时间' then
          continue;
        if trim(Tv3.Columns[j].Caption) = '修改人' then
          continue;
        if trim(Tv3.Columns[j].Caption) = '修改时间' then
          continue;
        if trim(excelApp.Cells[1, i].value) = trim(Tv3.Columns[j].Caption) then
        begin
          dFdDy[k].inc := i;
          dFdDy[k].FDdys := trim(Tv3.Columns[j].DataBinding.FieldName);
          dFdDy[k].FdDysName := trim(Tv3.Columns[j].Caption);
        end;
      end;
      k := k + 1;
    end;
  except
  end;

  with ADOQueryCmd do
  begin
    close;
    sql.Clear;
    sql.Add('delete jyorder_main_DR ');
    execsql;
  end;
//  ShowMessage(IntToStr(k));
  ADOQueryCmd.Connection.BeginTrans;
  try
    for i := 2 to ExcelRowCount do
    begin
      with ADOQueryCmd do
      begin
        close;
        sql.Clear;
        sql.Add('select * from jyorder_main_DR where 1=2');
        open;
      end;
      ADOQueryCmd.Append;
      for j := 0 to k - 1 do
      begin
        if trim(dFdDy[j].FDdys) = '' then
          continue;
        M1 := dFdDy[j].FDdys;   //字段名称
        M2 := inttostr(dFdDy[j].inc);   //当前列
        M3 := excelApp.Cells[i, dFdDy[j].inc].Value;  //当前单元格内容
        ADOQueryCmd.fieldbyname(dFdDy[j].FDdys).Value := excelApp.Cells[i, dFdDy[j].inc].Value;
      end;

      ADOQueryCmd.Post;

    end;

    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('exec P_Get_Order_DR ''' + trim(DName) + ''' ');
      ExecSQL;
    end;

    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.add('select * from jyorder_sub where subid in (select subid from jyorder_Main_DR)');
      Open;
    end;

    with ADOQueryTemp do
    begin
      first;
      while not Eof do
      begin
        CJEWM(ADOQueryTemp.fieldbyname('Mainid').AsString, ADOQueryTemp.fieldbyname('subid').AsString);
        Next;
      end;
    end;

    WorkBook.Close;
    excelApp.Quit;
    excelApp := Unassigned;
    WorkBook := Unassigned;

    ADOQueryCmd.Connection.CommitTrans;
    Application.MessageBox('导入成功!', '提示', 0);
    InitGrid();
  except
    WorkBook.Close;
    excelApp.Quit;
    excelApp := Unassigned;
    WorkBook := Unassigned;
    ADOQueryCmd.Connection.RollbackTrans;
  end;
end;

procedure TfrmProductOrderNewList.CJEWM(FMainid: string; FSubid: string);
var
  Txt, fImagePath, maxNo: string;
  Moudle: THandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  try
    Moudle := LoadLibrary('MakeQRBarcode.dll');
    @Makebar := GetProcAddress(Moudle, 'Make');
    @Mixtext := GetProcAddress(Moudle, 'MixText');
    Txt := Trim(FSubid);
    fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp';
    if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then
      CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil);
    if FileExists(fImagePath) then
      DeleteFile(fImagePath);
    Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3);

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from TP_File ');
      sql.Add('where TFID=' + quotedstr(trim(Txt)));
      sql.Add('and TFType=''EWM''');
      open;
      if isempty then
      begin
        append;
        fieldbyname('TFID').Value := trim(Txt);
        fieldbyname('WBID').Value := trim(FMainid);
        fieldbyname('TFType').Value := 'EWM';
        fieldbyname('FillTime').Value := SGetServerDateTime(ADOQuery1);
        tblobfield(FieldByName('Filesother')).LoadFromFile(fImagePath);
        post;
      end;
    end;
  except
    application.MessageBox('条形码生成失败！', '提示信息', MB_ICONERROR);
    exit;
  end;
end;

procedure TfrmProductOrderNewList.CJEWMS();
var
  Txt, fImagePath, maxNo: string;
  Moudle: THandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  try
    Moudle := LoadLibrary('MakeQRBarcode.dll');
    @Makebar := GetProcAddress(Moudle, 'Make');
    @Mixtext := GetProcAddress(Moudle, 'MixText');
    Txt := Trim(CDS_Print.fieldbyname('prtsub').AsString);
    fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp';
    if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then
      CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil);
    if FileExists(fImagePath) then
      DeleteFile(fImagePath);
    Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3);

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from TP_File ');
      sql.Add('where TFID=' + quotedstr(trim(Txt)));
      sql.Add('and TFType=''EWM''');
      open;
      if isempty then
      begin
        append;
        fieldbyname('TFID').Value := trim(Txt);
        fieldbyname('WBID').Value := trim(CDS_Print.fieldbyname('ZOrderNo').AsString);
        fieldbyname('TFType').Value := 'EWM';
        fieldbyname('FillTime').Value := SGetServerDateTime(ADOQuery1);
        tblobfield(FieldByName('Filesother')).LoadFromFile(fImagePath);
        post;
      end;
    end;
  except
    application.MessageBox('条形码生成失败！', '提示信息', MB_ICONERROR);
    CDS_Print.EnableControls;
    exit;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton7Click(Sender: TObject);
var
  maxno: string;
begin
  if Order_Main.IsEmpty then
    Exit;

  if Order_Main.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('没有选择数据', '提示', 0);
    Exit;
  end;

  if Application.MessageBox('确定要合并订单吗？', '提示', 32 + 4) <> IDYES then
    Exit;

  if GetLSNo(ADOQueryCmd, maxno, 'Z', 'JYOrder_Main', 3, 1) = False then
  begin
    Application.MessageBox('取最大号失败!', '提示', 0);
    Exit;
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete TBSubID where DName=''' + Trim(DCode) + '''');
    ExecSQL;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('SELECT * FROM TBSubID where 1=2 ');
    open;
  end;

  Order_Main.DisableControls;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with Order_Main do
    begin
      First;
      while not Eof do
      begin
        if Fieldbyname('Ssel').AsBoolean then
        begin
          ADOQueryCmd.append;
          ADOQueryCmd.fieldbyname('SubId').Value := Trim(Order_Main.fieldbyname('mainid').AsString);
          ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode);
          ADOQueryCmd.post;

          with Order_Main do
          begin
            Edit;
            FieldByName('ZOrderNo').Value := maxno;
            Post;
          end;
        end;

        Next;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
  except
    ADOQueryCmd.Connection.RollbackTrans;
  end;
  Order_Main.EnableControls;

  try
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('update jyorder_main set ZOrderNo=''' + Trim(maxno) + ''' ');
      sql.Add('WHERE EXISTS(select SubId from TBSubID X where X.SubId=jyorder_main.Mainid and X.DName=''' + Trim(DCode) + ''' )');
//      ShowMessage(sql.Text);
      ExecSQL;
    end;
    application.MessageBox('订单合并成功！', '提示信息');
//    TBRafresh.Click;
  except
    application.MessageBox('订单合并失败！', '提示信息', 0);
  end;
end;

procedure TfrmProductOrderNewList.ToolButton8Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    exit;
  if Order_Main.FieldByName('zOrderNo').AsString = '' then
    Exit;
  if Application.MessageBox('确定要取消合并吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  JYOrder_Main SET ZOrderNo=null ');
      sql.Add('where zOrderNo=' + quotedstr(trim(Order_Main.fieldbyname('zOrderNo').AsString)));

      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('订单取消合并')));
      sql.Add(',' + quotedstr(trim('订单号：' + trim(Order_Main.FieldByName('orderNO').AsString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      execsql;
    end;
    application.MessageBox('订单取消合并成功！', '提示信息');
    TBRafresh.Click;
  except
    application.MessageBox('订单取消合并失败！', '提示信息', 0);
  end;
end;

procedure TfrmProductOrderNewList.ToolButton6Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    Exit;
  if Order_Main.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  panel2.Visible := True;
end;

procedure TfrmProductOrderNewList.Button2Click(Sender: TObject);
var
  FMainid: string;
  fPrintFile: string;
  Porderno: string;
  i, j: Integer;
  Txt, fImagePath: string;
  Moudle: THandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    SQL.Add('select * from  KH_Zdy_CPCB where cbtype=''CPCBGY'' and zdycode like ''%' + trim(edit1.text) + '%'' ');
    Open;
  end;

  if ADOQueryTemp.IsEmpty then
  begin
    if Application.MessageBox('未输入工艺，是否打印？', '提示', 32 + 4) <> IDYES then
      Exit;
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete TBSubID where DName=''' + Trim(DCode) + '''');
    ExecSQL;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('SELECT * FROM TBSubID where 1=2 ');
    open;
  end;
  FMainid := '';
  Order_Main.DisableControls;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with Order_Main do
    begin
      First;
      while not Eof do
      begin
        if Fieldbyname('Ssel').AsBoolean then
        begin
          if FMainid = '' then
          begin
            FMainid := Trim(Order_Main.fieldbyname('CustomerNoName').AsString);
          end
          else
          begin
            if Trim(Order_Main.fieldbyname('CustomerNoName').AsString) <> FMainid then
            begin
              application.MessageBox('选择的不是同一个客户，不能一起打印！', '提示信息', 0);
              ADOQueryCmd.Connection.RollbackTrans;
              EnableControls;
              exit;
            end;
          end;
          ADOQueryCmd.append;
          ADOQueryCmd.fieldbyname('SubId').Value := Trim(Order_Main.fieldbyname('Mainid').AsString);
          ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode);
          ADOQueryCmd.post;
        end;
        Next;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
  except
    ADOQueryCmd.Connection.RollbackTrans;
  end;
  order_main.EnableControls;

  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\生产指示单.rmf';

  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('exec P_Print_OrderSCHZ_copy1 ''' + trim(DCode) + '''');
    sql.Add(',''' + trim(Edit1.Text) + ''' ');
//    showmessage(sql.Text);
    Open;
  end;
  if ADOQuery1.RecordCount < 1 then
  begin
    application.MessageBox('该产品已备！', '提示信息', 0);
  end
  else
  begin
    with ADOQueryPrint do
    begin
      Close;
      sql.Clear;
      sql.Add('exec P_Print_OrderSCHZ_copy1 ''' + trim(DCode) + '''');
      sql.Add(',''' + trim(Edit1.Text) + ''' ');
//    showmessage(sql.Text);
      Open;
    end;
    SCreateCDS20(ADOQueryPrint, CDS_Print);
    SInitCDSData20(ADOQueryPrint, CDS_Print);
    with CDS_Print do
    begin
      First;
      while not Eof do
      begin
        with ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from TP_File ');
          sql.Add('where TFID=' + quotedstr(trim(CDS_Print.fieldbyname('PRTsub').AsString)));
          sql.Add('and TFType=''EWM''');
          open;
          if isempty then
          begin
            CJEWMS();
          end;
        end;
//        CJEWMS();
        Next;
      end;
    end;
    with ADOQueryPrint do
    begin
      Close;
      sql.Clear;
      sql.Add('exec P_Print_OrderSCHZ_copy1_copy1 ''' + trim(DCode) + '''');
      sql.Add(',''' + trim(Edit1.Text) + ''' ');
//    showmessage(sql.Text);
      Open;
    end;
    SCreateCDS20(ADOQueryPrint, CDS_Print);
    SInitCDSData20(ADOQueryPrint, CDS_Print);
    if FileExists(fPrintFile) then
    begin
      RM1.LoadFromFile(fPrintFile);
      RM1.ShowReport;
//      RM1.PrintReport;
    end
    else
    begin
      Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\生产指示单.rmf'), '提示', 0);
      exit;
    end;
  end;
end;

procedure TfrmProductOrderNewList.Button3Click(Sender: TObject);
begin
  Panel2.Visible := false;
end;

procedure TfrmProductOrderNewList.TWCClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  JYOrder_Main SET status=''9'' ');
      sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('订单完成')));
      sql.Add(',' + quotedstr(trim('订单号：' + trim(Order_Main.FieldByName('OrderNO').AsString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      execsql;
    end;
    application.MessageBox('已完成！', '提示信息', 0);
    TBRafresh.Click;
  except
    application.MessageBox('未完成！', '提示信息', 0);
  end;
end;

procedure TfrmProductOrderNewList.TnowcClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  JYOrder_Main SET status=''2'' ');
      sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('订单撤销完成')));
      sql.Add(',' + quotedstr(trim('订单号：' + trim(Order_Main.FieldByName('orderNO').AsString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      execsql;
    end;
    application.MessageBox('订单撤销完成成功！', '提示信息');
    TBRafresh.Click;
  except
    application.MessageBox('订单撤销完成失败！', '提示信息', 0);
  end;
end;

procedure TfrmProductOrderNewList.cxTabControl1Change(Sender: TObject);
begin
  SetStatus();
  InitGrid();
end;

procedure TfrmProductOrderNewList.TV2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
//   ADOQuerySub.Close;
  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from KH_YS ');
    sql.Add('where code =' + quotedstr((CDS_Sub.fieldbyname('PRTCode').AsString)));
    sql.Add('and  CYYS =' + quotedstr((CDS_Sub.fieldbyname('PRTColor').AsString)));
//    ShowMessage(sql.text);
    open;
  end;
  initImageYS(ADOQueryTemp.fieldbyname('YSId').AsString);
end;

procedure TfrmProductOrderNewList.InitImageYS(fwbid: string);
begin
  ADOQueryImageYS.close;
  if fwbid = '' then
    exit;
  with ADOQueryImageYS do
  begin
    close;
    sql.Clear;
    sql.Add('select * from TP_File A');
    sql.Add('where WBID=' + quotedstr(trim(fwbid)));
//    sql.Add('where WBid=''' + ADOQuerySub.fieldbyname('subid').asstring + '''');
    open;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton12Click(Sender: TObject);
begin
//  if Trim(Order_Main.fieldbyname('LBName').AsString) = '' then
//  begin
//    Exit;
//  end;
  panel5.Visible := True;
end;

procedure TfrmProductOrderNewList.Button4Click(Sender: TObject);
var
  FMainid: string;
  fPrintFile: string;
  Porderno: string;
  i, j: Integer;
begin

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete TBSubID where DName=''' + Trim(DCode) + '''');
    ExecSQL;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('SELECT * FROM TBSubID where 1=2 ');
    open;
  end;
  FMainid := '';
  Order_Main.DisableControls;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with Order_Main do
    begin
      First;
      while not Eof do
      begin
        if Fieldbyname('Ssel').AsBoolean then
        begin
          if FMainid = '' then
          begin
            FMainid := Trim(Order_Main.fieldbyname('CustomerNoName').AsString);
          end
          else
          begin
            if Trim(Order_Main.fieldbyname('CustomerNoName').AsString) <> FMainid then
            begin
              application.MessageBox('选择的不是同一个客户，不能一起打印！', '提示信息', 0);
              ADOQueryCmd.Connection.RollbackTrans;
              EnableControls;
              exit;
            end;
          end;
          ADOQueryCmd.append;
          ADOQueryCmd.fieldbyname('SubId').Value := Trim(Order_Main.fieldbyname('Mainid').AsString);
          ADOQueryCmd.fieldbyname('Dname').Value := Trim(DCode);
          ADOQueryCmd.post;
        end;
        Next;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
  except
    ADOQueryCmd.Connection.RollbackTrans;
  end;
  order_main.EnableControls;

  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.Add('exec P_Print_OrderBQdy_ZSD ''' + trim(DCode) + '''');
    sql.Add(',''' + trim(Edit2.Text) + ''' ');
//    showmessage(sql.Text);
    Open;
  end;
//  SCreateCDS20(ADOQueryPrint, CDS_Print2);
  SCreateCDS20(ADOQueryPrint, CDS_Print1);
  SInitCDSData20(ADOQueryPrint, CDS_Print1);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + CDS_Print1.fieldbyname('LBName').AsString + '.rmf';

  if FileExists(fPrintFile) then
  begin
    RM2.LoadFromFile(fPrintFile);
//    RM2.DefaultCopies := StrToInt(CDS_Print1.fieldbyname('PRTOrderQty').AsString);
    RM2.ShowReport;
//    RM2.PrintReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\' + Order_Main.fieldbyname('LBName').AsString), '提示', 0);
    exit;
  end;

//  try
//    with CDS_Print2 do
//    begin
//      DisableControls;
//      first;
//      while not eof do
//      begin
//        CDS_Print1.EmptyDataSet;
//        CDS_Print1.Append;
//        for i := 0 to FieldCount - 1 do
//        begin
//          CDS_Print1.fields[i].value := CDS_Print2.Fields[i].Value;
//        end;
//        CDS_Print1.Post;
//
//        if (trim(CDS_Print1.fieldbyname('subid').AsString) <> '') then
//        begin
//          if FileExists(fPrintFile) then
//          begin
//            RM2.LoadFromFile(fPrintFile);
//            RM2.DefaultCopies := StrToInt(CDS_Print1.fieldbyname('PRTOrderQty').AsString);
//            RM2.ShowReport;
////            RM1.PrintReport;
//          end
//          else
//          begin
//            Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\' + Order_Main.fieldbyname('LBName').AsString), '提示', 0);
//            exit;
//          end;
//
//        end;
//
//        Next;
//      end;
//      EnableControls;
//    end;
//
//  finally
//
//  end;

end;

procedure TfrmProductOrderNewList.Button5Click(Sender: TObject);
begin
  Panel5.Visible := false;
end;

procedure TfrmProductOrderNewList.ToolButton11Click(Sender: TObject);
begin
  try
    frmLabelList := TfrmLabelList.Create(Application);
    with frmLabelList do
    begin
      if ShowModal = 1 then
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('Update JYOrder_Main Set LBName=''' + Trim(ADOQueryLabel.fieldbyname('labelCaption').AsString) + '''');
          sql.Add(' where Mainid=''' + Trim(Order_Main.fieldbyname('Mainid').AsString) + '''');
          ExecSQL;
        end;
        TBRafresh.Click;
      end;
    end;
  finally
    frmLabelList.Free;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton13Click(Sender: TObject);
begin
  try
    frmLabelListts := TfrmLabelListts.Create(Application);
    with frmLabelListts do
    begin
      if ShowModal = 1 then
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('Update JYOrder_Main Set LBName=''' + Trim(ADOQueryLabel.fieldbyname('labelCaption').AsString) + '''');
          sql.Add(' where Mainid=''' + Trim(Order_Main.fieldbyname('Mainid').AsString) + '''');
          ExecSQL;
        end;
//        TBRafresh.Click;
      end;
    end;
  finally
    frmLabelListts.Free;
  end;
end;

procedure TfrmProductOrderNewList.ToolButton14Click(Sender: TObject);
begin
  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('exec P_Do_JYCRK  ''' + Trim(Order_Main.fieldbyname('Mainid').AsString) + '''');
//    sql.Add(',''' + trim(Edit2.Text) + ''' ');
//    showmessage(sql.Text);
    Open;
  end;

end;

procedure TfrmProductOrderNewList.TchkClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  JYOrder_Main SET status=''2'' ');
      sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('订单审核')));
      sql.Add(',' + quotedstr(trim('订单号：' + trim(Order_Main.FieldByName('OrderNO').AsString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      execsql;
    end;
    application.MessageBox('已审核！', '提示信息', 0);
    TBRafresh.Click;
  except
    application.MessageBox('未审核！', '提示信息', 0);
  end;
  with ADOQuery1 do
  begin
    Close;
    sql.Clear;
    sql.Add('exec P_Do_MLCK  ''' + Trim(Order_Main.fieldbyname('Mainid').AsString) + '''');     //辅料出库
    sql.add(',@DName=' + quotedstr(Trim(DCode)));
    ExecSQL;
  end;
end;

procedure TfrmProductOrderNewList.TnochkClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  JYOrder_Main SET status=''0'' ');
      sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('订单撤销审核')));
      sql.Add(',' + quotedstr(trim('订单号：' + trim(Order_Main.FieldByName('orderNO').AsString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      execsql;
    end;
    application.MessageBox('订单撤销审核成功！', '提示信息');
    TBRafresh.Click;
  except
    application.MessageBox('订单撤销审核失败！', '提示信息', 0);
  end;
end;

procedure TfrmProductOrderNewList.ToolButton9Click(Sender: TObject);
begin
  try
    frmBpkclistZSD := TfrmBpkclistZSD.Create(Application);
    with frmBpkclistZSD do
    begin
      FMainid := Trim(Order_Main.fieldbyname('Mainid').AsString);
      if ShowModal = 1 then
      begin
//        InitGrid();
      end;
    end;
  finally
    frmBpkclistZSD.Free;
  end;
end;

procedure TfrmProductOrderNewList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if AViewInfo.GridRecord.Values[tv1.GetColumnByFieldName('MLKCStatus').Index] = '2' then
    ACanvas.Brush.Color := clRed;
end;

end.

