📄 untaskgoodsplan.pas
字号:
EdtRecvStock.SetFocus;
Application.MessageBox('要货仓库不能为空!', pchar(application.Title), MB_OK + MB_ICONinformation);
Exit;
end;
if (Trim(Edit1.Text) = '') or
(AskMaster.VcStockID = '') then
begin
Edit1.SetFocus;
Application.MessageBox('请选择配送仓库!', pchar(application.Title), MB_OK + MB_ICONinformation);
Exit;
end;
for iRow := 1 to sgorder.RowCount - 1 do
begin
if (sgorder.Cells[1, iRow] = '') or (sgorder.Cells[2, iRow] = '') then
begin
sgorder.SetFocus;
sgorder.Row := iRow;
sgorder.Col := 1;
Application.MessageBox('当前商品不能为空!', pchar(application.Title), MB_OK + MB_ICONinformation);
Exit;
end;
if sgorder.Cells[5, iRow] = '' then
begin
sgorder.SetFocus;
sgorder.Row := iRow;
sgorder.Col := 5;
Application.MessageBox('请输入申请商品数量!', pchar(application.Title), MB_OK + MB_ICONinformation);
Exit;
end;
if Trim(sgorder.Cells[5, iRow]) = '' then sgorder.Cells[5, iRow] := '0';
if StrToFloat(sgorder.Cells[5, iRow]) = 0 then
begin
sgorder.SetFocus;
sgorder.Row := iRow;
sgorder.Col := 5;
Application.MessageBox('请输入要货数量!', pchar(application.Title), MB_OK + MB_ICONinformation);
Exit;
end;
end;
Result := True;
end;
function TFmAskGoodsPlan.SaveData: Boolean;
var
IRow: Integer;
fQty, fEndQty,dRate: Double;
PsRst,iunit: Integer;
iEditMode,IStatus: Integer;
mdata,Ddata:olevariant;//主副表数据
begin
//
Result := False;
AskMaster.DGetDate:=dpt1.Date;
AskMaster.VCOfficeID:=trim(EdtSendStock.Text);
if SEditMode = '' then
iEditMode := 0
else
iEditMode := 1;
try
with CdsMasterData do
begin
EmptyDataSet;
Append;
FieldByName('VcGetGoodsPlanID').AsString := AskMaster.VcGetGoodsPlanID;
FieldByName('VcBillNo').AsString := AskMaster.BillNo;
FieldByName('VCOfficeID').AsString := AskMaster.VCOfficeID;
FieldByName('iBilltype').asinteger := AskMaster.iBillType;
FieldByName('VcStockID').AsString := AskMaster.VcStockID;
FieldByName('DGetDate').asstring := formatdatetime('yyyy''-''mm''-''dd',AskMaster.DGetDate);
FieldByName('VcEID').AsString := AskMaster.VcEID;
FieldByName('vcCheckE').AsString := AskMaster.vcCheckE;
FieldByName('Memo').AsString := AskMaster.Memo;
FieldByName('IPlanStatus').Asinteger := 2;
end;
with CdsDetailData do
begin
EmptyDataSet;
for IRow := 1 to sgorder.RowCount - 1 do
begin
Append;
FieldByName('VcGetGoodsPlanID').AsString := AskMaster.VcGetGoodsPlanID;
FieldByName('ord').asInteger := IRow;
FieldByName('VCPtyieID').AsString := Trim(sgorder.cells[2, iRow]); //商品编号
FieldByName('vcGoodUnitId').AsString := Trim(sgorder.cells[4, iRow]);
//iunit := StrToInt(sgorder.Cells[12,iRow]);
iunit:=0;
dRate := StrToFloat(sgorder.Cells[11,iRow]);
if iunit = 1 then
begin
fQty := StrToFloat(Trim(sgorder.cells[5, iRow])) * dRate;
FieldByName('NQty').asFloat := fQty;
fEndQty := StrToFloat(Trim(sgorder.cells[6, iRow]));
FieldByName('NSendQty').asFloat := 0;
FieldByName('NEndQty').asFloat := fQty - fEndQty;
end
else
begin
fQty := StrToFloat(Trim(sgorder.cells[5, iRow]));
FieldByName('NQty').asFloat := fQty;
fEndQty := StrToFloat(Trim(sgorder.cells[6, iRow]));
FieldByName('NSendQty').asFloat := 0;
FieldByName('NEndQty').asFloat := fQty - fEndQty;
end;
IStatus := StrToInt(sgorder.Cells[10,iRow]);
FieldByName('IGetStatus').asFloat := IStatus;
FieldByName('iUnit').asFloat := iunit;
FieldByName('NRate').asFloat := dRate;
end;
end;
PsRst := CdsDetailData.RecordCount;
mdata:= CdsMasterData.Data;
Ddata:=CdsDetailData.Data;
adisp.InsertGetPlan(mdata,dData,iEditMode, PsRst);
if PsRst <> 0 then raise Exception.Create('单据保存失败!');
Result := True;
except
on E: Exception do
begin
Application.MessageBox(Pchar(E.message), pchar(application.Title), MB_OK + MB_ICONinformation)
end;
end;
end;
procedure TFmAskGoodsPlan.CdsDetailDataBeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
//OwnerData := 'Select * from GetGoodsPlan where VcGetGoodsPlanID =''' + sBillId + '''';
end;
procedure TFmAskGoodsPlan.CdsMasterDataBeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
//OwnerData := 'Select * from GetGoodsPlanMaster where VcGetGoodsPlanID = ''' + sBillId + '''';
end;
procedure TFmAskGoodsPlan.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TFmAskGoodsPlan.BtnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TFmAskGoodsPlan.sgorderDblClickCell(Sender: TObject; ARow,
ACol: Integer);
begin
if ACol = 7 then
begin
CheckCells(ACol,ARow);
end;
end;
procedure TFmAskGoodsPlan.CheckCells(ACol, ARow: Integer);
begin
if (Trim(sgorder.Cells[10, ARow]) = '0') or
(Trim(sgorder.Cells[10, ARow]) = '') then
begin
sgorder.Cells[ACol, ARow] := '【已审】';
sgorder.Cells[10, ARow] := '1';
end
else
begin
sgorder.Cells[ACol, ARow] := '【未审】';
sgorder.Cells[10, ARow] := '0';
end;
end;
procedure TFmAskGoodsPlan.BtnSaveClick(Sender: TObject);
begin
if Not CheckData then Exit;
if Not SaveData then Exit;
if SEditMode = '' then
begin
FormIni;
EdtSendStock.SetFocus;
Exit;
end;
Close;
end;
procedure TFmAskGoodsPlan.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_EsCaPE then
Close;
end;
function TFmAskGoodsPlan.ReadBill: Boolean;
var
iRow: Integer;
begin
//
Result := False;
if SEditMode = '' then Exit;
try
if CdsMasterData.Active then CdsMasterData.Close;
if CdsDetailData.Active then CdsDetailData.Close;
CdsMasterData.Open;
CdsDetailData.Open;
//---显示数据,并且给相应变量付值------//
//------显示明细数据--------------//
CdsDetailData.First;
for iRow := 1 to CdsDetailData.RecordCount do
begin
//
sgorder.Cells[0, iRow] := IntToStr(CdsDetailData.RecNo);
CdsDetailData.Next;
end;
Result := True;
except
Result := False;
end;
end;
procedure TFmAskGoodsPlan.sgorderDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
//ydy add 设置显示颜色
with Sender as Tstringgrid do
begin
if gdSelected in State then
Canvas.Brush.Color:= clTeal; //clBlue; //clyellow;//clRed;
Canvas.TextRect(Rect,Rect.Left,Rect.Top,' '+Cells[ACol,ARow]);
if gdFocused in State then
Canvas.DrawFocusRect(Rect);
end;
//不但水平居中,还垂直居中
with Sender as Tstringgrid do
begin
Canvas.FillRect(Rect);
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure TFmAskGoodsPlan.sgorderDblClick(Sender: TObject);
var
i:integer;
begin
/////复制 数量 单位等
if (pcol = 1) or (pcol =2) then
begin
fmgoodCodeSelPei:= TfmgoodCodeSelPei.Create(nil);
try
fmgoodCodeSelPei.show_mode := '配送需求单';
fmgoodCodeSelPei.ShowModal;
finally
fmgoodCodeSelPei.Free;
end;
end;
if pcol=5 then
begin
for i:=prow+1 to sgorder.RowCount-1 do
begin
sgorder.Cells[5,i]:= sgorder.Cells[5,prow]
end;
end;
end;
procedure TFmAskGoodsPlan.sgorderSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
pcol:=acol;
prow:=arow;
end;
procedure TFmAskGoodsPlan.sgorderKeyPress(Sender: TObject; var Key: Char);
begin
if (pcol =5) or (pcol =6) then
begin
if not (key in ['0'..'9',#8]) then //数量没有小数点
key:=#0;
sgorder.Options := sgorder.Options+ [goediting]
end
else
begin
sgorder.Options := sgorder.Options - [goediting];
key := #0;
end;
end;
procedure TFmAskGoodsPlan.SpeedButton1Click(Sender: TObject);
begin
dlgselectps:=Tdlgselectps.Create(self);
dlgselectps.ShowModal;
if dmmain.CDSdata.IsEmpty then exit;
Edit1.Text:=Trim(dmmain.CDSdata.fieldbyname('managerid').AsString);
AskMaster.VcStockID:=Trim(dmmain.CDSdata.fieldbyname('managerid').AsString);
dmmain.CDSdata.Close;
dmmain.CDSdata.Data:=null;
dlgselectps.Free;
end;
procedure TFmAskGoodsPlan.Cmd_AddClick(Sender: TObject);
begin
addgridrows(sgorder);
end;
procedure TFmAskGoodsPlan.Cmd_DeleteClick(Sender: TObject);
begin
deletegridrows(sgorder,prow);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -