📄 billedit.pas
字号:
edtEmploye.Text := FieldIdToName('Employe', sEmployeID, 'Name');
end;
end;
function TfrmBillEdit.CheckMsg: Boolean;
var
lVal: Integer;
begin
Result := False;
if not CheckEditEmpty(1, self, [lblBillDate.Name, lblUserCode.Name,
lblUnit.Name, lblEmploye.Name, lblMoney.Name],
[edtBillDate.Name, edtUserCode.Name, edtUnit.Name, edtEmploye.Name,
edtMoney.Name]) then
Exit;
case lMode of
STOCK_MONEY_EDIT, SALE_MONEY_EDIT: ;
else
begin
lVal := CheckDataSetColValue(ADOSetList, 'Number', 0);
if lVal > 0 then
begin
ShowMsg('表格第' + IntToStr(lVal) + '行数量不能为0!');
Exit;
end;
lVal := CheckDataSetColValue(ADOSetList, 'Price', 0);
case lMode of
STOCK_FORMAL_EDIT, STOCK_BACK_EDIT, SALE_FORMAL_EDIT, SALE_BACK_EDIT, SALE_READY_EDIT, SALE_POS_EDIT:
if not bPriceCan0 and (lVal > 0) then
begin
ShowMsg('表格第' + IntToStr(lVal) + '行单价不能为0!');
Exit;
end;
end;
case lMode of //检查是否存在负负存
SALE_FORMAL_EDIT, SALE_READY_EDIT, SALE_POS_EDIT:
begin
lVal := CheckMinusWareStock(ADOSetList, 'WareID');
if not bCanMinusWare and (lVal > 0) then
begin
ShowMsg('表格第' + IntToStr(lVal) + '行商品数量大于库存数量或已经没有库存!');
Exit;
end;
end;
end;
end;
end;
Result := True;
end;
procedure TfrmBillEdit.bbOkClick(Sender: TObject);
var
lRet, lType: Integer;
begin
inherited;
if not CheckMsg then Exit;
if (lMode = STOCK_ORDER_EDIT) or (lMode = SALE_ORDER_EDIT) then
lRet := 1
else
lRet := MsgBox('你可以将单据保存为过账单据,也可保存为草稿!' + #13 + '是:过账单据。 否:草稿单据。', '提示',
MB_YESNOCANCEL);
case lRet of
IDYES: lType := 2;
IDNO: lType := 3;
1: lType := 1;
else
Exit;
end;
SaveData(lType);
LoadData;
end;
procedure TfrmBillEdit.edtDepotButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sDepot: string;
begin
inherited;
if edtDepot.ReadOnly then
Exit;
sDepot := BaseSelect(BASE_DEPOT, 1, edtDepot.Text);
if (sDepot <> '') then
begin
ADOSetMaster.FieldByName('DepotID').AsInteger := StrToInt2(sDepot);
edtDepot.Text := FieldIdToName('Depot', sDepot, 'Name');
end;
end;
procedure TfrmBillEdit.edtPaymentButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sType1: string;
begin
inherited;
if edtPayment.ReadOnly then
Exit;
sType1 := BaseSelect(BASE_INCOME_TYPE, 1, edtPayment.text);
if sType1 <> '' then
edtPayment.DataSource.DataSet.FieldByName(edtPayment.DataField).AsString := sType1;
end;
procedure TfrmBillEdit.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
SaveGirdWidth;
ADOSetList.Close;
ADOSetMaster.Close;
ADOSetList.Free;
ADOSetMaster.Free;
end;
procedure TfrmBillEdit.mnPrintInitClick(Sender: TObject);
begin
inherited;
PrintForm(Self, 1, INITI_REPORT, sPrintFile);
end;
procedure TfrmBillEdit.bbSetupClick(Sender: TObject);
begin
inherited;
if BillSetupShow(lMode) then
ShowMsg('改动的单据格式将会在退出这张单据时生效!');
end;
procedure TfrmBillEdit.bbPrevClick(Sender: TObject);
begin
if (lID = 0) and (ADOSetList.RecordCount > 0) and
((ADOSetMaster.State = dsInsert) or (ADOSetMaster.State = dsEdit)) then
begin
case MsgBox('你没有保存数据,确定保存?', '提示', MB_YESNOCANCEL) of
IDOK:
begin
if not CheckMsg then Exit;
SaveData(2);
end;
IDNO:
begin
ADOSetList.Cancel;
ADOSetMaster.Cancel;
end;
else
Exit;
end;
end;
inherited;
LoadData;
end;
procedure TfrmBillEdit.bbNextClick(Sender: TObject);
begin
if (lID = 0) and (ADOSetList.RecordCount > 0) and
((ADOSetMaster.State = dsInsert) or (ADOSetMaster.State = dsEdit)) then
begin
case MsgBox('你没有保存数据,确定保存?', '提示', MB_YESNOCANCEL) of
IDOK:
begin
if not CheckMsg then Exit;
SaveData(2);
end;
IDNO:
begin
ADOSetList.Cancel;
ADOSetMaster.Cancel;
end;
else
Exit;
end;
end;
inherited;
LoadData;
end;
procedure TfrmBillEdit.edtToDateKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
case KEY of
VK_DOWN: SendMsg(TWinControl(Sender).Handle, WM_KEYDOWN, VK_F4);
end;
end;
procedure TfrmBillEdit.edtBillDateKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
case KEY of
VK_DOWN: SendMsg(TWinControl(Sender).Handle, WM_KEYDOWN, VK_F4);
end;
end;
procedure TfrmBillEdit.BillRowSummary;
begin
case lMode of
STOCK_ORDER_EDIT, STOCK_FORMAL_EDIT, STOCK_BACK_EDIT, SALE_ORDER_EDIT,
SALE_FORMAL_EDIT, SALE_READY_EDIT, SALE_POS_EDIT, SALE_BACK_EDIT:
begin
if ADOSetList.FieldByName('WareID').AsInteger > 0 then
CalcRowSummary(gridMain, 'Number,Price', 'Total', 1); //计算行合计
end;
end;
case lMode of
SALE_POS_EDIT: edtPosAll1.Text := CalcColSummary(gridMain, 'Total');
end;
end;
{procedure TfrmBillEdit.CalcRowFinish;
var
d: Double;
begin
case lMode of
STOCK_MONEY_EDIT, SALE_MONEY_EDIT:
with ADOSetList do
begin
Edit;
d := FieldByName('Number').AsFloat - FieldByName('ToNumber').AsFloat - FieldByName('Total').AsFloat;
if d = 0 then FieldByName('Finish').AsBoolean := True
else FieldByName('Finish').AsBoolean := False;
end;
end;
end;}
procedure TfrmBillEdit.gridMainChangeColumn(Sender: TObject;
Node: TdxTreeListNode; Column: Integer);
begin
inherited;
BillRowSummary;
end;
function TfrmBillEdit.LoadOrderBill(lOrderID: Integer): Boolean;
var
ADOSetTmp: TADODataSet;
sField1, sField2, sConst, sSql: string;
lID1, lMode1, lUnitID, lEmployeID: integer;
begin
lID1 := 0;
lMode1 := 0;
sSql := ' SELECT * FROM BillIndex B where b.ID=' + IntToStr(lOrderID);
ADOSetTmp := TADODataSet.Create(nil);
ADOSetTmp.LockType := ltReadOnly;
OpenDataSet(ADOSetTmp, sSql);
if not ADOSetTmp.IsEmpty then //导入订单主表
begin
lID1 := ADOSetTmp.FieldValues['ID'];
lMode1 := ADOSetTmp.FieldValues['Mode'];
lUnitID := ADOSetTmp.FieldValues['UnitID'];
ADOSetMaster.FieldValues['UnitID'] := lUnitID;
edtUnit.Text := FieldIdToName('Unit', IntToStr(lUnitID), 'Name');
lEmployeID := ADOSetTmp.FieldValues['EmployeID'];
ADOSetMaster.FieldValues['EmployeID'] := lEmployeID;
edtEmploye.Text := FieldIdToName('Employe', IntToStr(lEmployeID), 'Name');
ADOSetMaster.FieldValues['ToDate'] := ADOSetTmp.FieldValues['ToDate'];
ADOSetMaster.FieldValues['Address'] := ADOSetTmp.FieldValues['Address'];
ADOSetMaster.FieldValues['Memo'] := ADOSetTmp.FieldValues['Memo'];
end;
sSql := ReturnSQL(2, lMode1, lID1);
OpenDataSet(ADOSetTmp, sSql);
if not ADOSetTmp.IsEmpty then //导入订单明细
begin
sField1 := '!CONST,!CONST,WareID,WareCode,WareName,WareUnit,Model,Spec,Area,Number,Price,Total,Memo';
sField2 := 'IndexID,Mode,WareID,WareCode,WareName,WareUnit,Model,Spec,Area,Number,Price,Total,Memo';
sConst := IntToStr(lID1) + ',' + IntToStr(lMode1);
DataSetInput(ADOSetTmp, ADOSetList, sField1, sField2, sConst);
end;
ADOSetTmp.Close;
ADOSetTmp.Free;
Result := True;
end;
procedure TfrmBillEdit.bbSelectClick(Sender: TObject);
var
sRet: string;
begin
inherited;
if lMode = STOCK_FORMAL_EDIT then
sRet := BillSelect(STOCK_ORDER_BILL, 1)
else
if lMode = SALE_FORMAL_EDIT then
sRet := BillSelect(SALE_ORDER_BILL, 1)
else
sRet := '';
if StrToInt2(sRet) > 0 then
LoadOrderBill(StrToInt2(sRet));
end;
procedure TfrmBillEdit.bbAutoAssignClick(Sender: TObject);
var
dSum, dOught: Double;
SavePlace: TBookmark;
begin
inherited;
with ADOSetList do
if not IsEmpty then
begin
//dSum := ADOSetMaster.FieldByName('Money').AsFloat;
dSum := ADOSetMaster.FieldByName('Total').AsFloat;
DisableControls;
SavePlace := GetBookmark;
First;
while not Eof do
begin
Edit;
dOught := FieldByName('Number').AsFloat - FieldByName('ToNumber').AsFloat;
if dSum >= dOught then
begin
// FieldByName('Total').AsFloat := dOught;
FieldByName('Finish').AsBoolean := True;
dSum := dSum - dOught;
end;
Next;
end;
EnableControls;
GotoBookmark(SavePlace);
FreeBookmark(SavePlace);
end;
end;
procedure TfrmBillEdit.edtPosDimeChange(Sender: TObject);
begin
inherited;
if Trim(edtPosDime.Text) = '' then
edtPosAll2.Text := edtPosAll1.Text
else
edtPosAll2.Text := FloatToStr2(StrToFloat2(edtPosAll1.Text) * StrToFloat2(edtPosDime.Text));
end;
procedure TfrmBillEdit.edtReceiptChange(Sender: TObject);
begin
inherited;
edtGive.Text := FloatToStr2(StrToFloat2(edtReceipt.Text) - StrToFloat2(edtPosAll2.Text));
end;
procedure TfrmBillEdit.edtPosAll1Change(Sender: TObject);
begin
inherited;
edtPosDimeChange(nil);
end;
function TfrmBillEdit.CheckSavePrint: Boolean;
begin
Result := False;
if bSavePrint and (ADOSetMaster.State = dsInsert) then
begin
ShowMsg('你在账套选项里设置有[开单据时必需保存后再能打印单据],' + #13 + '请您先保存单据!');
Result := True;
end;
end;
procedure TfrmBillEdit.pbbPrintClick(Sender: TObject);
begin
if CheckSavePrint then
Exit;
inherited;
end;
procedure TfrmBillEdit.pbbPrintViewClick(Sender: TObject);
begin
if CheckSavePrint then
Exit;
inherited;
end;
procedure TfrmBillEdit.pbbPrintCustomClick(Sender: TObject);
begin
if CheckSavePrint then
Exit;
inherited;
end;
procedure TfrmBillEdit.pbbPrintInitClick(Sender: TObject);
begin
if CheckSavePrint then
Exit;
inherited;
end;
procedure TfrmBillEdit.ADOSetListBeforeScroll(DataSet: TDataSet);
begin
inherited;
BillRowSummary;
end;
procedure TfrmBillEdit.edtUnitExit(Sender: TObject);
begin
inherited;
if edtUnit.Text = '' then
ADOSetMaster.FieldByName('UnitID').AsInteger := 0;
end;
procedure TfrmBillEdit.edtEmployeExit(Sender: TObject);
begin
inherited;
if edtEmploye.Text = '' then
ADOSetMaster.FieldByName('EmployeID').AsInteger := 0;
end;
procedure TfrmBillEdit.edtDepotExit(Sender: TObject);
begin
inherited;
if edtDepot.Text = '' then
ADOSetMaster.FieldByName('DepotID').AsInteger := 0;
end;
procedure TfrmBillEdit.edtMoneySubButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
var
sAID: string;
begin
inherited;
if edtMoneySub.ReadOnly then Exit;
sAID := BaseSelect(BASE_SUBJECT, 1, '', 0, 0, 'And RootID in(1,5)');
if (sAID <> '') then
begin
ADOSetMaster.FieldByName('MoneySubID').AsInteger := StrToInt2(sAID);
edtMoneySub.Text := FieldIdToName('Subject', sAID, 'Name');
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -