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

📄 unit_returncheck.pas

📁 用友ERP功能扩展
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit_ReturnCheck;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxExEdtr, Menus, StdCtrls, Buttons, dxDBTLCl, dxGrClms,
  dxDBCtrl, dxDBGrid, dxTL, dxCntner, cxDBLabel, cxLabel, cxControls,
  cxContainer, cxEdit, cxGroupBox, cxRadioGroup, ComCtrls, DB, Grids,
  DBGrids;

type
  TForm_ReturnCheck = class(TForm)
    PC_ReturnCheck: TPageControl;
    TS_PlanAttribute: TTabSheet;
    RG_Plan: TcxRadioGroup;
    RG_WeiSRD: TcxRadioGroup;
    Label_CustName: TcxLabel;
    DBLabel_ProductType: TcxDBLabel;
    DBLabel_PEDate: TcxDBLabel;
    Label_PlanDate: TcxLabel;
    DBGrid_WeiSRD: TdxDBGrid;
    DBGrid_WeiSRDColumn5: TdxDBGridColumn;
    DBGrid_WeiSRDColumn1: TdxDBGridColumn;
    DBGrid_WeiSRDID: TdxDBGridMaskColumn;
    DBGrid_WeiSRDcCusCode: TdxDBGridColumn;
    DBGrid_WeiSRDColumn4: TdxDBGridColumn;
    DBGrid_WeiSRDColumn6: TdxDBGridColumn;
    DBGrid_WeiSRDs: TdxDBGrid;
    DBGrid_WeiSRDsSaleState: TdxDBGridCheckColumn;
    DBGrid_WeiSRDsAutoID: TdxDBGridMaskColumn;
    DBGrid_WeiSRDsID: TdxDBGridMaskColumn;
    DBGrid_WeiSRDscInvCode: TdxDBGridColumn;
    DBGrid_WeiSRDscInvName: TdxDBGridColumn;
    DBGrid_WeiSRDsiQuantity: TdxDBGridMaskColumn;
    DBGrid_WeiSRDsiUnitPrice: TdxDBGridMaskColumn;
    DBGrid_WeiSRDsiMoney: TdxDBGridCurrencyColumn;
    DBGrid_WeiSRDsState: TdxDBGridMaskColumn;
    DBGrid_WeiSRDsiInvSCost: TdxDBGridMaskColumn;
    DBGrid_WeiSRDsiInvSPrice: TdxDBGridMaskColumn;
    cxDBLabel1: TcxDBLabel;
    Bt_Ok: TBitBtn;
    Bt_Cancel: TBitBtn;
    PopupMenu_Return: TPopupMenu;
    N1: TMenuItem;
    PopupMenu_Returns: TPopupMenu;
    Return01: TMenuItem;
    Return2: TMenuItem;
    Return03: TMenuItem;
    Return04: TMenuItem;
    Return05: TMenuItem;
    Return06: TMenuItem;
    cxDBLabel2: TcxDBLabel;
    RB_WeiSRDs: TcxRadioGroup;
    cxLabel1: TcxLabel;
    cxLabel2: TcxLabel;
    cxLabel3: TcxLabel;
    cxLabel4: TcxLabel;
    cxDBLabel3: TcxDBLabel;
    cxDBLabel4: TcxDBLabel;
    cxDBLabel5: TcxDBLabel;
    cxDBLabel6: TcxDBLabel;
    cxDBLabel7: TcxDBLabel;
    Return02: TMenuItem;
    procedure PopupMenu_ReturnsPopup(Sender: TObject);
    procedure Return01Click(Sender: TObject);
    procedure Bt_OkClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure DBGrid_WeiSRDsCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
      ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
      var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
      var ADone: Boolean);
    procedure Return02Click(Sender: TObject);
    procedure Return03Click(Sender: TObject);
    procedure Return04Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form_ReturnCheck: TForm_ReturnCheck;
  DJID,ID:Integer;

implementation
uses  Unit_Data;

{$R *.dfm}

