Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/08/2010, 15:29
saumal20
 
Fecha de Ingreso: diciembre-2008
Ubicación: sullana, Piura
Mensajes: 106
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con suma de campos de diferente tabla!!!!!!!

Código MySQL:
Ver original
  1. -- Tabla7: compras  --
  2. DELIMITER $$
  3. -- PA de insertar compra a contado
  4. create procedure PA_7_insertar_compras_contado(idlocales int(4), fechacompras date, horacompras time, idtipocomprobantes int(4), idformapagos int(4), idtipopagos int(4), subtotalcompras float(5,3), valorigv float(3,3), idigv int(4), igvcompras float(5,3), montototalcompras float(5,3), idclientes int(4), vendedorcompras varchar(50))
  5.     BEGIN
  6.     -- DECLARE fehocompras timestamp;
  7.     -- select CURRENT_timestamp() into fehocompras;
  8.     -- INSERT INTO compras(idlocales, fehocompras, fehopagocompras, idtipocomprobantes, numeroseries, numerocomprobantes, idformapagos, idtipopagos, subtotalcompras, valorigv, idigv, igvcompras, montototalcompras, idclientes) VALUES (@idlocales, fehocompras, fehocompras, @idtipocomprobantes, @numeroseries, @numerocomprobantes, @idformapagos, @idtipopagos, @subtotalcompras, @valorigv, @idigv, @igvcompras, @montototalcompras, @idclientes);
  9.     -- Declaramos variables necesarias
  10.     DECLARE ultimaserie int(4);
  11.     DECLARE ultimocomprobantes int(12);
  12.     -- obtenemos el ultimo numero de serie por el tipocomprobante
  13.     select numeroseries into ultimaserie
  14.     from tipocomprobantes
  15.     where idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  16.     order by numeroseries desc limit 1;
  17.     -- obtenemos el ultimo numero de comprobante por el tipocomprobante
  18.     select numerocomprobante into ultimocomprobantes
  19.     from tipocomprobantes
  20.     where idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  21.     order by numeroseries desc limit 1;
  22.     -- comparamos si el numero de comprobante es menor 999999999999(ultimo numero posible)
  23.     IF numerocomprobantes >= 999999999999 then
  24.         -- si es si
  25.         --actualizamos el nuevo numero de serie
  26.         UPDATE tipocomprobantes
  27.         SET numeroseries = ultimaserie + 1
  28.         WHERE idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales;
  29.         -- actualizamos el numero de comprobante a 1
  30.         UPDATE tipocomprobantes
  31.         SET numerocomprobante = 1
  32.         WHERE idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales;
  33.         -- Obtenemos el nuevo ultimo numero de comprobante
  34.         select numerocomprobante into ultimocomprobantes
  35.         from tipocomprobantes
  36.         WHERE idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  37.         order by numerocomprobante desc limit 1;
  38.         -- Obtenemos el nuevo ultimo numero de serie
  39.         select numeroseries into ultimaserie
  40.         from tipocomprobantes
  41.         where idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  42.         order by numeroseries desc limit 1;
  43.          -- insertamos la nueva compra
  44.         INSERT INTO compras(idlocales, fechacompras, horacompras, fehopagocompras, idtipocomprobantes, numeroseries, numerocomprobantes, idformapagos, idtipopagos, subtotalcompras, valorigv, idigv, igvcompras, montototalcompras, idclientes, vendedorcompras) VALUES (@idlocales, @fechacompras, @horacompras, @fechacompras, @idtipocomprobantes, ultimaserie, ultimocomprobantes, @idformapagos, @idtipopagos, @subtotalcompras, @valorigv, @idigv, @igvcompras, @montototalcompras, @idclientes, @vendedorcompras);
  45.     ELSE
  46.         INSERT INTO compras(idlocales, fechacompras, horacompras, fehopagocompras, idtipocomprobantes, numeroseries, numerocomprobantes, idformapagos, idtipopagos, subtotalcompras, valorigv, idigv, igvcompras, montototalcompras, idclientes, vendedorcompras)) VALUES (@idlocales, @fechacompras, @horacompras, @fechacompras, @idtipocomprobantes, ultimaserie, ultimocomprobantes, @idformapagos, @idtipopagos, @subtotalcompras, @valorigv, @idigv, @igvcompras, @montototalcompras, @idclientes, @vendedorcompras);
  47.     END IF;
  48.     END$$
  49. -- PA de insertar compra a credito
  50. create procedure PA_7_insertar_compras_credito(idlocales int(4), fechacompras date, horacompras time, idtipocomprobantes int(4), idformapagos int(4), idtipopagos int(4), subtotalcompras float(5,3), valorigv float(3,3), idigv int(4), igvcompras float(5,3), montototalcompras float(5,3), idclientes int(4), vendedorcompras varchar(50))
  51.     BEGIN
  52.     -- Declaramos variables necesarias
  53.     DECLARE ultimaserie int(4);
  54.     DECLARE ultimocomprobantes int(12);
  55.     -- obtenemos el ultimo numero de serie por el tipocomprobante
  56.     select numeroseries into ultimaserie
  57.     from tipocomprobantes
  58.     where idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  59.     order by numeroseries desc limit 1;
  60.     -- obtenemos el ultimo numero de comprobante por el tipocomprobante
  61.     select numerocomprobante into ultimocomprobantes
  62.     from tipocomprobantes
  63.     where idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  64.     order by numeroseries desc limit 1;
  65.     -- comparamos si el numero de comprobante es menor 999999999999(ultimo numero posible)
  66.     IF numerocomprobantes >= 999999999999 then
  67.         -- si es si
  68.         --actualizamos el nuevo numero de serie
  69.         UPDATE tipocomprobantes
  70.         SET numeroseries = ultimaserie + 1
  71.         WHERE idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales;
  72.         -- actualizamos el numero de comprobante a 1
  73.         UPDATE tipocomprobantes
  74.         SET numerocomprobante = 1
  75.         WHERE idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales;
  76.         -- Obtenemos el nuevo ultimo numero de comprobante
  77.         select numerocomprobante into ultimocomprobantes
  78.         from tipocomprobantes
  79.         WHERE idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  80.         order by numerocomprobante desc limit 1;
  81.         -- Obtenemos el nuevo ultimo numero de serie
  82.         select numeroseries into ultimaserie
  83.         from tipocomprobantes
  84.         where idtipocomprobantes = @idtipocomprobantes AND idlocales = @idlocales
  85.         order by numeroseries desc limit 1;
  86.          -- insertamos la nueva compra
  87.         INSERT INTO compras(idlocales, fechacompras, horacompras, fechapago, idtipocomprobantes, numeroseries, numerocomprobantes, idformapagos, idtipopagos, subtotalcompras, igvcompras, montototalcompras, idclientes, vendedorcompras) VALUES (@idlocales, @fechacompras, @horacompras, "0000-00-00 00:00:00",@idtipocomprobantes, ultimaserie, ultimocomprobantes, @idformapagos, @idtipopagos, @subtotalcompras, @igvcompras, @montototalcompras, @idclientes, @vendedorcompras);
  88.     ELSE
  89.         INSERT INTO compras(idlocales, fechacompras, horacompras, fechapago, idtipocomprobantes, numeroseries, numerocomprobantes, idformapagos, idtipopagos, subtotalcompras, igvcompras, montototalcompras, idclientes, vendedorcompras) VALUES (@idlocales, @fechacompras, @horacompras, "0000-00-00 00:00:00",@idtipocomprobantes, ultimaserie, ultimocomprobantes, @idformapagos, @idtipopagos, @subtotalcompras, @igvcompras, @montototalcompras, @idclientes, @vendedorcompras);
  90.     END IF;
  91.     END$$
  92. -- Pa de borrar
  93. -- Pa de actualizar pago de compras
  94. create procedure PA_7_actualizar_compras_pago(idlocales int(4), idtipocomprobantes int(4), numeroseries int(4), numerocomprabante int(20), fechapagoscompras date)
  95.     BEGIN
  96.         UPDATE compras
  97.         SET  fechapagoscompras = @fechapagoscompras
  98.         WHERE idlocales = @idlocales AND idtipocomprobantes = @idtipocomprobantes AND numeroseries = @numeroseries AND numerocomprobantes = @numerocomprobantes;
  99.     END$$
  100. -- Pa de actualizar anulacion de compras
  101. create procedure PA_7_actualizar_compras_anulacion(idcompras int(20), idlocales int(4), numeroseries int(4), numerocomprobantes int(12), idtipocomprobantes int(4), fechaanulacioncompra date, motivoanulacioncompras text)
  102.     BEGIN
  103.         DECLARE numeroscompras int(20);
  104.         select idcompras into @numeroscompras
  105.         from compras
  106.         where idlocales = @idlocales AND idtipocomprobantes = @idtipocomprobantes AND idtipocomprobantes = @idtipocomprobantes;
  107.         UPDATE compras
  108.         SET anulacioncompras = 1 AND fechaanulacioncompra = @fechaanulacioncompra AND motivoanulacioncompras = @motivoanulacioncompras
  109.         WHERE idlocales = @idlocales AND idtipocomprobantes = @idtipocomprobantes AND numerocomprobantes = @numerocomprobantes AND numeroseries= @numeroseries;
  110.         UPDATE detallecompras
  111.         SET idcombos = idcombos
  112.         WHERE numeroscompras = @numeroscompras;
  113.     END$$
  114. DELIMITER ;
  115.  
  116. -- Tabla8: detallescompras
  117. DELIMITER $$  --
  118. -- PA de insertar
  119. create procedure PA_8_insertar_detallecompras(idcompras int(10), idmercaderias int(10), idcombos int(10), idrecetas_preparadas int(10), preciomercaderias float(5,3), cantidadmercaderias float(5,3), idtipounidades int(4), subtotal float(5,3))
  120.     BEGIN
  121.         INSERT INTO detallecompras(idcompras, idproductos, precioproductos, cantidadproductos, idtipounidades, subtotal) VALUES (idcompras, idproductos, precioproductos, cantidadproductos, idtipounidades, subtotal);
  122.     END$$
  123. -- Pa de borrar
  124. -- Pa de actualizar
  125. DELIMITER ;

estos los iamo desde php claro esta