Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Pagos...

Estas en el tema de Pagos... en el foro de Mysql en Foros del Web. estoy haciendo un sistemita de pagos... pero tengo problema con una consulta.. nose por donde comenzar.... estas son mis tablas: Código: CREATE TABLE `pagodecreditos` ( ...
  #1 (permalink)  
Antiguo 11/08/2008, 12:31
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Pagos...

estoy haciendo un sistemita de pagos... pero tengo problema con una consulta.. nose por donde comenzar....


estas son mis tablas:
Código:
CREATE TABLE `pagodecreditos` (
  `Idpago` int(150) NOT NULL auto_increment,
  `Idmov` int(50) NOT NULL,
  `Fechapago` date NOT NULL,
  `Montopagado` int(50) NOT NULL,
  PRIMARY KEY  (`Idpago`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `movimientos` (
  `Idmov` int(250) NOT NULL auto_increment,
  `Idtipomov` int(1) NOT NULL,
  `Idjoya` int(20) NOT NULL,
  `Idcliente` int(20) default NULL,
  `Idlugar` int(10) default NULL,
  `precioventareal` decimal(10,3) NOT NULL,
  `razondevolvio` varchar(250) default NULL,
  `Fechamov` date NOT NULL,
  PRIMARY KEY  (`Idmov`),
  UNIQUE KEY `Tipomov` (`Idtipomov`,`Idjoya`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


CREATE TABLE `tipomov` (
  `Idtipomov` int(1) NOT NULL,
  `Tipomov` varchar(50) NOT NULL,
  PRIMARY KEY  (`Idtipomov`),
  UNIQUE KEY `Tipomov` (`Tipomov`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `tipomov` (`Idtipomov`, `Tipomov`) VALUES 
(3, 'Devolucion'),
(2, 'Venta Contado'),
(4, 'Venta Credito');
y esto es el resultado que quiero obtener:
Código HTML:
 <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>Idcliente</td>
          <td>Cantidad de Pagos realizados</td>
          <td>Total Pagado</td>
          <td>Falta Pagar</td>
          <td>Ultima Fecha de Pago</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table> 
la verdad estoy perdidisimo, nose como puedo obtener esto....

help!!!!
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #2 (permalink)  
Antiguo 11/08/2008, 12:40
 
Fecha de Ingreso: agosto-2004
Ubicación: Lima
Mensajes: 109
Antigüedad: 19 años, 8 meses
Puntos: 1
Respuesta: Pagos...

donde guardaras la cantidad de pagos a realizar?

el Id del cliente es muy simple lo obtienes de tu tabla clientes
select id_cliente from clientes where id cliente=<?$idcliente?>

cantidad de pagos realizados dependra de la cantidad a cuotas a pagar y esto es lo que no esta claro donde se guradara??

ahora el total pagado
SELECT SUM(Montopagado) FROM pagodecreditos ,clientes

where pagodecreditos.id_cliente=clientes.id_cliente
tendrias que redefinir nuevamente tus tablas y modelarlas adecuadamente. si no fijate bien tu tabla por ejemplo pagodecreditos como saber a quien corresponde un pago .

para que puedas obtner lo que deseas.

Última edición por leo_25; 11/08/2008 a las 12:51
  #3 (permalink)  
Antiguo 11/08/2008, 12:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Pagos...

Tema trasladado a MySQL.
  #4 (permalink)  
Antiguo 11/08/2008, 12:43
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: Pagos...

en realidad no hay una cantitdad de pagos a realizar sino una Cantidad de Pagos realizados...

ya que los clientes cada ves que pueden pagan un monto, y pueden ser 2 a 10 cuotas por ejemplo por que a veces te dicen que van a pagar en 10 cuotas pero en la 6ta couta ya cancelan...
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #5 (permalink)  
Antiguo 11/08/2008, 12:53
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Pagos...

Con esta consulta obtube los datos que mencionas:

Código HTML:
SELECT Idcliente, count(pagodecreditos.Idmov) AS pagos, SUM(Montopagado) AS pagado, 
    (precioventareal - SUM(Montopagado)) AS deuda, MAX(Fechapago) AS fecha
FROM movimientos, pagodecreditos
WHERE pagodecreditos.Idmov = movimientos.Idmov
GROUP BY Idcliente, movimientos.Idmov
Espero que te sirva.
  #6 (permalink)  
Antiguo 11/08/2008, 13:26
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
De acuerdo Respuesta: Pagos...

este es mi codigo:

Código PHP:

<?php require_once('Connections/joyas.php'); require_once('funciones.php'); ?>
<?php

function ultimafechadepago($id){
$id=intval($id);
global 
$joyas;
global 
$database_joyas;
mysql_select_db($database_joyas$joyas);
$query_cantidadpagos "SELECT Idmov, Fechapago
FROM pagodecreditos
WHERE Idmov = $id
ORDER BY Fechapago DESC"
;
$cantidadpagos mysql_query($query_cantidadpagos$joyas) or die(mysql_error());
$row_cantidadpagos mysql_fetch_assoc($cantidadpagos);
$totalRows_cantidadpagos mysql_num_rows($cantidadpagos);
mysql_free_result($cantidadpagos);
return 
fechacorta($row_cantidadpagos['Fechapago']);
}

function 
cantidaddepagos($id){
$id=intval($id);
global 
$joyas;
global 
$database_joyas;
mysql_select_db($database_joyas$joyas);
$query_cantidadpagos "SELECT Count( * ) AS total
FROM pagodecreditos
WHERE Idmov = $id"
;
$cantidadpagos mysql_query($query_cantidadpagos$joyas) or die(mysql_error());
$row_cantidadpagos mysql_fetch_assoc($cantidadpagos);
$totalRows_cantidadpagos mysql_num_rows($cantidadpagos);
mysql_free_result($cantidadpagos);
return 
$row_cantidadpagos['total'];
}

function 
totalpagado($id){
$id=intval($id);
global 
$joyas;
global 
$database_joyas;
mysql_select_db($database_joyas$joyas);
$query_pagado "SELECT sum(Montopagado) as total FROM `pagodecreditos` WHERE Idmov = $id"
$pagado mysql_query($query_pagado$joyas) or die(mysql_error());
$row_pagado mysql_fetch_assoc($pagado);
$totalRows_pagado mysql_num_rows($pagado);
mysql_free_result($pagado);
return 
$row_pagado['total'];
}

mysql_select_db($database_joyas$joyas);
$query_creditosj "SELECT `Idmov`, `Idtipomov`, `Idjoya`, `Idcliente`, `Idlugar`, `precioventareal`, `razondevolvio`, `Fechamov` FROM `movimientos` Where Idtipomov = 4"// creditos
$creditosj mysql_query($query_creditosj$joyas) or die(mysql_error());
$row_creditosj mysql_fetch_assoc($creditosj);
$totalRows_creditosj mysql_num_rows($creditosj);

?>
Código PHP:
 <table width="100%" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;" bordercolor="#000000">
        <tr>
          <td bgcolor="#CCCCCC"><strong>Cliente</strong></td>
          <td bgcolor="#CCCCCC"><strong>Codigo Joya</strong></td>
          <td bgcolor="#CCCCCC"><strong> Pagos Realizados</strong></td>
          <td bgcolor="#CCCCCC"><strong>Total Pagado</strong></td>
          <td bgcolor="#CCCCCC"><strong>Falta Pagar</strong></td>
          <td bgcolor="#CCCCCC"><strong>Monto Total del Credito</strong></td>
          <td bgcolor="#CCCCCC"><strong>Ultima Fecha de Pago</strong></td>
          <td bgcolor="#CCCCCC"><strong>Agregar Pago</strong></td>
        </tr>
        <?php do{ ?>
        <tr>
          <td><a href="cliente.php?id=<?php echo $row_creditosj['Idcliente']; ?>" target="_blank"><?php echo cliente($row_creditosj['Idcliente']); ?></a></td>
          <td>JG<?php echo $row_creditosj['Idjoya'?></td>
          <td><?php echo cantidaddepagos($row_creditosj['Idmov']); ?></td>
          <td><?php echo moneda(totalpagado($row_creditosj['Idmov'])); ?></td>
          <td><?php echo $row_creditosj['precioventareal']-totalpagado($row_creditosj['Idmov']); ?></td>
          <td><?php echo moneda($row_creditosj['precioventareal']); ?></td>
          <td><?php echo ultimafechadepago($row_creditosj['Idmov']); ?></td>
          <td><a href="agregarpago.php?id=<?php echo $row_creditosj['Idmov']; ?>">Pagar</a></td>
        </tr>
         <?php } while ($row_creditosj mysql_fetch_assoc($creditosj)); ?>
      </table>
pero el problema es que puesto asi no puedo ordenar por lo que quiero y me siguien apareciendo los creditos que ya se pagaron todo...


quiero que solo me muestre los que no se pagaron todo todavia y que me ordene por la fecha del ultimo pago en forma ascendente...
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #7 (permalink)  
Antiguo 11/08/2008, 13:34
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: Pagos...

SELECT Idcliente, count( pagodecreditos.Idmov ) AS pagos, SUM( Montopagado ) AS pagado, (
precioventareal - SUM( Montopagado )
) AS deuda, precioventareal, MAX( Fechapago ) AS fecha
FROM movimientos, pagodecreditos
WHERE pagodecreditos.Idmov = movimientos.Idmov And movimientos.Idtipomov = 4
GROUP BY Idcliente, movimientos.Idmov

buenisimo! me sirvio esa consulta!!!

Gracias!!!
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #8 (permalink)  
Antiguo 11/08/2008, 13:53
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: Pagos...

estub modificando esa consulta y me tope con un problema:

Consulta:

Código HTML:
SELECT movimientos.Idmov, Idjoya, Idcliente, count( pagodecreditos.Idmov ) AS pagos, SUM( Montopagado ) AS pagado, (
precioventareal - SUM( Montopagado ) 
) AS deuda, precioventareal, MAX( Fechapago ) AS fecha
FROM movimientos, pagodecreditos
WHERE  deuda > 0 And pagodecreditos.Idmov = movimientos.Idmov And movimientos.Idtipomov = 4
GROUP BY Idcliente, movimientos.Idmov
Order by fecha ASC
me da este error:
#1054 - Unknown column 'deuda' in 'where clause'
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #9 (permalink)  
Antiguo 11/08/2008, 14:25
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Pagos...

No se me ocurre nada mas, solo que la dejes asi:

Código HTML:
SELECT movimientos.Idmov, Idjoya, Idcliente, count( pagodecreditos.Idmov ) AS pagos, SUM( Montopagado ) AS pagado, (
precioventareal - SUM( Montopagado ) 
) AS deuda, precioventareal, MAX( Fechapago ) AS fecha
FROM movimientos, pagodecreditos
WHERE pagodecreditos.Idmov = movimientos.Idmov And movimientos.Idtipomov = 4
GROUP BY Idcliente, movimientos.Idmov
Order by fecha ASC
Y este filtro deuda > 0 lo hagas en PHP.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:48.