SELECT
ven_doc_fecha_documento AS `ven_doc_fecha_documento`,
ven_doc_id_moneda AS `ven_doc_id_moneda`,
ven_doc_id_tipo_movimiento AS `ven_doc_id_tipo_movimiento`,
ven_doc_status AS `ven_doc_status`,
cat_cli_codigo AS `cat_cli_codigo`,
cat_cli_rfc AS `cat_cli_rfc`,
cat_cli_nombre AS `cat_cli_nombre`,
ven_doc_folio AS `ven_doc_folio`,
cat_iva_porcentaje AS `cat_iva_porcentaje`,
cat_ieps_porcentaje AS `cat_ieps_porcentaje`,
cat_alm_id AS `cat_alm_id`,
cat_alm_codigo AS `cat_alm_codigo`,
cat_alm_descripcion AS `cat_alm_descripcion`,
cat_ven_codigo AS `cat_ven_codigo`,
cat_ven_nombre AS `cat_ven_nombre`,
cat_clf_clasificacion1 AS `cat_clf_clasificacion1`,
cat_clf_clasificacion2 AS `cat_clf_clasificacion2`,
cat_clf_clasificacion3 AS `cat_clf_clasificacion3`,
cat_clf_descripcion AS `cat_clf_descripcion`,
cat_clf_descripcion2 AS `cat_clf_descripcion2`,
cat_clf_descripcion3 AS `cat_clf_descripcion3`,
cat_art_codigo1 AS `cat_art_codigo1`,
cat_art_descripcion1 AS `cat_art_descripcion1`,
ven_par_descuento1,
ven_par_descuento2,
ven_par_descuento3,
ven_par_descuento4,
ven_par_descuento5,
ven_par_cantidad_total AS `Unidades`,
ven_par_devueltas AS `UnidadesDevueltas`,
ven_par_costo AS `Costo`,
(ven_par_costo/ven_par_cantidad_total)*ven_par_devueltas AS `CostoDevoluciones`,
ven_par_precio_uni*ven_par_cantidad_total AS `Importe`,
IF(
ven_par_descuento1>0,(1-
(
(1-(ven_par_descuento1/100))*
(IF(ven_par_descuento2>0,1-(ven_par_descuento2/100),1))*
(IF(ven_par_descuento3>0,1-(ven_par_descuento3/100),1))*
(IF(ven_par_descuento4>0,1-(ven_par_descuento4/100),1))*
(IF(ven_par_descuento5>0,1-(ven_par_descuento5/100),1))
))*100,
0
) AS `porcentajeDescuento`,
IF(ven_par_descuento1>0,((SELECT porcentajeDescuento)/100)*(ven_par_precio_uni*ven_par_cantidad_total),0) AS importeDescuento,
ven_par_precio_uni*(IF(ven_par_descuento1>0,1-((SELECT porcentajeDescuento)/100),1)) AS importeUniConDescuento,
ven_par_precio_uni*(IF(ven_par_descuento1>0,1-((SELECT porcentajeDescuento)/100),1))*ven_par_cantidad_total AS importeConDescuento,
ven_par_tipo_cambio AS `TipoCambio`,
((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)*ven_par_cantidad_total AS `ImporteIEPS`,
((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total AS `ImporteMN`,
(((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total AS `ImporteMNIEPS`,
((((SELECT importeUniConDescuento))*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total)*(cat_iva_porcentaje/100) AS `ImporteIVA`,
((((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total)+
(((((SELECT importeUniConDescuento))*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total)*(cat_iva_porcentaje/100)) AS `ImporteConIVA`,
((SELECT importeUniConDescuento)*ven_par_devueltas*ven_par_tipo_cambio)*-1 AS `ImporteDevoluciones`,
(((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)*ven_par_devueltas)*-1 AS `DevolucionesIEPS`,
((((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_devueltas)*-1 AS `ImporteDevolucionesMN`,
(((((SELECT importeUniConDescuento))*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_devueltas)*(cat_iva_porcentaje/100))*-1 AS `DevolucionesIVA`,
(((((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_devueltas)+
(((((SELECT importeUniConDescuento))*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_devueltas)*(cat_iva_porcentaje/100)))*-1 AS `ImporteDevolucionesConIVA`,
((((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total)-
(((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_devueltas AS `Total`,
(((((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_cantidad_total)-
(((SELECT importeUniConDescuento)*ven_par_tipo_cambio)*(cat_ieps_porcentaje/100)+(SELECT importeUniConDescuento)*ven_par_tipo_cambio)*ven_par_devueltas) -
(ven_par_costo+((ven_par_costo/ven_par_cantidad_total)*ven_par_devueltas)) AS `Utilidad`
FROM
ventas_documentos
JOIN
ventas_partidas
ON
ven_par_id_documento = ven_doc_id
JOIN
cat_articulos
ON
cat_art_id = ven_par_id_articulo
JOIN
cat_clasificaciones
ON
cat_clf_id = cat_art_id_clasificacion
JOIN
cat_iva
ON
cat_iva_id = ven_par_id_iva
JOIN
cat_ieps
ON
cat_ieps_id = ven_par_id_ieps
JOIN
cat_almacenes
ON
cat_alm_id = ven_doc_id_almacen
JOIN
cat_clientes
ON
cat_cli_id = ven_doc_id_cliente
JOIN
cat_vendedores
ON
cat_ven_id = ven_doc_id_vendedor