ReportosCE.vb 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778
  1. Public Class ReportosCE
  2. Private _CodigoInversion As String
  3. Private _CodigoCasa As String
  4. Private _Nombre As String
  5. Private _FechaDeCompra As Date
  6. Private _ValorTransado As Double
  7. Private _Dias As Integer
  8. Private _FechaVencimiento As Date
  9. Private _Rendimiento As Double
  10. Private _Impuestos As Double
  11. Private _OtrosCostos As Double
  12. Private _TotalCostos As Double
  13. Private _MontoALiquidar As Double
  14. Private _InteresAGenerar As Double
  15. Private _CostoDeTransferencia As Double
  16. Private _RendimientoNetoAntesDeImpuestos As Double
  17. Private _ValorReCompra As Double
  18. Private _ImpuestosLiquidacion As Double
  19. Private _IngresoNeto As Double
  20. Private _ValorNeto As Double
  21. Private _RendimientoNetoDespuesDeImpuestos As Double
  22. Private Operaciones As New Operaciones
  23. Public Property CodigoInversion As String
  24. Get
  25. Return _CodigoInversion
  26. End Get
  27. Set(value As String)
  28. _CodigoInversion = value
  29. End Set
  30. End Property
  31. Public Property CodigoCasa As String
  32. Get
  33. Return _CodigoCasa
  34. End Get
  35. Set(value As String)
  36. _CodigoCasa = value
  37. End Set
  38. End Property
  39. Public Property Nombre As String
  40. Get
  41. Return _Nombre
  42. End Get
  43. Set(value As String)
  44. _Nombre = value
  45. End Set
  46. End Property
  47. Public Property FechaDeCompra As Date
  48. Get
  49. Return _FechaDeCompra
  50. End Get
  51. Set(value As Date)
  52. _FechaDeCompra = value
  53. End Set
  54. End Property
  55. Public Property ValorTransado As Double
  56. Get
  57. Return _ValorTransado
  58. End Get
  59. Set(value As Double)
  60. _ValorTransado = value
  61. Calcular_MontoALiquidar()
  62. Calcular_InteresAGenerar()
  63. Caluclar_RendimientoNetoAntesImpuestos()
  64. Calcular_ValorRecompra()
  65. Calcular_ValorNeto()
  66. Calcular_RendimientoNetoDespuesImpuestos()
  67. End Set
  68. End Property
  69. Public Property Dias As Integer
  70. Get
  71. Return _Dias
  72. End Get
  73. Set(value As Integer)
  74. _Dias = value
  75. Calcular_InteresAGenerar()
  76. Caluclar_RendimientoNetoAntesImpuestos()
  77. Calcular_RendimientoNetoDespuesImpuestos()
  78. End Set
  79. End Property
  80. Public Property FechaVencimiento As Date
  81. Get
  82. Return _FechaVencimiento
  83. End Get
  84. Set(value As Date)
  85. _FechaVencimiento = value
  86. End Set
  87. End Property
  88. Public Property Rendimiento As Double
  89. Get
  90. Return _Rendimiento
  91. End Get
  92. Set(value As Double)
  93. _Rendimiento = value
  94. Calcular_InteresAGenerar()
  95. End Set
  96. End Property
  97. Public Property Impuestos As Double
  98. Get
  99. Return _Impuestos
  100. End Get
  101. Set(value As Double)
  102. _Impuestos = value
  103. End Set
  104. End Property
  105. Public Property OtrosCostos As Double
  106. Get
  107. Return _OtrosCostos
  108. End Get
  109. Set(value As Double)
  110. _OtrosCostos = value
  111. End Set
  112. End Property
  113. Public ReadOnly Property TotalCostos As Double
  114. Get
  115. Return _TotalCostos
  116. End Get
  117. End Property
  118. Public Property MontoALiquidar As Double
  119. Get
  120. Return _MontoALiquidar
  121. End Get
  122. Set(value As Double)
  123. _MontoALiquidar = value
  124. End Set
  125. End Property
  126. Public ReadOnly Property InteresAGenerar As Double
  127. Get
  128. Return _InteresAGenerar
  129. End Get
  130. End Property
  131. Public Property CostoDeTransferencia As Double
  132. Get
  133. Return _CostoDeTransferencia
  134. End Get
  135. Set(value As Double)
  136. _CostoDeTransferencia = value
  137. Calcular_ValorNeto()
  138. End Set
  139. End Property
  140. Public ReadOnly Property RendimientoNetoAntesDeImpuestos As Double
  141. Get
  142. Return _RendimientoNetoAntesDeImpuestos
  143. End Get
  144. End Property
  145. Public Property ValorReCompra As Double
  146. Get
  147. Return _ValorReCompra
  148. End Get
  149. Set(value As Double)
  150. _ValorReCompra = value
  151. End Set
  152. End Property
  153. Public Property ImpuestosLiquidacion As Double
  154. Get
  155. Return _ImpuestosLiquidacion
  156. End Get
  157. Set(value As Double)
  158. _ImpuestosLiquidacion = value
  159. End Set
  160. End Property
  161. Public ReadOnly Property IngresoNeto As Double
  162. Get
  163. Return _IngresoNeto
  164. End Get
  165. End Property
  166. Public Property ValorNeto As Double
  167. Get
  168. Return _ValorNeto
  169. End Get
  170. Set(value As Double)
  171. _ValorNeto = value
  172. End Set
  173. End Property
  174. Public ReadOnly Property RendimientoNetoDespuesDeImpuestos As Double
  175. Get
  176. Return _RendimientoNetoDespuesDeImpuestos
  177. End Get
  178. End Property
  179. Private Sub Calcular_TotalCostos()
  180. Dim valor As Double
  181. valor = 0
  182. _TotalCostos = valor
  183. Calcular_MontoALiquidar()
  184. Caluclar_RendimientoNetoAntesImpuestos()
  185. Calcular_RendimientoNetoDespuesImpuestos()
  186. End Sub
  187. Private Sub Calcular_MontoALiquidar()
  188. Dim valor As Double
  189. valor = _ValorTransado + _TotalCostos
  190. _MontoALiquidar = valor
  191. End Sub
  192. Private Sub Calcular_InteresAGenerar()
  193. Dim valor As Double
  194. valor = _ValorTransado * (_Rendimiento / 100) * _Dias / 365
  195. _InteresAGenerar = valor
  196. Caluclar_RendimientoNetoAntesImpuestos()
  197. Calcular_ValorRecompra()
  198. Calcular_ISR()
  199. Calcular_IngresoNeto()
  200. End Sub
  201. Private Sub Caluclar_RendimientoNetoAntesImpuestos()
  202. Dim valor As Double
  203. valor = ((_InteresAGenerar - _TotalCostos) / _ValorTransado) * (365 / _Dias)
  204. _RendimientoNetoAntesDeImpuestos = valor * 100
  205. End Sub
  206. Private Sub Calcular_ValorRecompra()
  207. Dim valor As Double
  208. valor = _ValorTransado + _InteresAGenerar
  209. _ValorReCompra = valor
  210. End Sub
  211. Private Sub Calcular_ISR()
  212. Dim valor As Double
  213. valor = _InteresAGenerar * 0.1
  214. _ImpuestosLiquidacion = valor
  215. Calcular_IngresoNeto()
  216. End Sub
  217. Private Sub Calcular_IngresoNeto()
  218. Dim valor As Double
  219. valor = _InteresAGenerar - _ImpuestosLiquidacion
  220. _IngresoNeto = valor
  221. Calcular_ValorNeto()
  222. Calcular_RendimientoNetoDespuesImpuestos()
  223. End Sub
  224. Private Sub Calcular_ValorNeto()
  225. Dim valor As Double
  226. valor = _ValorTransado + _IngresoNeto - _CostoDeTransferencia
  227. _ValorNeto = valor
  228. End Sub
  229. Private Sub Calcular_RendimientoNetoDespuesImpuestos()
  230. Dim valor As Double
  231. valor = (_IngresoNeto - _TotalCostos) / _ValorTransado * 365 / _Dias
  232. _RendimientoNetoDespuesDeImpuestos = valor * 100
  233. End Sub
  234. Function FechaDeVencimiento(ByVal fecha As Date, ByVal dias As Integer)
  235. Dim Valor = fecha.AddDays(dias)
  236. Return Valor
  237. End Function
  238. Function Comision(ByVal valortrasado As String, ByVal dias As Integer, ByVal por As Double, ByVal Fecha1 As Date, ByVal Fecha2 As Date, ByVal IndexBase As Integer)
  239. Dim Valor As Double = 0
  240. Valor = valortrasado * dias * por / 365
  241. Return Valor
  242. 'If (IndexBase = 0) Then
  243. ' Valor = valortrasado * dias * (por / 100) / 360
  244. ' Return Valor
  245. 'ElseIf (IndexBase = 1) Then
  246. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  247. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  248. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  249. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  250. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  251. ' PrOpc1 = valortrasado * DiasPrimeraFecha * (por / 100) / 366
  252. ' PrOpc2 = valortrasado * DiasSegundaFecha * (por / 100) / 365
  253. ' Valor = PrOpc1 + PrOpc2
  254. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  255. ' Valor = valortrasado * DiasSegundaFecha * (por / 100) / 365
  256. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  257. ' Valor = valortrasado * DiasPrimeraFecha * (por / 100) / 366
  258. ' Else
  259. ' Valor = 0
  260. ' End If
  261. ' Return Valor
  262. 'ElseIf (IndexBase = 2) Then
  263. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  264. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  265. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360Bi(Fecha1, Fecha2)
  266. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(Fecha1, Fecha2)
  267. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  268. ' PrOpc1 = valortrasado * DiasPrimeraFecha * (por / 100) / 366
  269. ' PrOpc2 = valortrasado * DiasSegundaFecha * (por / 100) / 365
  270. ' Valor = PrOpc1 + PrOpc2
  271. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  272. ' Valor = valortrasado * DiasSegundaFecha * (por / 100) / 365
  273. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  274. ' Valor = valortrasado * DiasPrimeraFecha * (por / 100) / 366
  275. ' Else
  276. ' Valor = 0
  277. ' End If
  278. ' Return Valor
  279. 'Else
  280. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  281. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  282. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  283. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  284. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  285. ' PrOpc1 = valortrasado * DiasPrimeraFecha * (por / 100) / 360
  286. ' PrOpc2 = valortrasado * DiasSegundaFecha * (por / 100) / 360
  287. ' Valor = PrOpc1 + PrOpc2
  288. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  289. ' Valor = valortrasado * DiasSegundaFecha * (por / 100) / 360
  290. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  291. ' Valor = valortrasado * DiasPrimeraFecha * (por / 100) / 360
  292. ' Else
  293. ' Valor = 0
  294. ' End If
  295. ' Return Valor
  296. 'End If
  297. 'Return Valor
  298. End Function
  299. Function IOF(ByVal valortrasado As Double, comisioncasa As Double, ByVal comisionbolsa As Double, ByVal dias As Integer, ByVal VALIOF As Double, ByVal Fecha1 As Date, ByVal Fecha2 As Date, ByVal IndexBase As Integer)
  300. Dim Valor As Double = 0
  301. Valor = ((valortrasado + comisioncasa + comisionbolsa) * (dias * VALIOF)) / 365
  302. Return Valor
  303. 'If (IndexBase = 0) Then
  304. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (dias * VALIOF)) / 360
  305. ' Return Valor
  306. 'ElseIf (IndexBase = 1) Then
  307. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  308. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  309. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  310. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  311. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  312. ' PrOpc1 = ((valortrasado + comisioncasa + comisionbolsa) * (DiasPrimeraFecha * VALIOF)) / 366
  313. ' PrOpc2 = ((valortrasado + comisioncasa + comisionbolsa) * (DiasSegundaFecha * VALIOF)) / 365
  314. ' Valor = PrOpc1 + PrOpc2
  315. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  316. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (DiasSegundaFecha * VALIOF)) / 365
  317. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  318. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (DiasPrimeraFecha * VALIOF)) / 366
  319. ' Else
  320. ' Valor = 0
  321. ' End If
  322. ' Return Valor
  323. 'ElseIf (IndexBase = 2) Then
  324. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  325. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  326. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360Bi(Fecha1, Fecha2)
  327. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(Fecha1, Fecha2)
  328. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  329. ' PrOpc1 = ((valortrasado + comisioncasa + comisionbolsa) * (DiasPrimeraFecha * VALIOF)) / 366
  330. ' PrOpc2 = ((valortrasado + comisioncasa + comisionbolsa) * (DiasSegundaFecha * VALIOF)) / 365
  331. ' Valor = PrOpc1 + PrOpc2
  332. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  333. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (DiasSegundaFecha * VALIOF)) / 365
  334. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  335. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (DiasPrimeraFecha * VALIOF)) / 366
  336. ' Else
  337. ' Valor = 0
  338. ' End If
  339. ' Return Valor
  340. 'Else
  341. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  342. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  343. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  344. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  345. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  346. ' PrOpc1 = ((valortrasado + comisioncasa + comisionbolsa) * (DiasPrimeraFecha * VALIOF)) / 360
  347. ' PrOpc2 = ((valortrasado + comisioncasa + comisionbolsa) * (DiasSegundaFecha * VALIOF)) / 360
  348. ' Valor = PrOpc1 + PrOpc2
  349. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  350. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (DiasSegundaFecha * VALIOF)) / 360
  351. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  352. ' Valor = ((valortrasado + comisioncasa + comisionbolsa) * (DiasPrimeraFecha * VALIOF)) / 360
  353. ' Else
  354. ' Valor = 0
  355. ' End If
  356. ' Return Valor
  357. 'End If
  358. 'Return Valor
  359. End Function
  360. Function TotCostos(ByVal ComisionCasa As Double, ByVal ComisionBolsa As Double, ByVal IOF As Double, ByVal OC As Double, ByVal ValorTransado As Double, ByVal Instrumento As String)
  361. Dim Valor As Double = 0
  362. Valor = ComisionCasa + ComisionBolsa + IOF + OC
  363. Return Valor
  364. End Function
  365. Function MontoLiquidacion(ByVal ValorTrasado As Double, ByVal totalcosto As Double)
  366. Dim Valor = ValorTrasado + totalcosto
  367. Return Valor
  368. End Function
  369. Function InteresGenerar(ByVal ValorTrasado As Double, ByVal rendimiento As Double, ByVal dias As Integer, ByVal Fecha1 As Date, ByVal Fecha2 As Date, ByVal IndexBase As Integer)
  370. Dim Valor As Double = 0
  371. Valor = ValorTrasado * rendimiento * dias / 365
  372. Return Valor
  373. 'If (IndexBase = 0) Then
  374. ' Valor = ValorTrasado * rendimiento * dias / 360
  375. ' Return Valor
  376. 'ElseIf (IndexBase = 1) Then
  377. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  378. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  379. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  380. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  381. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  382. ' PrOpc1 = ValorTrasado * rendimiento * DiasPrimeraFecha / 366
  383. ' PrOpc2 = ValorTrasado * rendimiento * DiasSegundaFecha / 365
  384. ' Valor = PrOpc1 + PrOpc2
  385. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  386. ' Valor = ValorTrasado * rendimiento * DiasSegundaFecha / 365
  387. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  388. ' Valor = ValorTrasado * rendimiento * DiasPrimeraFecha / 366
  389. ' Else
  390. ' Valor = 0
  391. ' End If
  392. ' Return Valor
  393. 'ElseIf (IndexBase = 2) Then
  394. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  395. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  396. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360Bi(Fecha1, Fecha2)
  397. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(Fecha1, Fecha2)
  398. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  399. ' PrOpc1 = ValorTrasado * rendimiento * DiasPrimeraFecha / 366
  400. ' PrOpc2 = ValorTrasado * rendimiento * DiasSegundaFecha / 365
  401. ' Valor = PrOpc1 + PrOpc2
  402. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  403. ' Valor = ValorTrasado * rendimiento * DiasSegundaFecha / 365
  404. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  405. ' Valor = ValorTrasado * rendimiento * DiasPrimeraFecha / 366
  406. ' Else
  407. ' Valor = 0
  408. ' End If
  409. ' Return Valor
  410. 'Else
  411. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  412. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  413. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  414. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  415. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  416. ' PrOpc1 = ValorTrasado * rendimiento * DiasPrimeraFecha / 360
  417. ' PrOpc2 = ValorTrasado * rendimiento * DiasSegundaFecha / 360
  418. ' Valor = PrOpc1 + PrOpc2
  419. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  420. ' Valor = ValorTrasado * rendimiento * DiasSegundaFecha / 360
  421. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  422. ' Valor = ValorTrasado * rendimiento * DiasPrimeraFecha / 360
  423. ' Else
  424. ' Valor = 0
  425. ' End If
  426. ' Return Valor
  427. 'End If
  428. 'Return Valor
  429. End Function
  430. Function RendimientoAntes(ByVal interesgenerar As Double, ByVal totcostos As Double, ByVal valortra As Double, ByVal dias As Integer, ByVal Fecha1 As Date, ByVal Fecha2 As Date, ByVal IndexBase As Integer, ByVal Tabla As String)
  431. Dim Valor As Double = 0
  432. If Tabla = "REP0" Then
  433. Valor = ((interesgenerar - totcostos) / valortra) * (365 / dias)
  434. Else
  435. Valor = ((interesgenerar + totcostos) / valortra) * (365 / dias)
  436. End If
  437. 'If (IndexBase = 0) Then
  438. ' Valor = ((interesgenerar - totcostos) / valortra) * (360 / dias)
  439. ' Return Valor * 100
  440. 'ElseIf (IndexBase = 1) Then
  441. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  442. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  443. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  444. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  445. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  446. ' PrOpc1 = ((interesgenerar - totcostos) / valortra) * (366 / DiasPrimeraFecha)
  447. ' PrOpc2 = ((interesgenerar - totcostos) / valortra) * (365 / DiasSegundaFecha)
  448. ' Valor = PrOpc1 + PrOpc2
  449. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  450. ' Valor = ((interesgenerar - totcostos) / valortra) * (365 / DiasSegundaFecha)
  451. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  452. ' Valor = ((interesgenerar - totcostos) / valortra) * (366 / DiasPrimeraFecha)
  453. ' Else
  454. ' Valor = 0
  455. ' End If
  456. ' Return Valor * 100
  457. 'ElseIf (IndexBase = 2) Then
  458. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  459. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  460. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360Bi(Fecha1, Fecha2)
  461. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(Fecha1, Fecha2)
  462. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  463. ' PrOpc1 = ((interesgenerar - totcostos) / valortra) * (366 / DiasPrimeraFecha)
  464. ' PrOpc2 = ((interesgenerar - totcostos) / valortra) * (365 / DiasSegundaFecha)
  465. ' Valor = PrOpc1 + PrOpc2
  466. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  467. ' Valor = ((interesgenerar - totcostos) / valortra) * (365 / DiasSegundaFecha)
  468. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  469. ' Valor = ((interesgenerar - totcostos) / valortra) * (366 / DiasPrimeraFecha)
  470. ' Else
  471. ' Valor = 0
  472. ' End If
  473. ' Return Valor * 100
  474. 'Else
  475. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  476. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  477. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  478. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  479. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  480. ' PrOpc1 = ((interesgenerar - totcostos) / valortra) * (360 / DiasPrimeraFecha)
  481. ' PrOpc2 = ((interesgenerar - totcostos) / valortra) * (360 / DiasSegundaFecha)
  482. ' Valor = PrOpc1 + PrOpc2
  483. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  484. ' Valor = ((interesgenerar - totcostos) / valortra) * (360 / DiasSegundaFecha)
  485. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  486. ' Valor = ((interesgenerar - totcostos) / valortra) * (360 / DiasPrimeraFecha)
  487. ' Else
  488. ' Valor = 0
  489. ' End If
  490. ' Return Valor * 100
  491. 'End If
  492. 'Return Valor * 100
  493. Return Valor * 100
  494. End Function
  495. Function ValorRecompras(ByVal Valortrasado As Double, ByVal InteresGenerar As Double)
  496. Dim Valor = Valortrasado + InteresGenerar
  497. Return Valor
  498. End Function
  499. Function Renta(ByVal InteresGenerar As Double, ByVal Porcentaje As Double)
  500. Dim Valor = InteresGenerar * Porcentaje
  501. Return Valor
  502. End Function
  503. Function IngresoNet(ByVal InteresGenerar As Double, ByVal Renta As Double)
  504. Dim Valor = InteresGenerar - Renta
  505. Return Valor
  506. End Function
  507. Function ValorNet(ByVal ValorTrasado As Double, ByVal IngresoNeto As Double, ByVal CostoTrans As Double)
  508. Dim Valor = ValorTrasado + IngresoNeto - CostoTrans
  509. Return Valor
  510. End Function
  511. Function RendimientoDespues(ByVal IngresoNeto As Double, ByVal totalcosto As Double, ByVal valortrasado As Double, ByVal dias As Integer, ByVal Fecha1 As Date, Fecha2 As Date, ByVal IndexBase As Integer)
  512. Dim Valor As Double = 0
  513. Valor = (IngresoNeto - totalcosto) / valortrasado * 365 / dias
  514. 'If (IndexBase = 0) Then
  515. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 360 / dias
  516. ' Return Valor * 100
  517. 'ElseIf (IndexBase = 1) Then
  518. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  519. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  520. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  521. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  522. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  523. ' PrOpc1 = (IngresoNeto - totalcosto) / valortrasado * 366 / DiasPrimeraFecha
  524. ' PrOpc2 = (IngresoNeto - totalcosto) / valortrasado * 365 / DiasSegundaFecha
  525. ' Valor = PrOpc1 + PrOpc2
  526. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  527. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 365 / DiasSegundaFecha
  528. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  529. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 366 / DiasPrimeraFecha
  530. ' Else
  531. ' Valor = 0
  532. ' End If
  533. ' Return Valor * 100
  534. 'ElseIf (IndexBase = 2) Then
  535. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  536. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  537. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha360Bi(Fecha1, Fecha2)
  538. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha360(Fecha1, Fecha2)
  539. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  540. ' PrOpc1 = (IngresoNeto - totalcosto) / valortrasado * 366 / DiasPrimeraFecha
  541. ' PrOpc2 = (IngresoNeto - totalcosto) / valortrasado * 365 / DiasSegundaFecha
  542. ' Valor = PrOpc1 + PrOpc2
  543. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  544. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 365 / DiasSegundaFecha
  545. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  546. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 366 / DiasPrimeraFecha
  547. ' Else
  548. ' Valor = 0
  549. ' End If
  550. ' Return Valor * 100
  551. 'Else
  552. ' Dim PrOpc1 = 0.0, PrOpc2 = 0.0
  553. ' Dim DiasPrimeraFecha = 0, DiasSegundaFecha = 0
  554. ' DiasPrimeraFecha = Operaciones.DiasDespuesCambioPrimeraFecha366Varios(Fecha1, Fecha2)
  555. ' DiasSegundaFecha = Operaciones.DiasDespuesCambioPrimeraFecha365Varios(Fecha1, Fecha2)
  556. ' If (DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  557. ' PrOpc1 = (IngresoNeto - totalcosto) / valortrasado * 360 / DiasPrimeraFecha
  558. ' PrOpc2 = (IngresoNeto - totalcosto) / valortrasado * 360 / DiasSegundaFecha
  559. ' Valor = PrOpc1 + PrOpc2
  560. ' ElseIf (Not DiasPrimeraFecha > 0 And DiasSegundaFecha > 0) Then
  561. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 360 / DiasSegundaFecha
  562. ' ElseIf (DiasPrimeraFecha > 0 And Not DiasSegundaFecha > 0) Then
  563. ' Valor = (IngresoNeto - totalcosto) / valortrasado * 360 / DiasPrimeraFecha
  564. ' Else
  565. ' Valor = 0
  566. ' End If
  567. ' Return Valor * 100
  568. 'End If
  569. 'Return Valor * 100
  570. Return Valor * 100
  571. End Function
  572. End Class