Autor Tema: Problema con Generar Mora desde SQL Server  (Leído 5165 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Problema con Generar Mora desde SQL Server
« : Febrero 02, 2012, 01:38:49 pm »
Hola a todos ^^ .. ! talves el titulo no sea muy claro, no savia como nombrarlo ....
Bueno  estoy en  un lio !.. . no manejo demasiado SQL .. solo se crear vistas,procedimienmtos almacenados y entre otras cosas mas...... pero con lo que me he topado, la verdad, no tengo ni idea de como hacerlo.... si fuera VisualBasic.NET ya lo estuviera haciendo pero como les repito, no manejo a buen nivel SQL...

Lo que estoy desarrollando es un Sistema de Matriculas, y me he quedado en el registro de pagos de mensualidades,:

Tengo 4 Tablas:

Mensualidad, Cuota, Estudiante, Mora.:

Estudiante
-Cod_Estudiante (PK) --> Codigo del estudiante.
-.....
-.....

Cuota
-Cod_Cuota. (PK)
-Fecha_Pago.              --> Aqui va la Fecha en que deve pagar el estudiante
-Fecha_Vencimiento.   -->Hasta aqui queda el plazo para que el estudiante pague su Cuota o Mensualidad
-Mes.                           --> Es el mes.


Mensualidad
-Cod_Mensualidad(PK)
-Nro_Boleta_Mensualidad
-F/Pago.                          --> Aqui se registra la Fecha en que el estudiante realizo el Pago de su Cuota.
-Monto.                           --> El Monto pagado
-Cod_Estudiante (FK)     --> El codigo del estudiante
-Cod_Cuota (FK)            --> Que Cuota ha pagado ejemplo: 1ra cuota o 2da cuota o 3ra cuota...

Mora
-Cod_Mora(PK)
-Nro_Boleta_Mora.         --> Nro boleta del pago de la Mora
-Monto.                           --> El monto pagado.
-Mora_Inicial.                  --> En mi pais la mora comienza desde 1 nuevo sol. desde el 1er dia.
-Mora.                             --> La Cantidad de mora que va adeudando el Estudiante.
-Resta.                            --> La resta que le queda de mora al estudiante si es que ha realizado algun pago.
-Cod_Mensualidad. (FK)  --> La Cuota se genera por una Mensualidad no pagada,aqui va el cod de la mensualidad.


Les explico... en mi Pais, Peru, si el estudiante no realiza el pago en uno de los dias que tiene plazo para pagar (Fecha_pago - Fecha_Vencimiento), entonces se genera una Mora( En ta tabla Mora campo: "Mora"), la mora empieza desde 1 nuevo sol (Mora_Inicial) y esta se genera hasta que el estudiante no realiza el pago correspondiente, si el estudiante por ejemplo paga 2 dias despues de la Fecha_Vencimiento, entonces de echo que la mora sera de 2 nuevos soles, se le entrega su Boleta de pago de mensualidad...  y la mora lo paga aparte, por tanto se le entrega una Boleta aparte por la mora pagada...

Esto se que es mas complejo, estuve pensando en como hacerlo pero la verdad no domino SQL... no me atrevo a preguntarle a  mi "profesor de SQL", se que el nisiquiera tiene idea de como resolver esto....

Espero sus apoyos una ves mas y si algo no esta claro me avisan para poder !!!

Desconectado g00mba

  • Trade Count: (3)
  • The Communiter-
  • *
  • Thank You
  • -Given: 164
  • -Receive: 2367
  • Mensajes: 11419
    • ALABADO SEA MONESVOL
Re: Problema con Generar Mora desde SQL Server
« Respuesta #1 : Febrero 02, 2012, 01:45:41 pm »
necesitas hacerlo con un trigger DML. necesitas especificar en tu programa que al llegar a la fecha de corte ejecute un query de update que dispare el trigger para que sume la mora.



Desconectado Non Servium

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 6
  • -Receive: 37
  • Mensajes: 386
  • Ilix Punx :)
Re: Problema con Generar Mora desde SQL Server
« Respuesta #2 : Febrero 02, 2012, 02:05:28 pm »
Por qué "profesor de SQL" no puede resolverlo??

También podes ejecutar un procedimiento almacenado que genere el pago y en caso que DATEDIFF(DAY, FechaPago, FechaVencimiento) < 0 (quiere decir que se pagó después de vencido) agregar una mora de 1 multiplicado por DATEDIFF(DAY, FechaVencimiento, FechaPago) (dias vencidos)
Follow members gave a thank to your post:
♫ Condenados a perder la libertad! Por no acatar las leyes que les asignaron. ♪ ♫
Decididos, decididos a emprender! Un camino largo y duro por no ser esclavos ♫


Watch

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #3 : Febrero 02, 2012, 03:15:34 pm »
Por qué "profesor de SQL" no puede resolverlo??

También podes ejecutar un procedimiento almacenado que genere el pago y en caso que DATEDIFF(DAY, FechaPago, FechaVencimiento) < 0 (quiere decir que se pagó después de vencido) agregar una mora de 1 multiplicado por DATEDIFF(DAY, FechaVencimiento, FechaPago) (dias vencidos)


Digo lo que creo y lo que pienso en cara de todos .. y se lo he dicho a el mismo.... lo que pasa es que es un pesimo profesor ..... Dicta curso de SQL y creo que solo save hacer algunos select e insert ..... dicta curso de UML pero solo conceptos, osea solo lee..... bueno ese no es el caso.... tratare de avanzar algo .. les aviso  los resultados !!!! quien quiera seguir aportando les agradecere mucho ^^ !!!   gracias por sus aportes ^^ !!!

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #4 : Febrero 04, 2012, 03:20:53 am »
Hola a todos, he seguido analizando las relaciones de mis tablas y estoy por realizar algunos cambios.. bueno por la estructura de mi BD ya yo mismo lo estoy avanzando... pero lo que hasta ahora no entiendo y le siguo dando vueltas... es como are que el Campo "Mora_total", de la tabla Mora, se actualize cada dia para que se genere la mora ... o sea si ayer un estudiante estuvo adeudando 1 nuevo sol de mora.... hoy  pues de echo que tiene que ser 2 nuevos soles... pero no tengo ni la menor idea de como hacer esto =/ ... !! Imploro Auxilio =/  !!
Muchas gracias ^^"
salu2

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 87
  • Mensajes: 2754
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Problema con Generar Mora desde SQL Server
« Respuesta #5 : Febrero 04, 2012, 08:22:52 am »
tienes entonces la necesidad de crear la figura de "inicio de día" o la del "cierre del día". para que ahí introduzcas el query del update.


O, lo puedes ejecutar antes de que se "revise los que tienen mora", o sea, obviamente un usuario ingresa a una opción de tu sistema, para ver quienes tienen mora, a pues, ahí puedes hacerlo, antes de presentar los resultados, que "recalcule" la información, con la más actualizada...(que  sería la mejor opción)...


pd: con lo del profesor, no me extraña que no sepa nada.... porque tu problema no es de "programador" es de "usuario final".... si entendiera la lógica del funcionamiento del sistema, te habría dicho mi segundo párrafo.
Follow members gave a thank to your post:
preparando maletas....mexicanas aya les voy

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #6 : Febrero 05, 2012, 03:38:03 am »
tienes entonces la necesidad de crear la figura de "inicio de día" o la del "cierre del día". para que ahí introduzcas el query del update.


O, lo puedes ejecutar antes de que se "revise los que tienen mora", o sea, obviamente un usuario ingresa a una opción de tu sistema, para ver quienes tienen mora, a pues, ahí puedes hacerlo, antes de presentar los resultados, que "recalcule" la información, con la más actualizada...(que  sería la mejor opción)...


pd: con lo del profesor, no me extraña que no sepa nada.... porque tu problema no es de "programador" es de "usuario final".... si entendiera la lógica del funcionamiento del sistema, te habría dicho mi segundo párrafo.

La verdad la 1ra opcion no la entendi ... pero la 2da si se me quedo mucho mas claro.... tendre que ver la manera de como hacerlo, gracias por esa grandiosa idea :D !! sii tengo dudas que no las pueda resolver, se los posteo :D !! Gracias por el apoyo hermanos !!  :rofl:

y con lo que mi profesor.. para ser mas claro, no sabe ni Programar ni Analizar..... Es mas, puedo decir que es el 1er Lamer en mi vida que he conocido en persona.... Dice saver programar en Java C++ C# VB.NET ActionScript PHP MySQL SQL. ... se cree saver todo... hasta segun el save tecnicas de Hackers xD !! .. weno ya esto no va al caso .... Gracias por sus apoyos ^^ !! seguire Analizando  :D

Desconectado buscador2k

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 33
  • -Receive: 35
  • Mensajes: 350
  • .
Re: Problema con Generar Mora desde SQL Server
« Respuesta #7 : Febrero 05, 2012, 11:48:46 am »
.... Gracias por sus apoyos ^^ !! seguire Analizando  :D

Cuando termines de probar y si alguna de las sugerencias te ayudo a resolver tu problema, deberias dejarles un "thank you" al o a los comunos que te ayudaron.
Follow members gave a thank to your post:

Desconectado edu_guerr

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 51
  • -Receive: 63
  • Mensajes: 440
Re: Problema con Generar Mora desde SQL Server
« Respuesta #8 : Febrero 05, 2012, 02:15:41 pm »
Hola a todos, he seguido analizando las relaciones de mis tablas y estoy por realizar algunos cambios.. bueno por la estructura de mi BD ya yo mismo lo estoy avanzando... pero lo que hasta ahora no entiendo y le siguo dando vueltas... es como are que el Campo "Mora_total", de la tabla Mora, se actualize cada dia para que se genere la mora ... o sea si ayer un estudiante estuvo adeudando 1 nuevo sol de mora.... hoy  pues de echo que tiene que ser 2 nuevos soles... pero no tengo ni la menor idea de como hacer esto =/ ... !! Imploro Auxilio =/  !!
Muchas gracias ^^"
salu2

Una idea nada mas..... en este ejemplo tomando en cuenta que fecha pago estudiante es igual a fecha vencimiento,
la fecha de vencimiento es el 03-feb-12 , el estudiante pago el 05-feb-12 , dias de vencimiento=2

Nota
Esto procedimiento seria  para cuando el estudiante que ya pago y queres ver los dias de mora, pero para el que no
ha pagado tendrias que obtener diferencia entre fecha de vencimiento y y fecha actual, algo asi
SELECT DATEDIFF(DATE(NOW()),'2012-02-04') AS 'DIAS EN MORA' obtendras algo asi..
DIAS EN MORA
============
1
============
Esta en MySQL
Código: [Seleccionar]
DELIMITER $$

USE `svc`$$

DROP PROCEDURE IF EXISTS `mora`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Mora`(IN nombre VARCHAR(50))
SELECT estudiante.nombre,mensualidad.nro_boleta_mensualidad,mensualidad.f_pago AS 'F.que pago estudiante',cuota.fecha_pago AS 'F.debe pagar estudiante',
mensualidad.monto,cuota.fecha_vencimiento,DATEDIFF(mensualidad.f_pago,cuota.fecha_vencimiento) AS 'DIAS EN MORA'
FROM estudiante,mensualidad,cuota WHERE estudiante.cod_estudiante=mensualidad.cod_estudiante AND
cuota.cod_cuota=mensualidad.cod_cuota  AND estudiante.nombre=nombre$$

DELIMITER ;

llamarlo en MySQL, para el estudiante 'Pedro'
Código: [Seleccionar]
CALL Mora('PEDRO')

Resultado
Código: [Seleccionar]
nombre |nro_boleta_mensualidad |                        F.que pago estudiante|F.debe pagar estudiante|monto |fecha_vencimiento|DIAS EN MORA|
PEDRO         2                                          2012-02-05                      2012-02-03    50         2012-02-03               2

El procedimiento lo podrias llamar desde un boton por ejemplo  'Dias en mora' para que te lo calcule haste ese dia.


Ojala te sirva en algo.
Follow members gave a thank to your post:
« Última Modificación: Febrero 05, 2012, 03:45:17 pm por edu_guerr »

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #9 : Febrero 06, 2012, 01:37:37 pm »
Cuando termines de probar y si alguna de las sugerencias te ayudo a resolver tu problema, deberias dejarles un "thank you" al o a los comunos que te ayudaron.


:D disculpa es que aveces se me olvida xD.. soy nuevo en este foro .. y me siento muy agradecido con ustedes .... en otros foros solo me he topado con gente que cree saver mucho .. Gracias !! ^^

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #10 : Febrero 06, 2012, 01:39:26 pm »
Una idea nada mas..... en este ejemplo tomando en cuenta que fecha pago estudiante es igual a fecha vencimiento,
la fecha de vencimiento es el 03-feb-12 , el estudiante pago el 05-feb-12 , dias de vencimiento=2

Nota
Esto procedimiento seria  para cuando el estudiante que ya pago y queres ver los dias de mora, pero para el que no
ha pagado tendrias que obtener diferencia entre fecha de vencimiento y y fecha actual, algo asi
SELECT DATEDIFF(DATE(NOW()),'2012-02-04') AS 'DIAS EN MORA' obtendras algo asi..
DIAS EN MORA
============
1
============
Esta en MySQL
Código: [Seleccionar]
DELIMITER $$

USE `svc`$$

DROP PROCEDURE IF EXISTS `mora`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Mora`(IN nombre VARCHAR(50))
SELECT estudiante.nombre,mensualidad.nro_boleta_mensualidad,mensualidad.f_pago AS 'F.que pago estudiante',cuota.fecha_pago AS 'F.debe pagar estudiante',
mensualidad.monto,cuota.fecha_vencimiento,DATEDIFF(mensualidad.f_pago,cuota.fecha_vencimiento) AS 'DIAS EN MORA'
FROM estudiante,mensualidad,cuota WHERE estudiante.cod_estudiante=mensualidad.cod_estudiante AND
cuota.cod_cuota=mensualidad.cod_cuota  AND estudiante.nombre=nombre$$

DELIMITER ;

llamarlo en MySQL, para el estudiante 'Pedro'
Código: [Seleccionar]
CALL Mora('PEDRO')

Resultado
Código: [Seleccionar]
nombre |nro_boleta_mensualidad |                        F.que pago estudiante|F.debe pagar estudiante|monto |fecha_vencimiento|DIAS EN MORA|
PEDRO         2                                          2012-02-05                      2012-02-03    50         2012-02-03               2

El procedimiento lo podrias llamar desde un boton por ejemplo  'Dias en mora' para que te lo calcule haste ese dia.


Ojala te sirva en algo.

Estuve pensando de la misma manera que tu ... dandome ejemplos de estudiantes que pagan despues de la fecha vencida..... pero por ahora no puedo probrar nada ya que tengo otras labores que me retrazan mucho =/ !!! Gracias hermano .... Hoy en la madrugada quemare neuronaz ^^ !! Gracias por todo !

Desconectado edu_guerr

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 51
  • -Receive: 63
  • Mensajes: 440
Re: Problema con Generar Mora desde SQL Server
« Respuesta #11 : Febrero 06, 2012, 03:58:22 pm »
:D disculpa es que aveces se me olvida xD.. soy nuevo en este foro .. y me siento muy agradecido con ustedes .... en otros foros solo me he topado con gente que cree saver mucho .. Gracias !! ^^
Hey deberias de invitar a gente de tu pais al foro, asi se hace mas internacional la SVC .
« Última Modificación: Febrero 06, 2012, 04:07:57 pm por edu_guerr »

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #12 : Febrero 06, 2012, 07:27:39 pm »
Una idea nada mas..... en este ejemplo tomando en cuenta que fecha pago estudiante es igual a fecha vencimiento,
la fecha de vencimiento es el 03-feb-12 , el estudiante pago el 05-feb-12 , dias de vencimiento=2

Nota
Esto procedimiento seria  para cuando el estudiante que ya pago y queres ver los dias de mora, pero para el que no
ha pagado tendrias que obtener diferencia entre fecha de vencimiento y y fecha actual, algo asi
SELECT DATEDIFF(DATE(NOW()),'2012-02-04') AS 'DIAS EN MORA' obtendras algo asi..
DIAS EN MORA
============
1
============
Esta en MySQL
Código: [Seleccionar]
DELIMITER $$

USE `svc`$$

DROP PROCEDURE IF EXISTS `mora`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Mora`(IN nombre VARCHAR(50))
SELECT estudiante.nombre,mensualidad.nro_boleta_mensualidad,mensualidad.f_pago AS 'F.que pago estudiante',cuota.fecha_pago AS 'F.debe pagar estudiante',
mensualidad.monto,cuota.fecha_vencimiento,DATEDIFF(mensualidad.f_pago,cuota.fecha_vencimiento) AS 'DIAS EN MORA'
FROM estudiante,mensualidad,cuota WHERE estudiante.cod_estudiante=mensualidad.cod_estudiante AND
cuota.cod_cuota=mensualidad.cod_cuota  AND estudiante.nombre=nombre$$

DELIMITER ;

llamarlo en MySQL, para el estudiante 'Pedro'
Código: [Seleccionar]
CALL Mora('PEDRO')

Resultado
Código: [Seleccionar]
nombre |nro_boleta_mensualidad |                        F.que pago estudiante|F.debe pagar estudiante|monto |fecha_vencimiento|DIAS EN MORA|
PEDRO         2                                          2012-02-05                      2012-02-03    50         2012-02-03               2

El procedimiento lo podrias llamar desde un boton por ejemplo  'Dias en mora' para que te lo calcule haste ese dia.


Ojala te sirva en algo.

Lo estoy trabajando en SQL. ..  tratare de interpretarlo asi ^^ !! aunque tengo que admitir que en SQL soy pesimo  :cry:  ....  lo analizare ^^ !!

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #13 : Febrero 08, 2012, 02:01:39 pm »
Hola hermanos ^^ dejando los problemas a un lado... continuo con este problema =/ ..   siguiendo sus concejos intente haciendo esto....
CREATE PROCEDURE SP_GENERAR_MORA
AS
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO)
VALUES('02',0,0.00,1.00,(DATEDIFF(DAY,'01/03/2012','10/03/2012') * 1), 0,'CP-02')

Id_Mora l Nro_Boleta l Monto l Mora_Inicial l Mora_Total l Resta l id_Concepto
     01         00000      0.00        1.00              9.00         0.00      CP-02

Esto es solo un ejemplo, claro que en ves de esas fechas tendria que seleccionar el Campo Fecha_Vencimiento_Pago de la Tabla Cuotas y el campo Fecha_pago de la Tabla Mensualidad, para restarlos y en vez de ese    "1"    tendria que ir el campo Mora_Inicial de la tabla Mora  para multiplicarlo con la diferencia de las fechas y porfin obtener la mora generada, y cuando el estudiante desee realizar el pago de la Mora... pues seria solo un Update a la tabla Mora ?? creen que estaria bien ?
Supongamos que ya yo estoy realizando el pago, se ejecuta el Update que todavia no lo he creado, pero solo lo estoy imaginando:

Id_Mora l Nro_Boleta l Monto l Mora_Inicial l Mora_Total l Resta l id_Concepto
     01         15478      5.00        1.00              9.00         4.00      CP-02

quedaria asi .... en el campo Resta solo restaria el campo Monto con el campo Mora_Total.....

Esta bien todo esto ?? o es que estoy imaginando mucho xD !!... se puede hacer todo esto en un update ??  nomas no se burlen, repito que no domino mucho SQL hermanos ....
salu2 !

Desconectado Non Servium

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 6
  • -Receive: 37
  • Mensajes: 386
  • Ilix Punx :)
Re: Problema con Generar Mora desde SQL Server
« Respuesta #14 : Febrero 08, 2012, 04:11:07 pm »
Todavía no me queda 100% clara tu necesidad...

Id_Mora l Nro_Boleta l Monto l Mora_Inicial l Mora_Total l Resta l id_Concepto
     01         00000      0.00        1.00              9.00         0.00      CP-02
Este valor en negrita no debería ser 9 tambien?

Para mi que no haría falta el campo Resta. Y Monto sería mejor con el nombre "MontoPendiente" o algo similar. Usar un procedimiento que tiene un INSERT es preferible hacerlo desde tu sistema

Y si se puede hacer con un UPDATE:
DECLARE @Pago MONEY = 4--Lo que se está pagando
UPDATE Mora
SET Monto = Monto - @Pago --Si queres meter el campo "Resta" dejalo al menos pre calculado en SQL para que se ponga 4 automaticamente
WHERE Id_Mora = '01'
Follow members gave a thank to your post:
♫ Condenados a perder la libertad! Por no acatar las leyes que les asignaron. ♪ ♫
Decididos, decididos a emprender! Un camino largo y duro por no ser esclavos ♫


Watch

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #15 : Febrero 08, 2012, 04:48:02 pm »
Todavía no me queda 100% clara tu necesidad...
Este valor en negrita no debería ser 9 tambien?

Para mi que no haría falta el campo Resta. Y Monto sería mejor con el nombre "MontoPendiente" o algo similar. Usar un procedimiento que tiene un INSERT es preferible hacerlo desde tu sistema

Y si se puede hacer con un UPDATE:
DECLARE @Pago MONEY = 4--Lo que se está pagando
UPDATE Mora
SET Monto = Monto - @Pago --Si queres meter el campo "Resta" dejalo al menos pre calculado en SQL para que se ponga 4 automaticamente
WHERE Id_Mora = '01'


Hermano ...  es un campo obligatorio, segun la secretaria de  mi instituto, yo tambien pense en omitir algunos campos y agregarle otros... pero de las entrevistas que hize, tengo entendido que esos campos van si o si.... bueno entonces.... ya que si se puede hacerlo en un Update... lo voy a Intentar todo por ahora en SQL... el viernes ya lo estare probando desde .NET , ahora ya todo lo veo mas claro..... Gracias ^^  :thumbsup:

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #16 : Febrero 10, 2012, 12:20:13 am »
Se me complico mas de lo pensado  :yao_ming: .. no tengo ni la menor idea de como seleccionar esos 2 campos para obtener los dias de mora y para despues multiplicarlo =/ .... pense que solo era usando "SELECT" pero ya veo que no .. estuve probando y nada... aqui les muestro denuevo mi procedimiento almacenado:

CREATE PROCEDURE SP_GENERAR_MORA
AS
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO)
VALUES('02',0,0.00,1.00,(DATEDIFF(DAY,'AQUI EL CAMPO DE LA FECHA A PAGAR LA CUOTA','AQUI EL CAMPO DE LA FECHA EN QUE FUE PAGADO LA CUOTA') * 1), 0,'CP-02')

si solo supiera como hacerlo para 1 campo... lo demas seria sencillo ya que seria caso igual :cry: ....
salu2

 

Desconectado edu_guerr

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 51
  • -Receive: 63
  • Mensajes: 440
Re: Problema con Generar Mora desde SQL Server
« Respuesta #17 : Febrero 10, 2012, 08:51:29 am »
Se me complico mas de lo pensado  :yao_ming: .. no tengo ni la menor idea de como seleccionar esos 2 campos para obtener los dias de mora y para despues multiplicarlo =/ .... pense que solo era usando "SELECT" pero ya veo que no .. estuve probando y nada... aqui les muestro denuevo mi procedimiento almacenado:

CREATE PROCEDURE SP_GENERAR_MORA
AS
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO)
VALUES('02',0,0.00,1.00,(DATEDIFF(DAY,'AQUI EL CAMPO DE LA FECHA A PAGAR LA CUOTA','AQUI EL CAMPO DE LA FECHA EN QUE FUE PAGADO LA CUOTA') * 1), 0,'CP-02')


Tenes esto:
Código: [Seleccionar]
(DATEDIFF(DAY,'AQUI EL CAMPO DE LA FECHA A PAGAR LA CUOTA','AQUI EL CAMPO DE LA FECHA EN QUE FUE PAGADO LA CUOTA') * 1),

Si probas asi.. anidando "select" dentro del insert?
Código: [Seleccionar]
(DATEDIFF((SELECT F_PAGO FROM MENSUALIDAD WHERE cod_estudiante=1),
(SELECT fecha_pago FROM CUOTA WHERE MES=(SELECT MONTH(NOW()))))*1)

El insert quedaria asi
Código: [Seleccionar]
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO)
VALUES('07',    0,        0.00,  1.00,
(DATEDIFF((SELECT F_PAGO FROM MENSUALIDAD WHERE cod_estudiante=1),
(SELECT fecha_pago FROM CUOTA WHERE MES=(SELECT MONTH(NOW()))))*1)
 ,       0,        'CP-02')

Tomando en cuenta que campo mes en entero [enero=1...diciembre=12]
Código: [Seleccionar]
SELECT fecha_pago FROM CUOTA WHERE MES=(SELECT MONTH(NOW()))))*1
---------
Esto esta en MySQL , pero talvez te da una idea de lo que queres hacer.
« Última Modificación: Febrero 10, 2012, 08:56:34 am por edu_guerr »

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 87
  • Mensajes: 2754
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Problema con Generar Mora desde SQL Server
« Respuesta #18 : Febrero 10, 2012, 09:54:03 am »
hey, pregunto, ¿tenes alguna tabla con las fechas en que debe de pagar, para ir evaluando si ya pago cada cuota de esas?

o sea, al crear un registro de estudiante, le creas un listado de todas las cuotas que debe de pagar? me refiero a un listado en una tabla de tu base de datos, algo así:

estudiante, fecha de pago, valor de pago
juan          , 05/ene/2012  ,  20.00
juan          , 05/feb/2012  ,  20.00
juan          , 05/mar/2012  ,  20.00
juan          , 05/etc etc etc/2012  ,  20.00


pregunto, porque de las tablas que pusiste al inicio, no me ubico si existe algo así.... porque también te pregunto la parte de tu db, cómo esta distribuida la información?....  a lo que quiero llegar es a que me expliques en lenguaje humano, como deberías saber si alguien tiene mora. algo así:

"mira si existe en esta tabla XYZ con esta fecha, tiene mora, si no existe en la tabla XYZ no tiene mora"
"mira si existe en la tabla ZYX con estos valores tiene mora, sino no"

algo así podes explicarme
preparando maletas....mexicanas aya les voy

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #19 : Febrero 10, 2012, 01:50:44 pm »

Tenes esto:
Código: [Seleccionar]
(DATEDIFF(DAY,'AQUI EL CAMPO DE LA FECHA A PAGAR LA CUOTA','AQUI EL CAMPO DE LA FECHA EN QUE FUE PAGADO LA CUOTA') * 1),

Si probas asi.. anidando "select" dentro del insert?
Código: [Seleccionar]
(DATEDIFF((SELECT F_PAGO FROM MENSUALIDAD WHERE cod_estudiante=1),
(SELECT fecha_pago FROM CUOTA WHERE MES=(SELECT MONTH(NOW()))))*1)

El insert quedaria asi
Código: [Seleccionar]
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO)
VALUES('07',    0,        0.00,  1.00,
(DATEDIFF((SELECT F_PAGO FROM MENSUALIDAD WHERE cod_estudiante=1),
(SELECT fecha_pago FROM CUOTA WHERE MES=(SELECT MONTH(NOW()))))*1)
 ,       0,        'CP-02')

Tomando en cuenta que campo mes en entero [enero=1...diciembre=12]
Código: [Seleccionar]
SELECT fecha_pago FROM CUOTA WHERE MES=(SELECT MONTH(NOW()))))*1
---------
Esto esta en MySQL , pero talvez te da una idea de lo que queres hacer.



Yo probe con los Select pero nada.... o es que algo estea haciendo mal  :embarassed: ... 

CREATE PROCEDURE SP_GENERAR_MORA
AS
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO)
VALUES('02',0,0.00,1.00,(DATEDIFF(DAY,(SELECT F_PAGO FROM PAGOS WHERE ID_CONCEPTO= 'CP-02'),( SELECT F_PAGO FROM PAGOS_REGISTRADOS WHERE ID_PAGO='P02' ))) * 1, 0,'CP-02')

El SQL me muestra este error:

Mens 1046, Nivel 15, Estado 1, Procedimiento SP_GENERAR_MORA, Línea 4
No se permiten subconsultas en este contexto. Sólo se admiten expresiones escalares.
Mens 102, Nivel 15, Estado 1, Procedimiento SP_GENERAR_MORA, Línea 4
Sintaxis incorrecta cerca de ')'.

Quiere decir que no puedo hacer consultas en un INSERT ?  o en donde esta mi erro   :tick: .....
Auxilio D: !!!!!

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 87
  • Mensajes: 2754
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Problema con Generar Mora desde SQL Server
« Respuesta #20 : Febrero 10, 2012, 01:54:36 pm »
Quiere decir que no puedo hacer consultas en un INSERT ?  o en donde esta mi erro   :tick: .....
Auxilio D: !!!!!

si se pueden hacer select para un insert, pero yo no los hago así.... yo los declaro algo así

insert into mi tablita
select campo1, campo2, campo3, etc
from mi tablita_dos
where condicion=valor

preparando maletas....mexicanas aya les voy

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Francisco™

  • Trade Count: (5)
  • The Communiter-
  • *
  • Thank You
  • -Given: 72
  • -Receive: 48
  • Mensajes: 1115
  • Bitch you make me hurl...
Re: Problema con Generar Mora desde SQL Server
« Respuesta #21 : Febrero 10, 2012, 04:54:15 pm »
si se pueden hacer select para un insert, pero yo no los hago así.... yo los declaro algo así

insert into mi tablita
select campo1, campo2, campo3, etc
from mi tablita_dos
where condicion=valor


si, esa es una forma de hacerlo pero en el caso de lo que él quiere hacer no se podría así nada más, por lo que la forma que le dijo edu_gerr es válida, aunque otra alternativa seria que calcule la mora total y la guarde en una variable y que esa ocupe en el insert

bueno, debido a que no quise hacer el trabajo de recrear un escenario igual al tuyo, utilice una tabla que tengo de pruebas en SQL08R2 y ejecute un insert similar al que queres ejecutar dentro de SP_GENERAR_MORA

la única diferencia es que los select que ejecute son hacia la misma tabla, pero considero que no debería de dar problemas si se hacen hacia otras tablas:
Código: [Seleccionar]
insert into MiExamenOG04013 (periodo,numdoc,codbod,codsal,depnum,codvta,codban,fecent,totaldoc,fecing,coduser)
values('2012-02-10', 'poiuytrewq', 'yy', 'F', 'mnbv', 't', 'tg', '2012-01-02',
(datediff(day,(select fecent from MiExamenOG04013 where codbod = 'zz'),(select fecing from MiExamenOG04013 where  codbod = 'zz'))) * 10,
'2012-02-28', 'gfdsalkj')

captura de pantalla:


update:
deberías darle una buena revisada al código debido a ese error de sintaxis que tenes, ya que estoy viendo que los nombres de los campos de la tabla Mora que pusiste en el primer post son diferentes a los que estas usando en el insert , o compartí los scripts que tenes para ayudarte a revisarlos porque así a simple vista y sin los demás elementos esta difícil...

Follow members gave a thank to your post:
« Última Modificación: Febrero 10, 2012, 05:03:43 pm por Francisco™ »

Desconectado llAudioslavell

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 3
  • Mensajes: 126
Re: Problema con Generar Mora desde SQL Server
« Respuesta #22 : Febrero 11, 2012, 02:19:12 am »
si, esa es una forma de hacerlo pero en el caso de lo que él quiere hacer no se podría así nada más, por lo que la forma que le dijo edu_gerr es válida, aunque otra alternativa seria que calcule la mora total y la guarde en una variable y que esa ocupe en el insert

bueno, debido a que no quise hacer el trabajo de recrear un escenario igual al tuyo, utilice una tabla que tengo de pruebas en SQL08R2 y ejecute un insert similar al que queres ejecutar dentro de SP_GENERAR_MORA

la única diferencia es que los select que ejecute son hacia la misma tabla, pero considero que no debería de dar problemas si se hacen hacia otras tablas:
Código: [Seleccionar]
insert into MiExamenOG04013 (periodo,numdoc,codbod,codsal,depnum,codvta,codban,fecent,totaldoc,fecing,coduser)
values('2012-02-10', 'poiuytrewq', 'yy', 'F', 'mnbv', 't', 'tg', '2012-01-02',
(datediff(day,(select fecent from MiExamenOG04013 where codbod = 'zz'),(select fecing from MiExamenOG04013 where  codbod = 'zz'))) * 10,
'2012-02-28', 'gfdsalkj')

captura de pantalla:


update:
deberías darle una buena revisada al código debido a ese error de sintaxis que tenes, ya que estoy viendo que los nombres de los campos de la tabla Mora que pusiste en el primer post son diferentes a los que estas usando en el insert , o compartí los scripts que tenes para ayudarte a revisarlos porque así a simple vista y sin los demás elementos esta difícil...


Lo que pasa es que estube cambiando de nombre a los campos y a las tablas xD ..
bueno este problema lo he resuelto de esta manera

CREATE PROCEDURE SP_GENERAR_MORA
AS
DECLARE @F_PAGO1 AS datetime
DECLARE @F_PAGO2 AS datetime
DECLARE @MORA_INI AS INT
SELECT @MORA_INI = MORA_INICIAL FROM MORA WHERE ID_MORA = '01'
SELECT @F_PAGO1 = F_VENCIMIENTO_PAGO FROM PAGOS WHERE ID_CONCEPTO= 'CP-02'
SELECT @F_PAGO2 = F_PAGO FROM PAGOS_REGISTRADOS WHERE ID_PAGO='P02'
INSERT INTO MORA(ID_MORA,NRO_BOLETA,MONTO,MORA_INICIAL,MORA_TOTAL,RESTA,ID_CONCEPTO,ID_ESTUDIANTE)
VALUES('06',0,0.00,1.00,DATEDIFF(DAY,@F_PAGO1,@F_PAGO2) * @MORA_INI, 0,'CP-02','046565')

Hay algunas cosas que devo modificar ........ Gracias hermanos  :thumbsup:   estoy mejorando, por que esto lo veia fuera de mis limites xD... seguire  posteandoles mis proximas dudas, si es que ya no las puedo resolver..... no crean que al primero problema que tengo, sin pensarlo lo posteo...... bueno aveces si  :yao_ming: xD na broma... gracias  :)