📄 billquery.pas
字号:
SALE_POS_BILL: lEditMode := SALE_POS_EDIT;
{库存}
EXIST_DRAW_BILL: lEditMode := EXIST_DRAW;
EXIST_RETURN_BILL: lEditMode := EXIST_RETURN;
EXIST_LOSING_BILL: lEditMode := EXIST_LOSING;
EXIST_INCREASE_BILL: lEditMode := EXIST_INCREASE;
EXIST_ENTER_DEPOT_BILL: lEditMode := EXIST_ENTER_DEPOT;
EXIST_CHECK_LIST_BILL: lEditMode := EXIST_CHECK_LIST;
EXIST_CHANGE_PRICE_BILL: lEditMode := EXIST_CHANGE_PRICE;
EXIST_EXCHANGE_BILL: lEditMode := EXIST_EXCHANGE;
EXIST_PRICE_EXCHANGE_BILL: lEditMode := EXIST_PRICE_EXCHANGE;
EXIST_ASSEMBLY_BILL: lEditMode := EXIST_ASSEMBLY;
EXIST_OTHER_BILL: lEditMode := EXIST_OTHER;
{钱流}
MONEY_EXPENSES_BILL: lEditMode := MONEY_EXPENSES;
MONEY_INCOME_BILL: lEditMode := MONEY_INCOME;
MONEY_DEPOSIT_BILL: lEditMode := MONEY_DEPOSIT;
else
lEditMode := 0;
end;
Result := lEditMode;
end;
procedure TfrmBillQuery.ToolShow;
begin
if lSelect = 0 then
bbSelect.Visible := ivNever
else
if lSelect = 1 then
bbSelect.Visible := ivAlways;
end;
procedure TfrmBillQuery.bbAddClick(Sender: TObject);
var
SavePlace: TBookmark;
lAddMode: Integer;
begin
inherited;
with ADOSetBillQuery do
begin
SavePlace := GetBookmark;
lAddMode := QueryToEdit(GetRadioBill(lMode));
if (lAddMode > STOCK_EDIT_BEGIN) and (lAddMode < SALE_EDIT_END) then
BillEditShow(lAddMode, 0)
else
if (lAddMode > EXIST_EDIT_BEGIN) and (lAddMode < EXIST_EDIT_END) then
ExistBillEditShow(lAddMode, 0)
else
if (lAddMode > MONEY_EDIT_BEGIN) and (lAddMode < MONEY_EDIT_END) then
ExistBillEditShow(lAddMode, 0);
Close;
Open;
GotoBookmark(SavePlace);
FreeBookmark(SavePlace);
end;
end;
procedure TfrmBillQuery.bbEditClick(Sender: TObject);
var
SavePlace: TBookmark;
lAddMode: Integer;
begin
inherited;
with ADOSetBillQuery do
begin
if IsEmpty then
exit;
SavePlace := GetBookmark;
lAddMode := FieldByName('Mode').AsInteger;
if (lAddMode > STOCK_EDIT_BEGIN) and (lAddMode < SALE_EDIT_END) then
BillEditShow(lAddMode, FieldByName('ID').AsInteger)
else
if (lAddMode > EXIST_EDIT_BEGIN) and (lAddMode < EXIST_EDIT_END) then
ExistBillEditShow(lAddMode, FieldByName('ID').AsInteger)
else
if (lAddMode > MONEY_EDIT_BEGIN) and (lAddMode < MONEY_EDIT_END) then
ExistBillEditShow(lAddMode, FieldByName('ID').AsInteger);
Close;
Open;
GotoBookmark(SavePlace);
FreeBookmark(SavePlace);
end;
end;
procedure TfrmBillQuery.bbDelClick(Sender: TObject);
var
sSql: string;
lRow, lID, lType: Integer;
begin
inherited;
lRow := ADOSetBillQuery.RecNo;
if ADOSetBillQuery.IsEmpty then
Exit;
lType := ADOSetBillQuery.FieldByName('Type').AsInteger;
if lType = 2 then
begin
ShowMsg('只能删除订单、草稿单据或红冲单据,不能删除过账单据!');
Exit;
end;
if MsgBox('数据删除后不可恢复,确认要删除?', '提示', MB_OKCancel) = IDOK then
begin
ADOSetBillQuery.ControlsDisabled;
lID := ADOSetBillQuery.FieldByName('ID').AsInteger;
if (lMode > EXIST_EDIT_BEGIN) and (lMode < EXIST_EDIT_END) then
sSql := 'DELETE FROM ExistIndex WHERE ID=' + IntToStr(lID)
else
sSql := 'DELETE FROM BillIndex WHERE ID=' + IntToStr(lID);
if ExecSql(sSql) then
begin
if lMainMode = ALL_STOCK_BILL then
sSql := 'DELETE FROM BillStock WHERE IndexID=' + IntToStr(lID)
else
if lMainMode = ALL_SALE_BILL then
sSql := 'DELETE FROM BillSale WHERE IndexID=' + IntToStr(lID)
else
if lMainMode = ALL_EXIST_BILL then
sSql := 'DELETE FROM ExistList WHERE IndexID=' + IntToStr(lID)
else
if lMainMode = ALL_MONEY_BILL then
sSql := 'DELETE FROM BillMoney WHERE IndexID=' + IntToStr(lID);
ExecSql(sSql);
end;
OpenDataSet(ADOSetBillQuery, ADOSetBillQuery.CommandText);
if lRow > 1 then ADOSetBillQuery.RecNo := lRow - 1;
ADOSetBillQuery.EnableControls;
end;
end;
procedure TfrmBillQuery.bbTypeClick(Sender: TObject);
var
lModeTemp: Integer;
begin
inherited;
lModeTemp := GetRadioBill(lMainMode);
if lModeTemp <> 0 then
begin
lMode := lModeTemp;
LoadData;
end;
end;
procedure TfrmBillQuery.bbFindClick(Sender: TObject);
begin
inherited;
FindPublic(MainGrid, sPubFindText, lPubFindFiled);
end;
procedure TfrmBillQuery.bbFilterClick(Sender: TObject);
begin
inherited;
FilterPublic(MainGrid);
end;
procedure TfrmBillQuery.bbSetColClick(Sender: TObject);
begin
inherited;
SetCol(Caption, MainGrid, 0);
end;
procedure TfrmBillQuery.bbRefreshClick(Sender: TObject);
begin
inherited;
LoadData;
end;
procedure TfrmBillQuery.bbSelectClick(Sender: TObject);
begin
inherited;
sReturn := IntToStr(MainGrid.DataLink.DataSet.FieldByName('ID').AsInteger);
Close;
end;
procedure TfrmBillQuery.MainGridDblClick(Sender: TObject);
begin
inherited;
if bbSelect.Visible = ivAlways then
bbSelect.Click
else
bbEdit.Click;
end;
procedure TfrmBillQuery.MainGridCustomDrawCell(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);
var
Value: Variant;
begin
inherited;
Value := ANode.Values[MainGrid.ColumnByFieldName('Type').Index];
if not VarIsNull(Value) then
begin
if Value = 1 then
AFont.Color := clOlive
else
if Value = 2 then
AFont.Color := clBlue
else
if Value = 3 then
AFont.Color := clBlack
else
if Value = 5 then AFont.Color := clRed;
end;
end;
procedure TfrmBillQuery.bbCopyClick(Sender: TObject);
var
lRow, lMode, lID: Integer;
begin
inherited;
lRow := ADOSetBillQuery.RecNo;
lID := ADOSetBillQuery.FieldValues['ID'];
lMode := ADOSetBillQuery.FieldByName('Mode').AsInteger;
if CopyBill(lMode, 3, lID) > 0 then
begin
LoadData;
ADOSetBillQuery.RecNo := lRow + 1;
end
else
ShowMsg('复制单据出错,请退出后重试!');
end;
procedure TfrmBillQuery.bbBlankoutClick(Sender: TObject);
var
lMode, lRow, lID, lNewID, lType: Integer;
begin
inherited;
lRow := ADOSetBillQuery.RecNo;
lID := ADOSetBillQuery.FieldValues['ID'];
lType := ADOSetBillQuery.FieldByName('Type').AsInteger;
lMode := ADOSetBillQuery.FieldByName('Mode').AsInteger;
if lType <> 2 then
begin
ShowMsg('只能红冲过账单据和非订单单据,请重新选择单据!');
Exit;
end;
if MsgBox('红冲单据会使此张单据作废,你确定要红冲此单据?', '提示', MB_OKCancel) <> IDOK then Exit;
lNewID := CopyBill(lMode, 5, lID);
if lNewID > 0 then
begin
LoadData;
ADOSetBillQuery.RecNo := lRow;
end
else
ShowMsg('红冲单据出错,请退出后重试!');
end;
procedure TfrmBillQuery.MainGridCustomDraw(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxDBTreeListColumn; const AText: string; AFont: TFont;
var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean);
begin
inherited;
if bQDrawFullGrid then DrawFullGrid(MainGrid, ACanvas, ARect, ANode);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -