📄 unit_returncheck.pas
字号:
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 + -