Como hacer esto

16/04/2004 - 15:11 por Julio | Informe spam
Hola grupo, Tengo dos tablas: (Facturas,Cobros)

Facturas
Facturaid
ClienteID
NumeroFactura
FechaEmision
FechaLimite
Total


Cobros
CobroID
ClienteID
Fecha
Cantidad

Necesito cobrar una Recargo(Mora) cuando el cliente no page a tiempo, es
decir si su factura tiene una fechaLimite y el no registra pago antes de
esta fechaLimite,
se le cobrara 2% del total de la factura, Ahora si el paga antes de la
fechalimite pero solo paga una parte se le cobrara Recargo(Mora) por el
monto vencido de la factura.

Ahora como hacer si el cliente no tiene registro en la tabla cobros.

Preguntas similare

Leer las respuestas

#6 Julio
16/04/2004 - 19:55 | Informe spam
Hola Max, lo organize de esta manera, ya con esta vista la aplicacion tiene
que hacer su trabajo

Create view Mora
select
facturas.facturaid,facturas.clienteid,facturas.ConsumoID,facturas.numerofact
ura,facturas.fechaemision,
facturas.fechalimite,facturas.total, sum(cobros.cantidad) as
cantidadcobrada, dbo.Facturas.Total - dbo.Cobros.Cantidad AS MontoVencido,
max(cobros.fecha) as ultimopago,dbo.Cobros.Mes, dbo.Cobros.Año
FROM facturas left join
cobros on facturas.facturaid = cobros.facturaid
group by
facturas.facturaid,facturas.clienteid,facturas.numerofactura,facturas.fechae
mision,
facturas.fechalimite,facturas.total,cantidad,dbo.Cobros.Mes,
dbo.Cobros.Año,facturas.ConsumoID








"Maximiliano D. A." wrote in message
news:
Hola, bueno si no necesitas multiplicar entonces saca los CASE, que error


te
da?


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Julio" escribió en el mensaje
news:
> Hola Max, dispulpa que no lo especifique pero cobros tiene un campo
llamado
> FacturaID.
> ahora bien solo necesito tener los montos, no necesito multiplicar por


lo
> que costaria la mora ya que eso se definira en la aplicacion, en lo que


me
> enviaste al correrlo me da este error pero no encuentro la sintasis.
> Pero no necesito multiplicar la mora
>
> "Maximiliano D. A." wrote in


message
> news:
> > perdon se me fue el dedo :(
> >
> > ==> > >
> > Hola Julio como estas?
> >
> > Bien creo que aca podriamos usar algo asi como: (ojo enm la tabla


cobros
> > para mi deberia tener un campo que se llame
> > facturaid donde yo pueda no hacer solo el cobro a un cliente sino
indicar
> > que factura estoy cobrando :-))
> >
> > select
> >
>



facturas.facturaid,facturas.clienteid,facturas.numerodefactura,facturas.fech
> > aemision,
> > facturas.fechalimite,facturas.total, sum(cobros.cantidad) as
> > cantidadcobrada,
> > max(cobros.fecha) as ultimopago, CASE WHEN max(cobros.fecha) >
> > facturas.fecha THEN
> > facturas.total*1.02 ELSE 0 END as RECARGO,
> > CASE WHEN facturas.total > sum(cobros.cantidad) THEN (facturas.total -
> > sum(cobros.cantidad)) * 1.02)
> > ELSE 0 END as recargo2
> > FROM facturas left join
> > cobros on facturas.facturaid = cobros.facturaid
> > group by
> >
>



facturas.facturaid,facturas.clienteid,facturas.numerodefactura,facturas.fech
> > aemision,
> > facturas.fechalimite,facturas.total
> >
> > => > >
> > todo sin probar :(, fijate como te funciona y hacele las


modificaciones
> > necesarias :-)
> >
> > Bye
> >
> > Salu2
> > Maxi
> >
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> >
> > MSN:
> > Nunca consideres el estudio como una obligación sino como
> > una oportunidad para penetrar en el bello y maravillosos
> > mundo del saber.
> > - Albert Einstein
> >
> >
> >
> > "Julio" escribió en el mensaje
> > news:
> > > Hola grupo, Tengo dos tablas: (Facturas,Cobros)
> > >
> > > Facturas
> > > Facturaid
> > > ClienteID
> > > NumeroFactura
> > > FechaEmision
> > > FechaLimite
> > > Total
> > >
> > >
> > > Cobros
> > > CobroID
> > > ClienteID
> > > Fecha
> > > Cantidad
> > >
> > > Necesito cobrar una Recargo(Mora) cuando el cliente no page a


tiempo,
es
> > > decir si su factura tiene una fechaLimite y el no registra pago


