⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sal_enter_passsalecontract.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Sal_Enter_PassSaleContract;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Check, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, DBCtrls, jpeg, ExtPrintReport;

Type
  TFrm_Sal_Enter_PassSaleContract = Class(TFrm_Base_Check)
    DBText2: TDBText;
    Label2: TLabel;
    AdoQry_HeadcustomerCode: TStringField;
    AdoQry_HeadcustomerName: TStringField;
    AdoQry_Headslcno: TStringField;
    AdoQry_Headslcdate: TDateTimeField;
    AdoQry_HeadItemCode: TStringField;
    AdoQry_HeadItemName: TStringField;
    AdoQry_HeadItemflag: TStringField;
    AdoQry_HeadstArtdate: TDateTimeField;
    AdoQry_Headenddate: TDateTimeField;
    AdoQry_HeadstArtqty: TFloatField;
    AdoQry_Headendqty: TFloatField;
    AdoQry_HeadnotaxPrice: TFloatField;
    AdoQry_HeadtaxPrice: TFloatField;
    AdoQry_HeadreferencedPrice: TIntegerField;
    AdoQry_Headlinestatus: TIntegerField;
    AdoQry_HeadslclineremArk: TStringField;
    AdoQry_Headcheckflag: TIntegerField;
    AdoQry_Headtaxrate: TStringField;
    AdoQry_Headcustomerflag: TStringField;
    AdoQry_Headslclineno: TIntegerField;
    procedure FormDestroy(Sender: TObject);
    procedure Act_CheckExecute(Sender: TObject);
    procedure Act_CancelCheckExecute(Sender: TObject);
    procedure DBGridEhDblClick(Sender: TObject);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure AdoQry_HeadBeforeInsert(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure Act_ExcelExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    Flag:Boolean;
    { Private declarations }
  public
    IsPriceRequestPass : Integer; //销售价格是否需要批准 0:不需要 1:需要
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    { Public declarations }
  end;

var  Frm_Sal_Enter_PassSaleContract: TFrm_Sal_Enter_PassSaleContract;
     i:integer;
implementation

uses Sys_Global,Sal_Enter_PassSaleContract_C;

{$R *.DFM}

procedure TFrm_Sal_Enter_PassSaleContract.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
var sqltext,customerCode:string;
    linestatus:integer;
begin
  Application.ProcessMessages;
  customerCode:='fgfhhghghghghhgjjhjh';
  linestatus:=1000;
  Inherited;
  ExecuteSql(AdoQry_Tmp,'Select * from Sa_SalParam'
                       +' where SalParamCode='+QuotedStr('IsPriceRequestPass'),0);
  IsPriceRequestPass := AdoQry_Tmp.fieldbyname('SalParamValueN').AsInteger;                       
  If IsPriceRequestPass = 0 then 
  begin
    Act_Check.Enabled := False;
    Act_CancelCheck.Enabled := False;
    Act_Modify.Enabled := False;
  end;
  try
    with TFrm_Sal_Enter_PassSaleContract_C.Create(self) do
    begin
      AdoQry_tmp.Connection:=dbconnect;
      showmodal;
      if  modalResult=mrok then
      begin
        customerCode:=iifValue(Trim(edt_CustomerCode.text)<>'',Trim(edt_CustomerCode.text),'fgfhhghghghghhgjjhjh');
        linestatus:=cmb_Status.Itemindex;
      end
    end;
  finally
    Frm_Sal_Enter_PassSaleContract_C.Free;
  end;
  sqltext:='select sa_SaleContract.customerCode,       '
           +'        customer.customerName,             '
           +'        sa_SaleContract.customerCode+'' ''+isnull(customer.customerName,'' '') as customerflag, '
           +'        sa_SaleContractline.slcno,             '
           +'        sa_SaleContractline.slclineno,     '
           +'        sa_SaleContract.slcdate,           '
           +'        sa_SaleContractline.ItemCode,      '
           +'        Item.ItemName,                     '
           +'        sa_SaleContractline.ItemCode+'' ''+Item.ItemName as Itemflag,  '
           +'        sa_SaleContractline.stArtdate,      '
           +'        sa_SaleContractline.enddate,        '
           +'        sa_SaleContractline.stArtqty,       '
           +'        sa_SaleContractline.endqty,         '
           +'        sa_SaleContractline.notaxPrice,     '
           +'        sa_SaleContractline.taxPrice,       '
           +'        sa_SaleContractline.referencedPrice,'
           +'        sa_SaleContractline.linestatus,     '
           +'        sa_SaleContractline.slclineremArk,  '
           +'        sa_SaleContractline.checkflag,       '
           +'        taxrate=convert(varchAr,sa_SaleContract.taxrate_Percent) '
           +'  into #tmpContractPass  '
           +' from  sa_SaleContractline                 '
           +' join  sa_SaleContract on sa_SaleContractline.slcno=sa_SaleContract.slcno   '
           +' left join  customer on sa_SaleContract.customerCode=customer.customerCode  '
           +' left join  Item on sa_SaleContractline.ItemCode=Item.ItemCode'
           +' where (sa_SaleContractline.linestatus='+inttostr(linestatus)+' or '+inttostr(linestatus)+'=2 )'
           +' and (sa_SaleContract.customerCode=  '+quotedstr(customerCode)+' or '+quotedstr(customerCode)+'='+quotedstr('fgfhhghghghghhgjjhjh')+')';
  Executesql(AdoQry_Head,sqltext,1);
  selectfromsql:='select * from #tmpContractPass';
  Executesql(AdoQry_Head,'select * from #tmpContractPass',0);
  Flag:=False;
end;

procedure TFrm_Sal_Enter_PassSaleContract.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Sal_Enter_PassSaleContract:=Nil;
end;

procedure TFrm_Sal_Enter_PassSaleContract.Act_CheckExecute(Sender: TObject);
    function checkslcline:boolean;
      var sqltext:string;
      begin
        Result:=False;
        If (AdoQry_Head.fieldbyname('Checkflag').AsInteger=1) And (AdoQry_Head.fieldbyname('lineStatus').AsInteger=0) Then
        begin
          SqlText:=' Select * From sa_SaleContractline '
                   +'  Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
                   +'   and  slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger);
          AdoQry_Tmp.Close;
          AdoQry_Tmp.SQL.Text:=SqlText;
          AdoQry_Tmp.Open;
          If AdoQry_Tmp.Eof Then
          begin
            If DbConnect.InTransaction Then
              DbConnect.RollBackTrans;
              DispInfo('选定的第'+IntToStr(I)+'条销售价格表行已被删除,请刷新!',3);
              Abort;
          end
          else
            if AdoQry_Tmp.fieldbyname('lineStatus').AsInteger <> 0 then
              begin
                If DbConnect.InTransaction Then
                  DbConnect.RollBackTrans;
                  DispInfo('选定的第'+IntToStr(I)+'条销售价格表行状态已被其它用户修改,请刷新!',3);
                  Abort;
              end;
        Result:=True;
        end;

      end;

    procedure Passslcline;
     var sqlstring:string;
     begin
       sqlstring:='Update sa_SaleContractline '
                  +' set lineStatus=1 '
                  +' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
                   +'   and  slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
                  +' And lineStatus=0 ';
          AdoQry_tmp.Close;
          AdoQry_tmp.SQL.Text:=Sqlstring;
          AdoQry_tmp.ExecSQL;

          Sqlstring:='Update #tmpContractPass '
                  +' set lineStatus=1 '
                  +' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
                   +'   and  slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
                  +' And lineStatus=0 ';
          AdoQry_tmp.Close;
          AdoQry_tmp.SQL.Text:=Sqlstring;
          AdoQry_tmp.ExecSQL;
     end;
var
  BookMArk:String;
begin
  inherited;
  If AdoQry_Head.RecordCount=0 Then
    Abort;
  BookMArk:=AdoQry_Head.BookmArk;
  If DispInfo('确认批准选定的销售价格表吗?',2)='y' Then
  begin
    I:=1;
    Try
      AdoQry_Head.First;
      While Not AdoQry_Head.Eof Do
      begin
       Dbconnect.beginTrans;
        if  checkslcline then
         begin
          saveSalContractLineHistory(dbconnect,AdoQry_Head.fieldbyname('slcno').asstring,AdoQry_Head.fieldbyname('slclineno').asinteger,userCode,3);
          Passslcline;
          AdoQry_Head.Edit;
          AdoQry_Head.fieldbyname('lineStatus').AsInteger:=1;
          AdoQry_Head.fieldbyname('Checkflag').AsInteger:=0;
          AdoQry_Head.Post;
          I:=I+1;
          DbConnect.CommitTrans;
          AdoQry_Head.Next;
         end
        Else
        begin
          I:=I+1;
          DbConnect.CommitTrans;
          AdoQry_Head.Next;
        end;
     end;
    Except
      If DbConnect.InTransaction Then
        DbConnect.RollBackTrans;
      DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
      AdoQry_Head.BookMArk:=BookmArk;
      Abort;
    end;
  end;
  AdoQry_Head.BookMArk:=BookmArk;
  Flag:=Not Flag;
end;

procedure TFrm_Sal_Enter_PassSaleContract.Act_CancelCheckExecute(Sender: TObject);
    function checkslcline:boolean;
      var sqltext:string;
      begin
        Result:=False;
        If (AdoQry_Head.fieldbyname('Checkflag').AsInteger=1)
            And (AdoQry_Head.fieldbyname('lineStatus').AsInteger=1)
             Then
        begin
          SqlText:=' Select * From sa_SaleContractline '
                   +'  Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
                   +'   and  slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger);
          AdoQry_Tmp.Close;
          AdoQry_Tmp.SQL.Text:=SqlText;
          AdoQry_Tmp.Open;
          If AdoQry_Tmp.Eof Then
          begin
            If DbConnect.InTransaction Then
              DbConnect.RollBackTrans;
              DispInfo('选定的第'+IntToStr(I)+'条销售价格表行已被删除,请刷新!',3);
              abort;
          end
          else
            if AdoQry_Tmp.fieldbyname('lineStatus').asfloat <> 1 then
              begin
                If DbConnect.InTransaction Then
                  DbConnect.RollBackTrans;
                  DispInfo('选定的第'+IntToStr(I)+'条销售价格表行状态已被其它用户修改,请刷新!',3);
                  abort;
              end;
          Result:=True;
        end;
      end;

      procedure unPassslcline;
       var sqlstring:string;
       begin
         Sqlstring:='Update sa_SaleContractline '
                 +' set lineStatus=0 '
                 +' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
                 +'   and  slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
                 +' And lineStatus=1 ';
         AdoQry_tmp.Close;
         AdoQry_tmp.SQL.Text:=Sqlstring;
         AdoQry_tmp.ExecSQL;
         Sqlstring:='Update #tmpContractPass '
                 +' set lineStatus=0 '
                 +' Where slcno='+quotedStr(AdoQry_Head.fieldbyname('slcno').Asstring)
                  +'   and  slclineno='+inttostr(AdoQry_Head.fieldbyname('slclineno').asinteger)
                 +' And lineStatus=1 ';
         AdoQry_tmp.Close;
         AdoQry_tmp.SQL.Text:=Sqlstring;
         AdoQry_tmp.ExecSQL;
       end;
var
  BookMArk:String;
  I:Integer;
begin
  inherited;
  If AdoQry_Head.RecordCount=0 Then  Abort;
  BookMArk:=AdoQry_Head.BookmArk;
  If DispInfo('确认取消批准选定销售价格表行吗?',2)='y' Then
  begin
    I:=1;
    Try
      AdoQry_Head.First;
      While Not AdoQry_Head.Eof Do
       begin
         DbConnect.beginTrans;
         if checkslcline then
           begin
             saveSalContractLineHistory(dbconnect,AdoQry_Head.fieldbyname('slcno').asstring,AdoQry_Head.fieldbyname('slclineno').asinteger,userCode,4);
             unPassslcline;
             AdoQry_Head.Edit;
             AdoQry_Head.fieldbyname('lineStatus').AsInteger:=0;
             AdoQry_Head.fieldbyname('Checkflag').AsInteger:=0;
             AdoQry_Head.Post;
             I:=I+1;
             AdoQry_Head.Next;
             dbconnect.CommitTrans;
           end
         Else
           begin
             I:=I+1;
             AdoQry_Head.Next;
             DbConnect.CommitTrans;
           end;
       end;
    Except
      If DbConnect.InTransaction Then    DbConnect.RollBackTrans;
      DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
      AdoQry_Head.BookMArk:=BookmArk;
      Abort;
    end;
  end;
  AdoQry_Head.BookMArk:=BookmArk;
  Flag:=Not Flag;
end;

procedure TFrm_Sal_Enter_PassSaleContract.DBGridEhDblClick(Sender: TObject);
begin
  inherited;
  If AdoQry_Head.RecordCount=0 Then
    Abort;
  If AdoQry_Head.fieldbyname('lineStatus').AsInteger=0 then
    Act_CheckExecute(Act_Check)
  Else
    Act_CancelCheckExecute(Act_CancelCheck);
end;

procedure TFrm_Sal_Enter_PassSaleContract.DBGridEhTitleClick(Column: TColumnEh);
var
  BookMArk:String;
begin
  inherited;
  If Trim(Column.Title.Caption)<>'标记' Then
    Abort;
  If AdoQry_Head.RecordCount=0 Then
    Abort;
  BookMArk:=AdoQry_Head.BookmArk;
  If Not Flag Then
  begin
    AdoQry_Head.First;
    While Not AdoQry_Head.Eof Do
    begin
      AdoQry_Head.Edit;
      AdoQry_Head.fieldbyname('Checkflag').AsInteger:=1;
      AdoQry_Head.Post;
      AdoQry_Head.Next;
    end;
  end
  Else
  begin
    AdoQry_Head.First;
    While Not AdoQry_Head.Eof Do
    begin
      AdoQry_Head.Edit;
      AdoQry_Head.fieldbyname('Checkflag').AsInteger:=0;
      AdoQry_Head.Post;
      AdoQry_Head.Next;
    end;
  end;
  AdoQry_Head.BookmArk:=BookMArk;
  Flag:=Not Flag;
end;

procedure TFrm_Sal_Enter_PassSaleContract.AdoQry_HeadBeforeInsert(
  DataSet: TDataSet);
begin
  inherited;
  Abort;
end;

procedure TFrm_Sal_Enter_PassSaleContract.FormCreate(Sender: TObject);
begin
  inherited;
  ToolButton6.Action:=act_excel;
end;

procedure TFrm_Sal_Enter_PassSaleContract.Act_ExcelExecute(Sender: TObject);
begin
 // inherited;
  dbgridehtoexcel(dbgrideh);
end;

procedure TFrm_Sal_Enter_PassSaleContract.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  try
  Executesql(AdoQry_tmp,'drop table #tmpContractPass',1);
  except
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -