1cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?> 2cdf0e10cSrcweir<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*3e02b54dSAndrew Rist<!--*********************************************************** 4*3e02b54dSAndrew Rist * 5*3e02b54dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 6*3e02b54dSAndrew Rist * or more contributor license agreements. See the NOTICE file 7*3e02b54dSAndrew Rist * distributed with this work for additional information 8*3e02b54dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 9*3e02b54dSAndrew Rist * to you under the Apache License, Version 2.0 (the 10*3e02b54dSAndrew Rist * "License"); you may not use this file except in compliance 11*3e02b54dSAndrew Rist * with the License. You may obtain a copy of the License at 12*3e02b54dSAndrew Rist * 13*3e02b54dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 14*3e02b54dSAndrew Rist * 15*3e02b54dSAndrew Rist * Unless required by applicable law or agreed to in writing, 16*3e02b54dSAndrew Rist * software distributed under the License is distributed on an 17*3e02b54dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*3e02b54dSAndrew Rist * KIND, either express or implied. See the License for the 19*3e02b54dSAndrew Rist * specific language governing permissions and limitations 20*3e02b54dSAndrew Rist * under the License. 21*3e02b54dSAndrew Rist * 22*3e02b54dSAndrew Rist ***********************************************************--> 23cdf0e10cSrcweir<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Depot" script:language="StarBasic">Option Explicit 24cdf0e10cSrcweir 25cdf0e10cSrcweir 26cdf0e10cSrcweirSub Initialize(Optional bChooseMarketPlace as Boolean) 27cdf0e10cSrcweirDim bEnableHistory as Boolean 28cdf0e10cSrcweir GlobalScope.BasicLibraries.LoadLibrary("Tools") 29cdf0e10cSrcweir' oMarketModel = GetControlModel(oDocument.Sheets(0), "CmdHistory") 30cdf0e10cSrcweir' bEnableHistory = oMarketModel.Enabled 31cdf0e10cSrcweir ToggleWindow(False) 32cdf0e10cSrcweir Today = Date() 33cdf0e10cSrcweir bDebugmode = False 34cdf0e10cSrcweir oDocument = ThisComponent 35cdf0e10cSrcweir oController = oDocument.GetCurrentController 36cdf0e10cSrcweir oSheets = oDocument.Sheets 37cdf0e10cSrcweir oFirstSheet = oSheets(0) 38cdf0e10cSrcweir oMovementSheet = oSheets(1) 39cdf0e10cSrcweir oBankSheet = oSheets(2) 40cdf0e10cSrcweir oDocFormats = oDocument.NumberFormats 41cdf0e10cSrcweir oNumberFormatter = CreateUnoService("com.sun.star.util.NumberFormatter") 42cdf0e10cSrcweir oNumberFormatter.AttachNumberFormatsSupplier(oDocument) 43cdf0e10cSrcweir oDocLocale = oDocument.CharLocale 44cdf0e10cSrcweir sDocLanguage = oDocLocale.Language 45cdf0e10cSrcweir sDocCountry = oDocLocale.Country 46cdf0e10cSrcweir LoadLanguage() 47cdf0e10cSrcweir ToggleWindow(True) 48cdf0e10cSrcweir' oMarketModel.Enabled = bEnableHistory 49cdf0e10cSrcweir If Not IsMissing(bChooseMarketPlace) Then 50cdf0e10cSrcweir If bChoosemarketPlace Then 51cdf0e10cSrcweir ChooseMarket() 52cdf0e10cSrcweir End If 53cdf0e10cSrcweir Else 54cdf0e10cSrcweir ChooseMarket() 55cdf0e10cSrcweir End If 56cdf0e10cSrcweir If Not IsMissing(bChooseMarketPlace) Then 57cdf0e10cSrcweir If bChooseMarketPlace Then 58cdf0e10cSrcweir oMarketModel.Enabled = bEnableMarket 59cdf0e10cSrcweir oInternetModel.Enabled = bEnableInternet 60cdf0e10cSrcweir End If 61cdf0e10cSrcweir End If 62cdf0e10cSrcweirEnd Sub 63cdf0e10cSrcweir 64cdf0e10cSrcweir 65cdf0e10cSrcweirSub Buy() 66cdf0e10cSrcweir Initialize(True) 67cdf0e10cSrcweir FillListbox(DlgTransaction.GetControl("lstBuyStocks"), TransactTitle(SBDIALOGBUY), False) 68cdf0e10cSrcweir SetupTransactionControls(SBDIALOGBUY) 69cdf0e10cSrcweir EnableTransactionControls(False) 70cdf0e10cSrcweir DlgTransaction.Execute() 71cdf0e10cSrcweirEnd Sub 72cdf0e10cSrcweir 73cdf0e10cSrcweir 74cdf0e10cSrcweirSub Sell() 75cdf0e10cSrcweir Initialize(True) 76cdf0e10cSrcweir If FillListbox(DlgTransaction.GetControl("lstSellStocks"), TransactTitle(SBDIALOGSELL), True) Then 77cdf0e10cSrcweir SetupTransactionControls(SBDIALOGSELL) 78cdf0e10cSrcweir EnableTransactionControls(False) 79cdf0e10cSrcweir DlgTransaction.Execute() 80cdf0e10cSrcweir End If 81cdf0e10cSrcweirEnd Sub 82cdf0e10cSrcweir 83cdf0e10cSrcweir 84cdf0e10cSrcweirSub Reset() 85cdf0e10cSrcweirDim TransactionCount as Integer 86cdf0e10cSrcweirDim StockCount, iStartRow, i as Integer 87cdf0e10cSrcweirDim oRows, oRange as Object 88cdf0e10cSrcweirDim StockName as String 89cdf0e10cSrcweir Initialize(True) 90cdf0e10cSrcweir ' Delete transactions and reset overview 91cdf0e10cSrcweir If MsgBox(sMsgDeleteAll, SBMSGYESNO+SBMSGQUESTION+SBMSGDEFAULTBTN2, sMsgAuthorization) = 6 Then 92cdf0e10cSrcweir ' Assumption: If and only if there is an overview, then there are transactions, too 93cdf0e10cSrcweir UnprotectSheets(oSheets) 94cdf0e10cSrcweir StockCount = GetStocksCount(iStartRow) 95cdf0e10cSrcweir 96cdf0e10cSrcweir For i = 1 To StockCount 97cdf0e10cSrcweir StockName = oFirstSheet.GetCellbyPosition(SBCOLUMNNAME1, iStartRow + i).String 98cdf0e10cSrcweir If oSheets.HasbyName(StockName) Then 99cdf0e10cSrcweir oSheets.RemoveByName(StockName) 100cdf0e10cSrcweir End If 101cdf0e10cSrcweir Next 102cdf0e10cSrcweir oDocument.AddActionLock 103cdf0e10cSrcweir RemoveStockRows(oFirstSheet, iStartRow + 1, StockCount) 104cdf0e10cSrcweir TransactionCount = GetTransactionCount(iStartRow) 105cdf0e10cSrcweir RemoveStockRows(oMovementSheet, iStartRow + 2, TransactionCount) 106cdf0e10cSrcweir ProtectSheets(oSheets) 107cdf0e10cSrcweir oDocument.RemoveActionLock 108cdf0e10cSrcweir End If 109cdf0e10cSrcweirEnd Sub 110cdf0e10cSrcweir 111cdf0e10cSrcweir 112cdf0e10cSrcweirSub TransactionOk 113cdf0e10cSrcweirDim Sold as Long 114cdf0e10cSrcweirDim RestQuantity, Value, PartialValue, Profit 115cdf0e10cSrcweirDim iNewRow as Integer, iRow as Integer 116cdf0e10cSrcweirDim iStockRow as Long, iRestQuantity as Long 117cdf0e10cSrcweirDim oNameCell as Object 118cdf0e10cSrcweirDim CellStockName as String, SelStockName as String 119cdf0e10cSrcweirDim CurRate as Double 120cdf0e10cSrcweirDim TransactDate as Date 121cdf0e10cSrcweirDim LocStockName as String 122cdf0e10cSrcweir ' Check for rate entered 123cdf0e10cSrcweir If TransactModel.txtRate.Value = 0 Then 124cdf0e10cSrcweir If TransactModel.Step = SBDIALOGBUY Then 125cdf0e10cSrcweir If MsgBox(sMsgFreeStock, SBMSGYESNO+SBMSGQUESTION, sMsgConfirm)=7 Then 126cdf0e10cSrcweir Exit Sub 127cdf0e10cSrcweir End If 128cdf0e10cSrcweir Else 129cdf0e10cSrcweir If MsgBox(sMsgTotalLoss, SBMSGYESNO+SBMSGQUESTION, sMsgConfirm)=7 Then 130cdf0e10cSrcweir Exit Sub 131cdf0e10cSrcweir End If 132cdf0e10cSrcweir End If 133cdf0e10cSrcweir End If 134cdf0e10cSrcweir CurRate = TransactModel.txtRate.Value 135cdf0e10cSrcweir TransactDate = CDateFromISO(TransactModel.txtDate.Date) 136cdf0e10cSrcweir DlgTransaction.EndExecute() 137cdf0e10cSrcweir UnprotectSheets(oSheets) 138cdf0e10cSrcweir 139cdf0e10cSrcweir iNewRow = DuplicateRow(oMovementSheet, "HiddenRow3") 140cdf0e10cSrcweir 141cdf0e10cSrcweir If TransactModel.Step = SBDIALOGBUY Then 142cdf0e10cSrcweir CellStockName = TransactModel.lstBuyStocks.Text 143cdf0e10cSrcweir If Instr(1,CellStockName,"$") <> 0 Then 144cdf0e10cSrcweir CellStockName = "'" & CellStockName & "'" 145cdf0e10cSrcweir End If 146cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNNAME2, iNewRow).String = CellStockName 147cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNQUANTITY2, iNewRow).Value = TransactModel.txtQuantity.Value 148cdf0e10cSrcweir Else 149cdf0e10cSrcweir CellStockName = DlgTransaction.GetControl("lstSellStocks").GetSelectedItem() 150cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNNAME2, iNewRow).String = CellStockName 151cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNQUANTITY2, iNewRow).Value = -TransactModel.txtQuantity.Value 152cdf0e10cSrcweir End If 153cdf0e10cSrcweir 154cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNDATE2, iNewRow).Value = CDateFromISO(TransactModel.txtDate.Date) 155cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNRATE2, iNewRow).Value = TransactModel.txtRate.Value 156cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNPROVPERCENT2, iNewRow).Value = TransactModel.txtCommission.EffectiveValue 157cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNPROVMIN2, iNewRow).Value = TransactModel.txtMinimum.Value 158cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNPROVFIX2, iNewRow).Value = TransactModel.txtFix.Value 159cdf0e10cSrcweir 160cdf0e10cSrcweir ' Buy stocks: Update overview for new stocks 161cdf0e10cSrcweir If TransactModel.Step = SBDIALOGBUY Then 162cdf0e10cSrcweir iStockRow = GetStockRowIndex(CellStockName) 163cdf0e10cSrcweir If iStockRow = -1 Then 164cdf0e10cSrcweir iNewRow = DuplicateRow(oFirstSheet, "HiddenRow2") 165cdf0e10cSrcweir oFirstSheet.GetCellByPosition(SBCOLUMNNAME1, iNewRow).String = CellStockName 166cdf0e10cSrcweir oFirstSheet.GetCellByPosition(SBCOLUMNID1, iNewRow).String = TransactModel.txtStockID.Text 167cdf0e10cSrcweir iStockRow = GetStockRowIndex(CellStockName) 168cdf0e10cSrcweir End If 169cdf0e10cSrcweir ' Sell stocks: Get transaction value, then update Transaction sheet 170cdf0e10cSrcweir ElseIf TransactModel.Step = SBDIALOGSELL Then 171cdf0e10cSrcweir Profit = oMovementSheet.GetCellByPosition(SBCOLUMNPROCEEDS2, iNewRow).Value 172cdf0e10cSrcweir Value = Profit 173cdf0e10cSrcweir Sold = TransactModel.txtQuantity.Value 174cdf0e10cSrcweir SelStockName = DlgTransaction.GetControl("lstSellStocks").GetSelectedItem() 175cdf0e10cSrcweir ' Go to first name 176cdf0e10cSrcweir If TransactMode = FIFO Then 177cdf0e10cSrcweir iRow = SBROWFIRSTTRANSACT2 178cdf0e10cSrcweir Else 179cdf0e10cSrcweir iRow = iNewRow-1 180cdf0e10cSrcweir End If 181cdf0e10cSrcweir 182cdf0e10cSrcweir ' Check that no transaction after split date exists else cancel split 183cdf0e10cSrcweir Do While Sold > 0 184cdf0e10cSrcweir oNameCell = oMovementSheet.GetCellByPosition(SBCOLUMNNAME2, iRow) 185cdf0e10cSrcweir CellStockName = oNameCell.String 186cdf0e10cSrcweir If CellStockName = SelStockName Then 187cdf0e10cSrcweir ' Update transactions: Note quantity sold 188cdf0e10cSrcweir RestQuantity = oMovementSheet.GetCellByPosition(SBCOLUMNQTYREST2, iRow).Value 189cdf0e10cSrcweir ' If there still is a rest left ... 190cdf0e10cSrcweir If RestQuantity > 0 Then 191cdf0e10cSrcweir If RestQuantity < Sold Then 192cdf0e10cSrcweir ' Recalculate profit of new transaction 193cdf0e10cSrcweir Profit = Profit - oMovementSheet.GetCellByPosition(SBCOLUMNPRCREST2, iRow).Value 194cdf0e10cSrcweir AddValueToCellContent(SBCOLUMNQTYSOLD2, iRow, RestQuantity) 195cdf0e10cSrcweir PartialValue = RestQuantity / Sold * Value 196cdf0e10cSrcweir AddValueToCellContent(SBCOLUMNREALPROC2, iRow, PartialValue) 197cdf0e10cSrcweir Sold = Sold - RestQuantity 198cdf0e10cSrcweir Value = Value - PartialValue 199cdf0e10cSrcweir Else 200cdf0e10cSrcweir ' Recalculate profit of neTransactModel.lstBuyStocks.Textw transaction 201cdf0e10cSrcweir PartialValue = oMovementSheet.GetCellByPosition(SBCOLUMNPRCREST2, iRow).Value 202cdf0e10cSrcweir Profit = Profit - PartialValue/RestQuantity * Sold 203cdf0e10cSrcweir ' Update sold shares cell 204cdf0e10cSrcweir AddValueToCellContent(SBCOLUMNQTYSOLD2, iRow, Sold) 205cdf0e10cSrcweir ' Update sales turnover cell 206cdf0e10cSrcweir AddValueToCellContent(SBCOLUMNREALPROC2, iRow, Value) 207cdf0e10cSrcweir ' Update variables for rest of transaction 208cdf0e10cSrcweir Sold = 0 209cdf0e10cSrcweir Value = 0 210cdf0e10cSrcweir End If 211cdf0e10cSrcweir End If 212cdf0e10cSrcweir End If 213cdf0e10cSrcweir iRow = iRow + TransactMode 214cdf0e10cSrcweir Loop 215cdf0e10cSrcweir oMovementSheet.GetCellByPosition(SBCOLUMNREALPROFIT2,iNewRow).Value = Profit 216cdf0e10cSrcweir iStockRow = GetStockRowIndex(SelStockName) 217cdf0e10cSrcweir iRestQuantity = oFirstSheet.GetCellbyPosition(SBCOLUMNQUANTITY1, iStockRow).Value 218cdf0e10cSrcweir' If iRestQuantity = 0 Then 219cdf0e10cSrcweir' If oSheets.HasbyName(SelStockName) Then 220cdf0e10cSrcweir' oSheets.RemoveByName(SelStockName) 221cdf0e10cSrcweir' End If 222cdf0e10cSrcweir' Else 223cdf0e10cSrcweir 224cdf0e10cSrcweir' End If 225cdf0e10cSrcweir End If 226cdf0e10cSrcweir InsertCurrentValue(CurRate, iStockRow,TransactDate) 227cdf0e10cSrcweir ProtectSheets(oSheets) 228cdf0e10cSrcweirEnd Sub 229cdf0e10cSrcweir 230cdf0e10cSrcweir 231cdf0e10cSrcweirSub SelectStockname(aEvent as Object) 232cdf0e10cSrcweirDim iCurRow as Integer 233cdf0e10cSrcweirDim CurStockName as String 234cdf0e10cSrcweir With TransactModel 235cdf0e10cSrcweir ' Find row with stock name 236cdf0e10cSrcweir If TransactModel.Step = SBDIALOGBUY Then 237cdf0e10cSrcweir CurStockName = .lstBuyStocks.Text 238cdf0e10cSrcweir iCurRow = GetStockRowIndex(CurStockName) 239cdf0e10cSrcweir .txtQuantity.ValueMax = 10000000 240cdf0e10cSrcweir Else 241cdf0e10cSrcweir Dim ListBoxList() as String 242cdf0e10cSrcweir ListBoxList() = GetSelectedListboxItems(aEvent.Source.getModel()) 243cdf0e10cSrcweir CurStockName = ListBoxList(0) 244cdf0e10cSrcweir' CurStockName = DlgTransaction.GetControl(aEvent.Source.getModel.Name).GetSelectedItem() 245cdf0e10cSrcweir iCurRow = GetStockRowIndex(CurStockName) 246cdf0e10cSrcweir Dim fdouble as Double 247cdf0e10cSrcweir fdouble = oFirstSheet.GetCellByPosition(SBCOLUMNQUANTITY1, iCurRow).Value 248cdf0e10cSrcweir .txtQuantity.Value = fdouble 249cdf0e10cSrcweir .txtQuantity.ValueMax = oFirstSheet.GetCellByPosition(SBCOLUMNQUANTITY1, iCurRow).Value 250cdf0e10cSrcweir .txtRate.Value = oFirstSheet.GetCellbyPosition(SBCOLUMNRATE1, iCurRow).Value 251cdf0e10cSrcweir End If 252cdf0e10cSrcweir .txtStockID.Enabled = .Step = SBDIALOGBUY 253cdf0e10cSrcweir .lblStockID.Enabled = .Step = SBDIALOGBUY 254cdf0e10cSrcweir ' Default settings for quantity and rate 255cdf0e10cSrcweir .txtStockID.Text = GetStockID(CurStockName, iCurRow) 256cdf0e10cSrcweir End With 257cdf0e10cSrcweir EnableTransactionControls(CurStockName <> "") 258cdf0e10cSrcweir TransactModel.cmdGoOn.DefaultButton = True 259cdf0e10cSrcweirEnd Sub 260cdf0e10cSrcweir 261cdf0e10cSrcweir 262cdf0e10cSrcweir 263cdf0e10cSrcweirSub HandleStocks(Mode as Integer, oDialog as Object) 264cdf0e10cSrcweirDim DividendPerShare, DividendTotal, RestQuantity, OldValue 265cdf0e10cSrcweirDim SelStockName, CellStockName as String 266cdf0e10cSrcweirDim oNameCell as Object, oDateCell as Object 267cdf0e10cSrcweirDim iRow as Integer 268cdf0e10cSrcweirDim oDividendCell as Object 269cdf0e10cSrcweirDim Amount 270cdf0e10cSrcweirDim OldNumber, NewNumber as Integer 271cdf0e10cSrcweirDim NoteText as String 272cdf0e10cSrcweirDim TotalStocksCount as Long 273cdf0e10cSrcweirDim oModel as Object 274cdf0e10cSrcweir oDocument.AddActionLock 275cdf0e10cSrcweir oDialog.EndExecute() 276cdf0e10cSrcweir oModel = oDialog.Model 277cdf0e10cSrcweir SelStockName = DlgStockRates.GetControl("lstStockNames").GetSelectedItem() 278cdf0e10cSrcweir Select Case Mode 279cdf0e10cSrcweir Case HANDLEDIVIDEND 280cdf0e10cSrcweir Dim bTakeTotal as Boolean 281cdf0e10cSrcweir ' Update transactions: Enter dividend paid for all Buy transactions not sold completely 282cdf0e10cSrcweir bTakeTotal = oModel.optTotal.State = 1 283cdf0e10cSrcweir If bTakeTotal Then 284cdf0e10cSrcweir DividendTotal = oModel.txtDividend.Value 285cdf0e10cSrcweir iRow = GetStockRowIndex(SelStockName) 286cdf0e10cSrcweir TotalStocksCount = oFirstSheet.GetCellByPosition(SBCOLUMNQUANTITY1,iRow).Value 287cdf0e10cSrcweir DividendPerShare = DividendTotal/TotalStocksCount 288cdf0e10cSrcweir Else 289cdf0e10cSrcweir DividendPerShare = oModel.txtDividend.Value 290cdf0e10cSrcweir End If 291cdf0e10cSrcweir 292cdf0e10cSrcweir Case HANDLESPLIT 293cdf0e10cSrcweir ' Store entered values in variables 294cdf0e10cSrcweir OldNumber = oModel.txtOldRate.Value 295cdf0e10cSrcweir NewNumber = oModel.txtNewRate.Value 296cdf0e10cSrcweir SplitDate = CDateFromISO(oModel.txtDate.Date) 297cdf0e10cSrcweir iRow = SBROWFIRSTTRANSACT2 298cdf0e10cSrcweir NoteText = cSplit & SplitDate & ", " & oModel.txtOldRate.Value & oModel.lblColon.Label & oModel.txtNewRate.Value 299cdf0e10cSrcweir Do 300cdf0e10cSrcweir oNameCell = oMovementSheet.GetCellByPosition(SBCOLUMNNAME2, iRow) 301cdf0e10cSrcweir CellStockName = oNameCell.String 302cdf0e10cSrcweir If CellStockName = SelStockName Then 303cdf0e10cSrcweir oDateCell = oMovementSheet.GetCellByPosition(SBCOLUMNDATE2, iRow) 304cdf0e10cSrcweir If oDateCell.Value >= SplitDate Then 305cdf0e10cSrcweir MsgBox sMsgWrongExchangeDate, SBMSGOK + SBMSGSTOP, sMsgError 306cdf0e10cSrcweir Exit Sub 307cdf0e10cSrcweir End If 308cdf0e10cSrcweir End If 309cdf0e10cSrcweir iRow = iRow + 1 310cdf0e10cSrcweir Loop Until CellStockName = "" 311cdf0e10cSrcweir End Select 312cdf0e10cSrcweir iRow = SBROWFIRSTTRANSACT2 313cdf0e10cSrcweir UnprotectSheets(oSheets) 314cdf0e10cSrcweir Do 315cdf0e10cSrcweir oNameCell = oMovementSheet.GetCellByPosition(SBCOLUMNNAME2, iRow) 316cdf0e10cSrcweir CellStockName = oNameCell.String 317cdf0e10cSrcweir If CellStockName = SelStockName Then 318cdf0e10cSrcweir Select Case Mode 319cdf0e10cSrcweir Case HANDLEDIVIDEND 320cdf0e10cSrcweir RestQuantity = oMovementSheet.GetCellByPosition(SBCOLUMNQTYREST2, iRow).Value 321cdf0e10cSrcweir If RestQuantity > 0 Then 322cdf0e10cSrcweir oDividendCell = oMovementSheet.GetCellByPosition(SBCOLUMNDIVIDEND2, iRow) 323cdf0e10cSrcweir OldValue = oDividendCell.Value 324cdf0e10cSrcweir oDividendCell.Value = OldValue + RestQuantity * DividendPerShare 325cdf0e10cSrcweir End If 326cdf0e10cSrcweir Case HANDLESPLIT 327cdf0e10cSrcweir oDateCell = oMovementSheet.GetCellByPosition(SBCOLUMNDATE2, iRow) 328cdf0e10cSrcweir SplitCellValue(oMovementSheet, NewNumber, OldNumber, SBCOLUMNQUANTITY2, iRow, NoteText) 329cdf0e10cSrcweir SplitCellValue(oMovementSheet, OldNumber, NewNumber, SBCOLUMNRATE2, iRow, "") 330cdf0e10cSrcweir SplitCellValue(oMovementSheet, NewNumber, OldNumber, SBCOLUMNQTYSOLD2, iRow, "") 331cdf0e10cSrcweir End Select 332cdf0e10cSrcweir End If 333cdf0e10cSrcweir iRow = iRow + 1 334cdf0e10cSrcweir Loop Until CellStockName = "" 335cdf0e10cSrcweir If Mode = HANDLESPLIT Then 336cdf0e10cSrcweir CalculateChartafterSplit(SelStockName, NewNumber, OldNumber, NoteText, SplitDate) 337cdf0e10cSrcweir End If 338cdf0e10cSrcweir oDocument.CalculateAll() 339cdf0e10cSrcweir ProtectSheets(oSheets) 340cdf0e10cSrcweir oDocument.RemoveActionLock 341cdf0e10cSrcweirEnd Sub 342cdf0e10cSrcweir 343cdf0e10cSrcweir 344cdf0e10cSrcweirSub CancelStockRate() 345cdf0e10cSrcweir DlgStockRates.EndExecute() 346cdf0e10cSrcweirEnd Sub 347cdf0e10cSrcweir 348cdf0e10cSrcweir 349cdf0e10cSrcweirSub CancelTransaction() 350cdf0e10cSrcweir DlgTransaction.EndExecute() 351cdf0e10cSrcweirEnd Sub 352cdf0e10cSrcweir 353cdf0e10cSrcweir 354cdf0e10cSrcweirSub CommitStockRate() 355cdf0e10cSrcweirDim CurStep as Integer 356cdf0e10cSrcweir CurStep = StockRatesModel.Step 357cdf0e10cSrcweir Select Case CurStep 358cdf0e10cSrcweir Case 1 359cdf0e10cSrcweir ' Check for quantity entered 360cdf0e10cSrcweir If StockRatesModel.txtDividend.Value = 0 Then 361cdf0e10cSrcweir MsgBox sMsgNoDividend, SBMSGSTOP+SBMSGSTOP, sMsgError 362cdf0e10cSrcweir Exit Sub 363cdf0e10cSrcweir End If 364cdf0e10cSrcweir HandleStocks(HANDLEDIVIDEND, DlgStockRates) 365cdf0e10cSrcweir Case 2 366cdf0e10cSrcweir HandleStocks(HANDLESPLIT, DlgStockRates) 367cdf0e10cSrcweir Case 3 368cdf0e10cSrcweir InsertCompanyHistory() 369cdf0e10cSrcweir End Select 370cdf0e10cSrcweirEnd Sub 371cdf0e10cSrcweir 372cdf0e10cSrcweir 373cdf0e10cSrcweirSub EnableTransactionControls(bEnable as Boolean) 374cdf0e10cSrcweir With TransactModel 375cdf0e10cSrcweir .lblQuantity.Enabled = bEnable 376cdf0e10cSrcweir .txtQuantity.Enabled = bEnable 377cdf0e10cSrcweir .lblRate.Enabled = bEnable 378cdf0e10cSrcweir .txtRate.Enabled = bEnable 379cdf0e10cSrcweir .lblDate.Enabled = bEnable 380cdf0e10cSrcweir .txtDate.Enabled = bEnable 381cdf0e10cSrcweir .lblCommission.Enabled = bEnable 382cdf0e10cSrcweir .txtCommission.Enabled = bEnable 383cdf0e10cSrcweir .lblMinimum.Enabled = bEnable 384cdf0e10cSrcweir .txtMinimum.Enabled = bEnable 385cdf0e10cSrcweir .lblFix.Enabled = bEnable 386cdf0e10cSrcweir .txtFix.Enabled = bEnable 387cdf0e10cSrcweir If TransactModel.Step = SBDIALOGSELL Then 388cdf0e10cSrcweir .cmdGoOn.Enabled = Ubound(TransactModel.lstSellStocks.SelectedItems()) > -1 389cdf0e10cSrcweir DlgTransaction.GetControl("lstSellStocks").SetFocus() 390cdf0e10cSrcweir Else 391cdf0e10cSrcweir .cmdGoOn.Enabled = TransactModel.lstBuyStocks.Text <> "" 392cdf0e10cSrcweir DlgTransaction.GetControl("lstBuyStocks").SetFocus() 393cdf0e10cSrcweir End If 394cdf0e10cSrcweir If bEnable Then 395cdf0e10cSrcweir TransactModel.cmdGoOn.DefaultButton = True 396cdf0e10cSrcweir End If 397cdf0e10cSrcweir End With 398cdf0e10cSrcweirEnd Sub 399cdf0e10cSrcweir 400cdf0e10cSrcweir 401cdf0e10cSrcweirSub SetupTransactionControls(CurStep as Integer) 402cdf0e10cSrcweir DlgReference = DlgTransaction 403cdf0e10cSrcweir With TransactModel 404cdf0e10cSrcweir .txtDate.Date = CDateToISO(Date()) 405cdf0e10cSrcweir .txtDate.DateMax = CDateToISO(Date()) 406cdf0e10cSrcweir .txtStockID.Enabled = False 407cdf0e10cSrcweir .lblStockID.Enabled = False 408cdf0e10cSrcweir .lblStockID.Label = sCurStockIDLabel 409cdf0e10cSrcweir .txtRate.CurrencySymbol = sCurCurrency 410cdf0e10cSrcweir .txtFix.CurrencySymbol = sCurCurrency 411cdf0e10cSrcweir .Step = CurStep 412cdf0e10cSrcweir End With 413cdf0e10cSrcweir DlgTransaction.Title = TransactTitle(CurStep) 414cdf0e10cSrcweir CellValuetoControl(oBankSheet, TransactModel.txtCommission, "ProvisionPercent") 415cdf0e10cSrcweir CellValuetoControl(oBankSheet, TransactModel.txtMinimum, "ProvisionMinimum") 416cdf0e10cSrcweir CellValuetoControl(oBankSheet, TransactModel.txtFix, "ProvisionFix") 417cdf0e10cSrcweirEnd Sub 418cdf0e10cSrcweir 419cdf0e10cSrcweir 420cdf0e10cSrcweirSub AddShortCuttoControl() 421cdf0e10cSrcweirDim SelCompany as String 422cdf0e10cSrcweirDim iRow, SelIndex as Integer 423cdf0e10cSrcweir SelIndex = DlgTransaction.GetControl("lstBuyStocks").GetSelectedItemPos() 424cdf0e10cSrcweir If SelIndex <> -1 Then 425cdf0e10cSrcweir SelCompany = TransactModel.lstBuyStocks.StringItemList(SelIndex) 426cdf0e10cSrcweir iRow = GetStockRowIndex(SelCompany) 427cdf0e10cSrcweir If iRow <> -1 Then 428cdf0e10cSrcweir TransactModel.txtStockID.Text = oFirstSheet.GetCellByPosition(SBCOLUMNID1,iRow).String 429cdf0e10cSrcweir TransactModel.txtRate.Value = oFirstSheet.GetCellByPosition(SBCOLUMNRATE1,iRow).Value 430cdf0e10cSrcweir Else 431cdf0e10cSrcweir TransactModel.txtStockID.Text = "" 432cdf0e10cSrcweir TransactModel.txtRate.Value = 0 433cdf0e10cSrcweir End If 434cdf0e10cSrcweir Else 435cdf0e10cSrcweir TransactModel.txtStockID.Text = "" 436cdf0e10cSrcweir TransactModel.txtRate.Value = 0 437cdf0e10cSrcweir End If 438cdf0e10cSrcweirEnd Sub 439cdf0e10cSrcweir 440cdf0e10cSrcweir 441cdf0e10cSrcweirSub OpenStockRatePage(aEvent) 442cdf0e10cSrcweirDim CurStep as Integer 443cdf0e10cSrcweir Initialize(True) 444cdf0e10cSrcweir CurStep = aEvent.Source.Model.Tag 445cdf0e10cSrcweir If FillListbox(DlgStockRates.GetControl("lstStockNames"), StockRatesTitle(CurStep), True) Then 446cdf0e10cSrcweir StockRatesModel.Step = CurStep 447cdf0e10cSrcweir ToggleStockRateControls(False, CurStep) 448cdf0e10cSrcweir InitializeStockRatesControls(CurStep) 449cdf0e10cSrcweir DlgStockRates.Execute() 450cdf0e10cSrcweir End If 451cdf0e10cSrcweirEnd Sub 452cdf0e10cSrcweir 453cdf0e10cSrcweir 454cdf0e10cSrcweirSub SelectStockNameForRates() 455cdf0e10cSrcweirDim StockName as String 456cdf0e10cSrcweir StockName = DlgStockRates.GetControl("lstStockNames").GetSelectedItem() 457cdf0e10cSrcweir If StockName <> "" Then 458cdf0e10cSrcweir StockRatesModel.txtStockID.Text = GetStockID(StockName) 459cdf0e10cSrcweir ToggleStockRateControls(True, StockRatesModel.Step) 460cdf0e10cSrcweir End If 461cdf0e10cSrcweir StockRatesModel.cmdGoOn.DefaultButton = True 462cdf0e10cSrcweirEnd Sub 463cdf0e10cSrcweir 464cdf0e10cSrcweir 465cdf0e10cSrcweirSub ToggleStockRateControls(bDoEnable as Boolean, CurStep as Integer) 466cdf0e10cSrcweir With StockRatesModel 467cdf0e10cSrcweir .lblStockID.Enabled = False 468cdf0e10cSrcweir .txtStockID.Enabled = False 469cdf0e10cSrcweir .cmdGoOn.Enabled = Ubound(StockRatesModel.lstStockNames.SelectedItems()) <> -1 470cdf0e10cSrcweir Select Case CurStep 471cdf0e10cSrcweir Case 1 472cdf0e10cSrcweir .optPerShare.Enabled = bDoEnable 473cdf0e10cSrcweir .optTotal.Enabled = bDoEnable 474cdf0e10cSrcweir .lblDividend.Enabled = bDoEnable 475cdf0e10cSrcweir .txtDividend.Enabled = bDoEnable 476cdf0e10cSrcweir Case 2 477cdf0e10cSrcweir .lblExchangeRate.Enabled = bDoEnable 478cdf0e10cSrcweir .lblDate.Enabled = bDoEnable 479cdf0e10cSrcweir .lblColon.Enabled = bDoEnable 480cdf0e10cSrcweir .txtOldRate.Enabled = bDoEnable 481cdf0e10cSrcweir .txtNewRate.Enabled = bDoEnable 482cdf0e10cSrcweir .txtDate.Enabled = bDoEnable 483cdf0e10cSrcweir Case 3 484cdf0e10cSrcweir .lblStartDate.Enabled = bDoEnable 485cdf0e10cSrcweir .lblEndDate.Enabled = bDoEnable 486cdf0e10cSrcweir .txtStartDate.Enabled = bDoEnable 487cdf0e10cSrcweir .txtEndDate.Enabled = bDoEnable 488cdf0e10cSrcweir .hlnInterval.Enabled = bDoEnable 489cdf0e10cSrcweir .optDaily.Enabled = bDoEnable 490cdf0e10cSrcweir .optWeekly.Enabled = bDoEnable 491cdf0e10cSrcweir End Select 492cdf0e10cSrcweir End With 493cdf0e10cSrcweirEnd Sub 494cdf0e10cSrcweir 495cdf0e10cSrcweir 496cdf0e10cSrcweirSub InitializeStockRatesControls(CurStep as Integer) 497cdf0e10cSrcweir DlgReference = DlgStockRates 498cdf0e10cSrcweir DlgStockRates.Title = StockRatesTitle(CurStep) 499cdf0e10cSrcweir With StockRatesModel 500cdf0e10cSrcweir .txtStockID.Text = "" 501cdf0e10cSrcweir .lblStockID.Label = sCurStockIDLabel 502cdf0e10cSrcweir Select Case CurStep 503cdf0e10cSrcweir Case 1 504cdf0e10cSrcweir .txtDividend.Value = 0 505cdf0e10cSrcweir .optPerShare.State = 1 506cdf0e10cSrcweir .txtDividend.CurrencySymbol = sCurCurrency 507cdf0e10cSrcweir Case 2 508cdf0e10cSrcweir .txtOldRate.Value = 1 509cdf0e10cSrcweir .txtNewRate.Value = 1 510cdf0e10cSrcweir .txtDate.Date = CDateToISO(Date()) 511cdf0e10cSrcweir Case 3 512cdf0e10cSrcweir .txtStartDate.DateMax = CDateToISO(CDate(Date())-1) 513cdf0e10cSrcweir .txtEndDate.DateMax = CDateToISO(CDate(Date())-1) 514cdf0e10cSrcweir .txtStartDate.Date = CDateToISO(CDate(Date())-8) 515cdf0e10cSrcweir .txtEndDate.Date = CDateToISO(CDate(Date())-1) 516cdf0e10cSrcweir .optDaily.State = 1 517cdf0e10cSrcweir End Select 518cdf0e10cSrcweir End With 519cdf0e10cSrcweirEnd Sub 520*3e02b54dSAndrew Rist</script:module> 521