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

📄 billedit.pas

📁 进销存·完整的·有数据库的·非常完整·只得参考
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    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 + -