antes
de
> > > esta fechaLimite,
> > > se le cobrara 2% del total de la factura, Ahora si el paga antes de


la
> > > fechalimite pero solo paga una parte se le cobrara Recargo(Mora) por
el
> > > monto vencido de la factura.
> > >
> > > Ahora como hacer si el cliente no tiene registro en la tabla cobros.
> > >
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004


Respuesta Responder a este mensaje
#7 Julio
16/04/2004 - 20:15 | Informe spam
Hola, Tengo un problema con esto ya que la suma no me funciona, creo que se
debe a que el group by contiene todos los campos.

De esta forma no funciona

SELECT dbo.Facturas.FacturaID, dbo.Facturas.ClienteID,
dbo.Facturas.ConsumoID, dbo.Facturas.NumeroFactura,
dbo.Facturas.FechaEmision,
dbo.Facturas.FechaLimite, dbo.Facturas.Total,
SUM(dbo.Cobros.Cantidad) AS cantidadcobrada,
dbo.Facturas.Total - dbo.Cobros.Cantidad AS
MontoVencido, MAX(dbo.Cobros.Fecha) AS ultimopago, dbo.Cobros.Mes,
dbo.Cobros.Año
FROM dbo.Facturas LEFT OUTER JOIN
dbo.Cobros ON dbo.Facturas.FacturaID dbo.Cobros.FacturaID
GROUP BY dbo.Facturas.FacturaID, dbo.Facturas.ClienteID,
dbo.Facturas.NumeroFactura, dbo.Facturas.FechaEmision,
dbo.Facturas.FechaLimite,
dbo.Facturas.Total, dbo.Cobros.Cantidad,
dbo.Cobros.Mes, dbo.Cobros.Año, dbo.Facturas.ConsumoID


De esta forma si funciona

SELECT dbo.Facturas.FacturaID, dbo.Facturas.ClienteID,
SUM(dbo.Cobros.Cantidad) AS cantidadcobrada

FROM dbo.Facturas LEFT OUTER JOIN
dbo.Cobros ON dbo.Facturas.FacturaID dbo.Cobros.FacturaID
GROUP BY dbo.Facturas.FacturaID, dbo.Facturas.ClienteID




"Julio" wrote in message
news:
Hola Max, lo organize de esta manera, ya con esta vista la aplicacion


tiene
que hacer su trabajo

Create view Mora
select



facturas.facturaid,facturas.clienteid,facturas.ConsumoID,facturas.numerofact
ura,facturas.fechaemision,
facturas.fechalimite,facturas.total, sum(cobros.cantidad) as
cantidadcobrada, dbo.Facturas.Total - dbo.Cobros.Cantidad AS MontoVencido,
max(cobros.fecha) as ultimopago,dbo.Cobros.Mes, dbo.Cobros.Año
FROM facturas left join
cobros on facturas.facturaid = cobros.facturaid
group by



facturas.facturaid,facturas.clienteid,facturas.numerofactura,facturas.fechae
mision,
facturas.fechalimite,facturas.total,cantidad,dbo.Cobros.Mes,
dbo.Cobros.Año,facturas.ConsumoID








"Maximiliano D. A." wrote in message
news:
> Hola, bueno si no necesitas multiplicar entonces saca los CASE, que


error
te
> da?
>
>
> Salu2
> Maxi
>
> Buenos Aires Argentina
> Desarrollador Microsoft 3 Estrellas .NET
>
> MSN:
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Julio" escribió en el mensaje
> news:
> > Hola Max, dispulpa que no lo especifique pero cobros tiene un campo
> llamado
> > FacturaID.
> > ahora bien solo necesito tener los montos, no necesito multiplicar por
lo
> > que costaria la mora ya que eso se definira en la aplicacion, en lo


que
me
> > enviaste al correrlo me da este error pero no encuentro la sintasis.
> > Pero no necesito multiplicar la mora
> >
> > "Maximiliano D. A." wrote in
message
> > news:
> > > perdon se me fue el dedo :(
> > >
> > > ==> > > >
> > > Hola Julio como estas?
> > >
> > > Bien creo que aca podriamos usar algo asi como: (ojo enm la tabla
cobros
> > > para mi deberia tener un campo que se llame
> > > facturaid donde yo pueda no hacer solo el cobro a un cliente sino
> indicar
> > > que factura estoy cobrando :-))
> > >
> > > select
> > >
> >
>



facturas.facturaid,facturas.clienteid,facturas.numerodefactura,facturas.fech
> > > aemision,
> > > facturas.fechalimite,facturas.total, sum(cobros.cantidad) as
> > > cantidadcobrada,
> > > max(cobros.fecha) as ultimopago, CASE WHEN max(cobros.fecha) >
> > > facturas.fecha THEN
> > > facturas.total*1.02 ELSE 0 END as RECARGO,
> > > CASE WHEN facturas.total > sum(cobros.cantidad) THEN


(facturas.total -
> > > sum(cobros.cantidad)) * 1.02)
> > > ELSE 0 END as recargo2
> > > FROM facturas left join
> > > cobros on facturas.facturaid = cobros.facturaid
> > > group by
> > >
> >
>



facturas.facturaid,facturas.clienteid,facturas.numerodefactura,facturas.fech
> > > aemision,
> > > facturas.fechalimite,facturas.total
> > >
> > > => > > >
> > > todo sin probar :(, fijate como te funciona y hacele las
modificaciones
> > > necesarias :-)
> > >
> > > Bye
> > >
> > > Salu2
> > > Maxi
> > >
> > > Buenos Aires Argentina
> > > Desarrollador Microsoft 3 Estrellas .NET
> > >
> > > MSN:
> > > Nunca consideres el estudio como una obligación sino como
> > > una oportunidad para penetrar en el bello y maravillosos
> > > mundo del saber.
> > > - Albert Einstein
> > >
> > >
> > >
> > > "Julio" escribió en el mensaje
> > > news:
> > > > Hola grupo, Tengo dos tablas: (Facturas,Cobros)
> > > >
> > > > Facturas
> > > > Facturaid
> > > > ClienteID
> > > > NumeroFactura
> > > > FechaEmision
> > > > FechaLimite
> > > > Total
> > > >
> > > >
> > > > Cobros
> > > > CobroID
> > > > ClienteID
> > > > Fecha
> > > > Cantidad
> > > >
> > > > Necesito cobrar una Recargo(Mora) cuando el cliente no page a
tiempo,
> es
> > > > decir si su factura tiene una fechaLimite y el no registra pago
antes
> de
> > > > esta fechaLimite,
> > > > se le cobrara 2% del total de la factura, Ahora si el paga antes


de
la
> > > > fechalimite pero solo paga una parte se le cobrara Recargo(Mora)


por
> el
> > > > monto vencido de la factura.
> > > >
> > > > Ahora como hacer si el cliente no tiene registro en la tabla


cobros.
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > > Outgoing mail is certified Virus Free.
> > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004
>
>


Respuesta Responder a este mensaje
#8 Julio
16/04/2004 - 20:57 | Informe spam
Como puedo crear una vista para solucionar esto
"Julio" wrote in message
news:%
Hola, Tengo un problema con esto ya que la suma no me funciona, creo que


se
debe a que el group by contiene todos los campos.

De esta forma no funciona

SELECT dbo.Facturas.FacturaID, dbo.Facturas.ClienteID,
dbo.Facturas.ConsumoID, dbo.Facturas.NumeroFactura,
dbo.Facturas.FechaEmision,
dbo.Facturas.FechaLimite, dbo.Facturas.Total,
SUM(dbo.Cobros.Cantidad) AS cantidadcobrada,
dbo.Facturas.Total - dbo.Cobros.Cantidad AS
MontoVencido, MAX(dbo.Cobros.Fecha) AS ultimopago, dbo.Cobros.Mes,
dbo.Cobros.Año
FROM dbo.Facturas LEFT OUTER JOIN
dbo.Cobros ON dbo.Facturas.FacturaID > dbo.Cobros.FacturaID
GROUP BY dbo.Facturas.FacturaID, dbo.Facturas.ClienteID,
dbo.Facturas.NumeroFactura, dbo.Facturas.FechaEmision,
dbo.Facturas.FechaLimite,
dbo.Facturas.Total, dbo.Cobros.Cantidad,
dbo.Cobros.Mes, dbo.Cobros.Año, dbo.Facturas.ConsumoID


De esta forma si funciona

SELECT dbo.Facturas.FacturaID, dbo.Facturas.ClienteID,
SUM(dbo.Cobros.Cantidad) AS cantidadcobrada

FROM dbo.Facturas LEFT OUTER JOIN
dbo.Cobros ON dbo.Facturas.FacturaID > dbo.Cobros.FacturaID
GROUP BY dbo.Facturas.FacturaID, dbo.Facturas.ClienteID




"Julio" wrote in message
news:
> Hola Max, lo organize de esta manera, ya con esta vista la aplicacion
tiene
> que hacer su trabajo
>
> Create view Mora
> select
>



facturas.facturaid,facturas.clienteid,facturas.ConsumoID,facturas.numerofact
> ura,facturas.fechaemision,
> facturas.fechalimite,facturas.total, sum(cobros.cantidad) as
> cantidadcobrada, dbo.Facturas.Total - dbo.Cobros.Cantidad AS


MontoVencido,
> max(cobros.fecha) as ultimopago,dbo.Cobros.Mes, dbo.Cobros.Año
> FROM facturas left join
> cobros on facturas.facturaid = cobros.facturaid
> group by
>