procedure TForm_ReturnCheck.PopupMenu_ReturnsPopup(Sender: TObject);
begin
    IF Form_Data.Table__WeiSRDs.FieldValues['iUnitPrice'] = 0 Then
    Begin
        Return01.Visible := True;
        Return2.Visible := True;
        Return02.Visible := True;
        Return03.Visible := True;
        Return04.Visible := True;
        Return05.Visible := True;
        Return06.Visible := False;
    End Else
    Begin
        Return01.Visible := False;
        Return2.Visible := False;
        Return02.Visible := False;
        Return03.Visible := False;
        Return04.Visible := False;
        Return05.Visible := False;
        Return06.Visible := True;
    End;
end;

procedure TForm_ReturnCheck.Return01Click(Sender: TObject);
Var
    sCusCode,sInvCode,sCusName,sInvName,sCustType,sPrice,sRate,sInvSCost,sDJNo,sRetrun: String;
    bLocate: Boolean;
    Opt: TLocateOptions;
begin
    IF Form_Data.Table_Manage.Lookup('MName',UserName,'M013') = 0 Then
    Begin
        Showmessage('你无权执行此项操作,请咨询系统管理员!');
        Exit;
    End;


    IF Form_Data.Table__WeiSRD.FieldByName('价格类别').AsString ='' Then  sCustType := ''
    Else sCustType := Form_Data.Table__WeiSRD.FieldValues['价格类别'];

    ID:=Form_Data.Table__WeiSRDs.FieldValues['AutoID'];

    IF (sCustType = '外省客户') AND (Form_Data.Table__WeiSRDs.FieldValues['外省价'] <> 0) Then
    sPrice := Form_Data.Table__WeiSRDs.FieldValues['外省价']
    Else IF (sCustType = '弄怀客户') AND (Form_Data.Table__WeiSRDs.FieldValues['弄怀价'] <> 0) Then
    sPrice := Form_Data.Table__WeiSRDs.FieldValues['弄怀价']
    Else
    sPrice := Form_Data.Table__WeiSRDs.FieldValues['iInvSCost'];
    sRate := floattostr(Round(strtofloat(sPrice)*100/Form_Data.Table__WeiSRDs.FieldValues['iInvSCost']*100)/100);

    sInvSCost := Form_Data.Table__WeiSRDs.FieldValues['iInvSCost'];
    sDJNo := '退单编号: ' + Form_Data.Table__WeiSRD.FieldByName('单据编号').AsString+'  '+UserName;

    Opt:= [LoPartialKey];
    sCusCode := Form_Data.Table__WeiSRD.FieldValues['cCusCode'] ;
    Form_Data.Table__SA_CusUprice.Active := False ;
    Form_Data.Table__SA_CusUprice.Active := True ;
    sInvCode := Form_Data.Table__WeiSRDs.FieldValues['cInvCode'] ;
    bLocate :=  Form_Data.Table__SA_CusUprice.Locate('cCusCode;cInvCode',varArrayof([sCusCode,sInvCode]),[]);
    sCusName := Form_Data.Table__WeiSRD.FieldByName('客户名称').AsString;
    sInvName := Form_Data.Table__WeiSRDs.FieldByName('cInvName').AsString;
    IF MessageDlg('请再确认:  '+#13+#13+'你的作业将货品的限制销退功能关闭,详细资料如下: '+#13+'客户:    ['+ sCusCode +'] '+ sCusName +#13+'货品:    ['+ sInvCode +'] '+ sInvName +#13+#13+#13+'[确定]请单击 OK 按钮,[取消]请单击 Cancel 按钮' ,mtInformation,[mbOK,mbCancel],0) = mrOk Then
    Begin

    IF  bLocate = False Then
    Begin
        Form_Data.SQL.Close;
        Form_Data.SQL.SQL.Clear;
        Form_Data.SQL.SQL.Add('INSERT INTO SA_CusUPrice');
        Form_Data.SQL.SQL.Add('(cCusCode, cInvCode, iInvSCost, iCusDisRate, iInvNowCost,cMemo)');
        Form_Data.SQL.SQL.Add('VALUES ('''+ sCusCode +''','''+ sInvCode +''','+ sInvSCost +','+ sRate +','+ sPrice +','''+ sDJNo +''')');
        Form_Data.SQl.ExecSQL;

        Form_Data.Table__SA_CusUprice.Close;
        Form_Data.Table__SA_CusUprice.Open;

        With Form_Data.Table__WeiSRDs do
        Begin
            Form_Data.Table__WeiSRDs.Edit;
            Form_Data.Table__WeiSRDs.FieldValues['iUnitPrice'] := sPrice;
            Form_Data.Table__WeiSRDs.FieldValues['iMoney'] := Form_Data.Table__WeiSRDs.FieldValues['iUnitPrice']* Form_Data.Table__WeiSRDs.FieldValues['iQuantity'];
            Form_Data.Table__WeiSRDs.Post;
        end;
    End Else Begin
        //开启失交报价
        sRetrun := Form_Data.Table__SA_CusUprice.FieldByName('bRetrun').AsString ;
        IF  sRetrun = '0' Then
        Showmessage('客户报价资料库已有指定价,状态是限销限退,如需修改请咨询采销部经理! ')
        Else
        Begin
        IF MessageDlg('客户报价资料库已有指定价,状态是限销不限退,需要收退货吗?' ,mtInformation,[mbOK,mbCancel],0) = mrOk Then
          Begin
            With Form_Data.Table__WeiSRDs do
            Begin
            Form_Data.Table__WeiSRDs.Edit;
            Form_Data.Table__WeiSRDs.FieldValues['iUnitPrice'] := sPrice;
            Form_Data.Table__WeiSRDs.FieldValues['iMoney'] := Form_Data.Table__WeiSRDs.FieldValues['iUnitPrice']* Form_Data.Table__WeiSRDs.FieldValues['iQuantity'];
            Form_Data.Table__WeiSRDs.Post;
            end;
          End;
        End;
    end;

    Form_Data.Table__SA_CusUprice.Active := False ;
    Form_Data.Table__SA_CusUprice.Active := True ;
    Form_Data.Table__WeiSRDs.Active := False ;
    Form_Data.Table__WeiSRDs.Active := True ;

    Form_Data.Table__WeiSRDs.Locate('AutoID',ID,[]);

    End Else Exit;

end;

procedure TForm_ReturnCheck.Bt_OkClick(Sender: TObject);
Var
    ID,sInvName,sCusCode: String;

begin
    IF Form_Data.Table_Manage.Lookup('MName',UserName,'M007') = 0 Then
    Begin
        Showmessage('你无权执行此项操作,请咨询系统管理员!');
        Exit;
    End;

    ID := Form_Data.Table__WeiSRDs.FieldByName('ID').AsString ;
    sCusCode := Form_Data.Table__WeiSRDs.FieldByName('cCusCode').AsString;

    Form_Data.SQL.Close;
    Form_Data.SQL.SQL.Clear;
    Form_Data.SQL.SQL.Add('UPDATE SO_SODetails ');
    Form_Data.SQL.SQL.Add('SET iUnitPrice = SA_CusUprice.iInvNowCost,iMoney = iUnitPrice * SO_SODetails.iQuantity');
    Form_Data.SQL.SQL.Add('FROM dbo.SO_SODetails INNER JOIN dbo.SA_CusUPrice ON dbo.SO_SODetails.cInvCode = dbo.SA_CusUPrice.cInvCode');
    Form_Data.SQL.SQL.Add('WHERE (iQuotedPrice = 0 )');
    Form_Data.SQL.SQL.Add('AND  (ID = '+ ID +')');
    Form_Data.SQL.SQL.Add('AND  (SA_CusUprice.bRetrun = 1 )');
    Form_Data.SQL.SQL.Add('AND  (SA_CusUprice.cCusCode = '''+ sCusCode +''' )');
    Form_Data.SQL.ExecSQL;

    Form_Data.SQL.Close;
    Form_Data.SQL.SQL.Clear;
    Form_Data.SQL.SQL.Add('UPDATE SO_SODetails ');
    Form_Data.SQL.SQL.Add('SET iQuotedPrice = iUnitPrice, ');
    Form_Data.SQL.SQL.Add('iTaxUnitPrice = iUnitPrice, ');
    Form_Data.SQL.SQL.Add('iNatUnitPrice = iUnitPrice, ');
    Form_Data.SQL.SQL.Add('iMoney =    iUnitPrice * SO_SODetails.iQuantity, ');
    Form_Data.SQL.SQL.Add('iSum   =    iUnitPrice * SO_SODetails.iQuantity, ');
    Form_Data.SQL.SQL.Add('iNatMoney = iUnitPrice * SO_SODetails.iQuantity, ');
    Form_Data.SQL.SQL.Add('iNatSum =   iUnitPrice * SO_SODetails.iQuantity ');
    Form_Data.SQL.SQL.Add('Where  (iUnitPrice <> 0 ) ');
    Form_Data.SQL.SQL.Add('AND  (iQuotedPrice = 0 ) ');
    Form_Data.SQL.SQL.Add('AND (id = '+ ID +') ');
    Form_Data.SQL.ExecSQL;

    Form_Data.SQL.Close;
    Form_Data.SQL.SQL.Clear;
    Form_Data.SQL.SQL.Add('SELECT SO_SODetails.cInvCode, SO_SODetails.cInvName ');
    Form_Data.SQL.SQL.Add('FROM dbo.SO_SODetails INNER JOIN dbo.SA_CusUPrice ON dbo.SO_SODetails.cInvCode = dbo.SA_CusUPrice.cInvCode ');
    Form_Data.SQL.SQL.Add('WHERE (dbo.SO_SODetails.iQuotedPrice = 0) ');
    Form_Data.SQL.SQL.Add('AND  (SA_CusUprice.cCusCode = '''+ sCusCode +''' )');
    Form_Data.SQL.SQL.Add('AND  (ID = '+ ID +') ');
    Form_Data.SQL.Open;
    IF (Form_Data.SQL.RecordCount <> 0) Then
    Begin
    sInvName := '' ;
    While Form_Data.SQL.Eof = False do
    Begin
        IF sInvName = '' Then sInvName := '''' + Form_Data.SQL.FieldValues['cInvName'] + ''''
        Else sInvName := sInvName + ',''' + Form_Data.SQL.FieldValues['cInvName'] + '''';
        Form_Data.SQL.Next;
    end;

    IF MessageDlg('以下货品已限退,请及时退还给客户!'+#13+#13+sInvName ,mtInformation,[mbOK,mbCancel],0) = mrOk Then
    Begin
        Form_Data.SQL.Close;
        Form_Data.SQL.SQL.Clear;
        Form_Data.SQL.SQL.Add('Delete SO_SODetails ');
        Form_Data.SQL.SQL.Add('Where  (iUnitPrice = 0 ) ');
        Form_Data.SQL.SQL.Add('AND (id = '+ ID +') ');
        Form_Data.SQL.SQL.Add('AND (cInvName IN ('+ sInvName +')) ');
        Form_Data.SQL.ExecSQL;
    End ELse Exit;
    End;

    Form_Data.SQL.Close;
    Form_Data.SQL.SQL.Clear;
    Form_Data.SQL.SQL.Add('UpDate SO_SODetails ');
    Form_Data.SQL.SQL.Add('SET iQuantity = 0 - iQuantity ');
    Form_Data.SQL.SQL.Add('Where  (ID = '+ ID +') ');
    Form_Data.SQL.SQL.Add('AND iQuantity > 0 ');
    Form_Data.SQL.ExecSQL;

    Form_Data.SQL.Close;
    Form_Data.SQL.SQL.Clear;
    Form_Data.SQL.SQL.Add('UPDATE SO_SOMain ');
    Form_Data.SQL.SQL.Add('Set iStatus = ''1'',  cVerifier = ''WG.''+'''+ UserName +'''');
    Form_Data.SQL.SQL.Add('Where  (id = '+ ID +') ');
    Form_Data.SQL.ExecSQL;

    Form_Data.Table__WeiSRD.Active := False ;
    Form_Data.Table__WeiSRDs.Active := False ;

    Form_Data.Table__WeiSRD.Active := True ;

⌨️ 快捷键说明

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