facturas.facturaid,facturas.clienteid,facturas.numerofactura,facturas.fechae
> mision,
> facturas.fechalimite,facturas.total,cantidad,dbo.Cobros.Mes,
> dbo.Cobros.Año,facturas.ConsumoID
>
>
>
>
>
>
>
>
> "Maximiliano D. A." wrote in


message
> news:
> > Hola, bueno si no necesitas multiplicar entonces saca los CASE, que
error
> te
> > da?
> >
> >
> > Salu2
> > Maxi
> >
> > Buenos Aires Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> >
> > MSN:
> > Nunca consideres el estudio como una obligación sino como
> > una oportunidad para penetrar en el bello y maravillosos
> > mundo del saber.
> > - Albert Einstein
> >
> >
> >
> > "Julio" escribió en el mensaje
> > news:
> > > Hola Max, dispulpa que no lo especifique pero cobros tiene un campo
> > llamado
> > > FacturaID.
> > > ahora bien solo necesito tener los montos, no necesito multiplicar


por
> lo
> > > que costaria la mora ya que eso se definira en la aplicacion, en lo
que
> me
> > > enviaste al correrlo me da este error pero no encuentro la sintasis.
> > > Pero no necesito multiplicar la mora
> > >
> > > "Maximiliano D. A." wrote in
> message
> > > news:
> > > > perdon se me fue el dedo :(
> > > >
> > > > ==> > > > >
> > > > Hola Julio como estas?
> > > >
> > > > Bien creo que aca podriamos usar algo asi como: (ojo enm la tabla
> cobros
> > > > para mi deberia tener un campo que se llame
> > > > facturaid donde yo pueda no hacer solo el cobro a un cliente sino
> > indicar
> > > > que factura estoy cobrando :-))
> > > >
> > > > select
> > > >
> > >
> >
>



facturas.facturaid,facturas.clienteid,facturas.numerodefactura,facturas.fech
> > > > aemision,
> > > > facturas.fechalimite,facturas.total, sum(cobros.cantidad) as
> > > > cantidadcobrada,
> > > > max(cobros.fecha) as ultimopago, CASE WHEN max(cobros.fecha) >
> > > > facturas.fecha THEN
> > > > facturas.total*1.02 ELSE 0 END as RECARGO,
> > > > CASE WHEN facturas.total > sum(cobros.cantidad) THEN
(facturas.total -
> > > > sum(cobros.cantidad)) * 1.02)
> > > > ELSE 0 END as recargo2
> > > > FROM facturas left join
> > > > cobros on facturas.facturaid = cobros.facturaid
> > > > group by
> > > >
> > >
> >
>



facturas.facturaid,facturas.clienteid,facturas.numerodefactura,facturas.fech
> > > > aemision,
> > > > facturas.fechalimite,facturas.total
> > > >
> > > > => > > > >
> > > > todo sin probar :(, fijate como te funciona y hacele las
> modificaciones
> > > > necesarias :-)
> > > >
> > > > Bye
> > > >
> > > > Salu2
> > > > Maxi
> > > >
> > > > Buenos Aires Argentina
> > > > Desarrollador Microsoft 3 Estrellas .NET
> > > >
> > > > MSN:
> > > > Nunca consideres el estudio como una obligación sino como
> > > > una oportunidad para penetrar en el bello y maravillosos
> > > > mundo del saber.
> > > > - Albert Einstein
> > > >
> > > >
> > > >
> > > > "Julio" escribió en el mensaje
> > > > news:
> > > > > Hola grupo, Tengo dos tablas: (Facturas,Cobros)
> > > > >
> > > > > Facturas
> > > > > Facturaid
> > > > > ClienteID
> > > > > NumeroFactura
> > > > > FechaEmision
> > > > > FechaLimite
> > > > > Total
> > > > >
> > > > >
> > > > > Cobros
> > > > > CobroID
> > > > > ClienteID
> > > > > Fecha
> > > > > Cantidad
> > > > >
> > > > > Necesito cobrar una Recargo(Mora) cuando el cliente no page a
> tiempo,
> > es
> > > > > decir si su factura tiene una fechaLimite y el no registra pago
> antes
> > de
> > > > > esta fechaLimite,
> > > > > se le cobrara 2% del total de la factura, Ahora si el paga antes
de
> la
> > > > > fechalimite pero solo paga una parte se le cobrara Recargo(Mora)
por
> > el
> > > > > monto vencido de la factura.
> > > > >
> > > > > Ahora como hacer si el cliente no tiene registro en la tabla
cobros.
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > Outgoing mail is certified Virus Free.
> > > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > > Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004
> > > >
> > > >
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida