text:
v_imprimircomprobantesinvenv__cuotas__x__cobrar__nc__comprascaja.v_reciboegresoscajaventas.v_listar_cabecera_facturacion
select *from planillas.v_persona

ATTR fn_list_ventas_agrupadas
select * from ventas.V_CABPREVENTA   where id_empresa=1 and  documento || doc_persona || cliente ilike '%%'

select *from planillas.v_persona where proveedor=true
SELECT *FROM SEGURIDAD.ITEMfn_list_ventas_agrupadas

select *from ventas.v_imprimircomprobantes

SELECT ITEM,ITEM_ORDEN,EVENTO,MENU,ICONO,MNU_FAVORITO FROM SEGURIDAD.ITEM WHERE menu_item=false
select *from seguridad.tbl_permiso

SELECT *FROM VENTAS.v_listar_cabecera_facturacion
select * from compras.V_RELACIONDOCCOMPRA_NOTACREDITO   where codarti='1' and fecha>='01/01/2016' and fecha<='19/01/2017'

select *from grifo.v_liquidaisla
select *from almacen.tbl_detproducto
select *from  COMPRAS.V_RELACIONDOCCOMPRA_NOTACREDITO

select * from almacen.v_inven_almacen   where id_almacen=1
select *from almacen.tbl_existencia where id_producto='1636' and id_almacen=1

select * from almacen.list_kardex('18/11/2016','25/11/2017','09','2',' where   id_empresa=1 and  id_producto = ''1636''  and idunimed=14',1)

select * from almacen.V_LISTAR_PRODUCTO_KARDEX_INV   where upper(trim(codigo)) || upper(trim(producto)) ilike  '%1412%' and  id_almacen=2

select *from almacen.v_producto_stock_unidad

select *from almacen.tbl_precio

select  df.id_producto ,df.cantidad,df.precio,z.costo from ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on f.id_facturacion=df.id_facturacion
inner join  (
select pre.id_producto,pre.id_unidadventa,pre.costo from almacen.tbl_producto p
inner join almacen.tbl_familia f on f.id_familia=p.id_familia
inner join almacen.tbl_detproducto dp on dp.id_producto=p.id_producto
inner join almacen.tbl_precio pre on pre.id_producto=dp.id_producto and dp.id_unidadventa=pre.id_unidadventa
) z on z.id_producto=df.id_producto and z.id_unidadventa=df.id_unidadventa

select p.id_producto,p.descripcion_larga as producto,cantidad,precio,cp.fec_documento as fecha from compras.tbl_compra cp
inner join compras.tbl_detcompra dc on cp.id__compra=dc.id__compra and cp.id_sucursalcompra=dc.id_sucursalcompra
inner join almacen.tbl_precio pre on pre.id_producto=dc.id_producto and pre.id_unidadventa=dc.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=pre.id_producto

select *from compras.tbl_compra
select *from compras.tbl_detcompra

select *from almacen.tbl_producto p
inner join almacen.tbl_familia f on f.id_familia=p.id_familia
inner join almacen.tbl_detproducto dp on dp.id_producto=p.id_producto

select * from ventas.v_listar_cabecera_unidadvehicular   where cliente||COMPROBANTE ilike '%%' and id_empresa=1  and (fecha_Venta::date>= '01/02/2018' and fecha_Venta::date<= '28/02/2018') limit 100

select *from restaurant.v_comanda

select * from creditos.v_creditos_x_cobrar  where id_empresa=1 and id_cliente='3'

select * from TRAMITES.v_listar_clientes_tramites WHERE idfacturacion='353'

SELECT *FROM VENTAS.TBL_FACTURACION F
INNER JOIN  VENTAS.TBL_COMICPERSONA CP ON F.ID_VENDEDOR=CP.ID_PERSONA

SELECT *FROM  VENTAS.TBL_COMICPERSONA

select *from contabilidad.tbl__asiento__contable asi
inner join contabilidad.tbl__detalle__asiento__contable das on asi.id_asiento=das.id_asiento
inner join contabilidad.tbl_plancuenta pc on pc.id_plancuenta=das.id_plancuenta
inner join planillas.tbl_persona per on per.id_persona=das.id__persona
inner join common.tbl_comprobante cp on cp.id_comprobante=das.id_comprobante

SELECT *FROM planillas.tbl_persona

select *from ventas.v_registroventas

select *from ventas.tbl_facturacion

select *from contabilidad.tbl__detalle__asiento__contable

select *from ventas.tbl_facturacion f
select *from ventas.tbl_clite
inner join planillas.tbl_persona per on f.id_cliente

select *from compras.v_compras_correlativos

select *from caja.tbl_movcaja

SELECT *FROM ventas.v_listar_vericacion_cobransas

select *from common.tbl_banco

select *from caja.tbl_detmovpago where id_cuenta<>0
select *from caja.tbl_cuentabancaria cba
inner join  common.tbl_banco ban on ban.id_banco=cba.id_banco

select *from almacen.v_ventasxproducto

SELECT fa.id_familia,fa.descripcion_larga as familia,sum(df.importe) as importe FROM VENTAS.TBL_FACTURACION F
INNER JOIN VENTAS.TBL_DETFACTURACION df on f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal
INNER JOIN ALMACEN.TBL_PRODUCTO P ON P.id_producto=df.id_producto
INNER JOIN ALMACEN.TBL_FAMILIA fa ON fa.id_familia=p.id_familia
where df.id_estado=1 and f.id_estado=1
group by  fa.id_familia,fa.descripcion_larga
order by fa.id_familia::integer asc

CREATE OR REPLACE
SELECT p.id_producto,p.descripcion_larga as producto,fa.id_familia,fa.descripcion_larga as familia,sum(df.importe) as importe FROM VENTAS.TBL_FACTURACION F
INNER JOIN VENTAS.TBL_DETFACTURACION df on f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal
INNER JOIN ALMACEN.TBL_PRODUCTO P ON P.id_producto=df.id_producto
INNER JOIN ALMACEN.TBL_FAMILIA fa ON fa.id_familia=p.id_familia
where df.id_estado=1 and f.id_estado=1
group by  fa.id_familia,fa.descripcion_larga,p.id_producto,p.descripcion_larga
order by sum(df.importe) desc,fa.id_familia::integer asc

select *from planillas.v_clientes

select 4898-4922

select *from ventas.tbl_facturacion f where f.id_tipoventa=1

select *from almacen.V_INVENTARIOVALORCIADOINICIAL
select *from seguridad.tbl_usuario

select
  COALESCE((select '-' || replace(replace(replace(replace(replace(t.telefono::text,'[{"key":"' ,''),'","',':'),'value":"',''),'"},{"key":"','
- '),'"}]','')
			from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  key,value
		from almacen.tbl_datos_adicionales_producto_venta  tl
		--where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t),'')

CREATE OR REPLACE VIEW planillas.v_asistencia
 AS
 SELECT d.id,
    p.doc_persona,
    p.nombre_razon AS colaborador,
    d.fecha,
    (((date_part('hour'::text, d.fecha))::text || ':'::text) || (date_part('minute'::text, d.fecha))::text) AS hora
   FROM (planillas.tbl_asistencia d
     JOIN planillas.tbl_persona p ON (((p.id_persona)::text = (d.id_persona)::text)));

create or replace function planillas.fn_asistencia()
as
returns table(codigo text, documento text,colaborador text)
 SELECT
    p.doc_persona,
    p.nombre_razon AS colaborador,
    count(1) as cantidad
   FROM (planillas.tbl_asistencia d
     JOIN planillas.tbl_persona p ON (((p.id_persona)::text = (d.id_persona)::text)))
group by p.doc_persona,
    p.nombre_razon

create or replace view planillas.v_identification_type_person
as
select id_tipdocidentidad as resourceid,descripcion_larga || '(' || codigo_sunat || ')'  as documenttype from planillas.tbl_tipdocidentidad

CREATE OR REPLACE VIEW almacen.v_producto_stock_unidad
 AS
 SELECT p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    p.descripcion_corta AS nombrecorto,
    m.descripcion_larga AS marca,
    COALESCE(trunc(sum(ex.stock_fisico), 6), 0.0) AS stock,
    e.id_estado,
    e.des_estado AS estado,
    p.servicio,
    p.impuesto,
    p.codigo,
    p.id_familia,
    dp.id_unidadventa,
    ex.id_almacen
   FROM (((((((almacen.tbl_detproducto dp
     JOIN almacen.tbl_producto p ON (((p.id_producto)::text = (dp.id_producto)::text)))
     JOIN almacen.tbl_unidad u ON ((u.id_unidadventa = dp.id_unidadventa)))
     JOIN almacen.tbl_marca m ON ((m.id_marca = p.id_marca)))
     JOIN almacen.tbl_precio pre ON ((((pre.id_producto)::text = (p.id_producto)::text) AND (pre.id_unidadventa = u.id_unidadventa))))
     JOIN almacen.tbl_listaprecio lp ON ((lp.id_listaprecio = pre.id_listaprecio)))
     JOIN almacen.tbl_existencia ex ON ((((p.id_producto)::text = (ex.id_producto)::text) AND (ex.id_unidadventa = u.id_unidadventa))))
     JOIN common.tbl_estado e ON ((p.id_estado = e.id_estado)))
  WHERE ((lp.id_estado = 1) AND (p.id_estado = 1))
  GROUP BY p.id_producto, p.descripcion_larga,p.descripcion_corta,e.des_estado,p.servicio,
    p.impuesto  ,m.descripcion_larga, e.id_estado, dp.id_unidadventa, ex.id_almacen,p.codigo,
    p.id_familia,
    dp.id_unidadventa,
    ex.id_almacen
  ORDER BY p.descripcion_larga;

CREATE OR REPLACE VIEW caja.v_movdiversos
 AS
 SELECT mc.fecha_mov,
    (((comp.descripcion_corta::text || '/'::text) || mc.serie::text) || '-'::text) || mc.numero::text AS documento,
        CASE
            WHEN btrim(mc.id_personaingdiv::text) = '000'::text THEN btrim(mc.nomape_cliente)
            ELSE btrim(p.nombre_razon::text)
        END || '
 ('||COALESCE(mc.glosa,'')||')' AS responsable,
    c.descripcion_larga AS motivo,
    fp.descripcion AS formapago,
    m.simbolo AS moneda,
    dmv.imp_pago,
    COALESCE(mc.signo, 0) AS signo,
    mc.id_movimcaja,
    mc.id_sucursal,
    mc.id_personaingdiv,
    s.id_empresa,
    mc.id_concepto,
        CASE
            WHEN mc.signo = '-1'::integer THEN 'EGRESO'::text
            ELSE 'INGRESO'::text
        END AS tipo_mov,
    date_part('month'::text, mc.fecha_mov::date) AS mes,
    date_part('day'::text, mc.fecha_mov::date) AS dia,
    to_char(mc.fecha_mov::date::timestamp with time zone, 'DD "de" TMMonth "del" YYYY'::text) AS fecha,
    mc.id_caja_destino AS id_caja,
    mc.id_facturacion
   FROM caja.tbl_movcaja mc
     JOIN planillas.tbl_persona p ON p.id_persona::text = mc.id_personaingdiv::text
     JOIN common.tbl_concepto c ON c.id::text = mc.id_concepto::text
     JOIN common.tbl_comprobante comp ON comp.id_comprobante = mc.id_comprobante
     JOIN caja.tbl_detmovpago dmv ON dmv.id_movimcaja = mc.id_movimcaja AND dmv.id_sucursal = mc.id_sucursal
     JOIN common.tbl_moneda m ON m.id_moneda = dmv.id_moneda
     JOIN common.tbl_formapago fp ON fp.id_formapago = dmv.id_formapago
     JOIN common.tbl_sucursal s ON s.id_sucursal = mc.id_sucursal
  WHERE (mc.id_estado = ANY (ARRAY[1, 0])) AND mc.id_facturacion IS NULL
  ORDER BY mc.signo, mc.id_concepto, (mc.fecha_mov::date), p.nombre_razon;

create or replace view users
as
select camp2 as email,camp1 as password,'' as name  from seguridad.tbl_usuario

select *from ventas.v_registroventas_detallada

admin@mail.com

select *from common.tbl_comprobante order by 1

select *from CAJA.V_OPERACIONBANCOS

CREATE OR REPLACE VIEW CAJA.V_OPERACIONBANCOS
AS
select
	op.serie,
	op.numero,
	op.fecha,
	ban.nombre_ban as banco,
	cba.nro_cuenta as cuenta,
	op.nro_operacion,
	op.importe ,
	m.simbolo as moneda,
	cto.descripcion_larga as concepto,
	res.nombre_razon as persona,
	case tipo_operacion
	when 1 then 'DEPOSITO'
	when 2 then 'TRANSFERENCIA'
	when 3 then 'RETIRO'
	end AS tranzaccion,
	case when operacion=1 then 'DEPOSITO' else 'RETIRO' end AS OPERACION,
	op.id_cuentabancaria,
	cto.id as concepto_id	,
	res.doc_persona as doc_responsable,
	res.id_persona as id_responsable,
	op.tipo_operacion
from caja.tbl_operacionbanco op
inner join caja.tbl_cuentabancaria cba on cba.id_cuenta=op.id_cuentabancaria
inner join common.tbl_banco ban on ban.id_banco=cba.id_banco
inner join common.tbl_moneda m on m.id_moneda=op.id_moneda
inner join common.tbl_concepto cto on cto.id=op.concepto_id
inner join planillas.tbl_persona res on res.id_persona=op.id_persona

select *from planillas.tbl_persona
select *from common.tbl_concepto
select *from caja.tbl_operacionbanco op

select *from planillas.tbl_persona

select *from common.tbl_moneda

CREATE OR REPLACE VIEW ventas.v_impnotascredito
 AS
 SELECT f.numdoc_facturacion,
    "right"((f.serie_facturacion)::text, 3) AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN (btrim((f.id_cliente)::text) = '000'::text) THEN (f.dni_cliente)::text
            ELSE btrim((c.doc_persona)::text)
        END AS documento,
        CASE
            WHEN (btrim((f.id_cliente)::text) = '000'::text) THEN btrim(f.nomape_cliente)
            ELSE btrim((c.nombre_razon)::text)
        END AS cliente,
    ((((((dc.direccion || ', '::text) || btrim((dep.departamento)::text)) || ','::text) || btrim((prov.provincia)::text)) || ', '::text) || btrim((dis.distrito)::text)) AS direccion,
    f.fecha_venta,
    (((f.serie_facturacion)::text || '-'::text) || (f.numdoc_facturacion)::text) AS nro_documento,
    ('SON :'::text || fu_numero_letras(f.imp_total)) AS tot_letras,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
    (
        CASE
            WHEN (btrim((df.id_producto)::text) = 'TXT-01'::text) THEN df.descripcion_linea
            ELSE (((split_part((p.descripcion_larga)::text, ','::text, 1) || ''::text) || btrim(COALESCE(almacen.fn_getseriesventas((f.id_facturacion)::bigint, f.id_sucursal, df.id_producto, df.id_unidadventa), ''::text))) || COALESCE(
            CASE
                WHEN ((df.ancho > (0)::numeric) AND (df.largo > (0)::numeric)) THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text))
        END ||
        CASE
            WHEN (df.precio = (0)::numeric) THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END) AS producto,
    df.importe AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    0 AS id_caja,
    0.0::numeric(20,4) AS imp_recibido,
    0.0::numeric(20,4) AS imp_vuelto,
    f.id_vendedor,
    NULL::text AS vale,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN (f.imp_igv > (0)::numeric) THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    (0)::numeric(20,4) AS puntos,
    (0)::numeric(20,4) AS tot_puntos,
    1 AS id_turno,
    tv.descripcion_larga AS tipoventa,
    split_part((vend.nombre_razon)::text, ' '::text, 1) AS vendedor,
    df.ancho,
    df.largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    ((((btrim((dep.departamento)::text) || ','::text) || btrim((prov.provincia)::text)) || ', '::text) || btrim((dis.distrito)::text)) AS ubigeo,
    COALESCE(( SELECT c_1.fec_vencimiento
           FROM ((creditos.tbl_credito cr
             JOIN creditos.tbl_ventacredito vc ON (((cr.id_credito = vc.id_credito) AND (cr.id_sucursal_credito = vc.id_sucursal_credito))))
             JOIN creditos.tbl_cuota c_1 ON (((cr.id_credito = c_1.id_credito) AND (cr.id_sucursal_credito = c_1.id_sucursal_credito))))
          WHERE ((f.id_facturacion = vc.id_facturacion) AND (f.id_sucursal = vc.id_sucursal))
          ORDER BY c_1.nro_cuota DESC
         LIMIT 1), f.fecha_venta) AS fec_vencimiento,
    df.imp_percepcion,
    (df.precio / 1.02) AS precio_percep_l,
    ((df.precio / 1.02) * df.cantidad) AS total_percep_l,
    f.valor_venta AS valorventa_percep,
    f.imp_igv AS impigv_percep,
    f.imp_total AS total_percep,
    f.imp_percepcion AS impprecep_percep,
    split_part((vfv.nombre_razon)::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
    (((cpc.descripcion_corta)::text || ((fc.serie_facturacion)::text || '-'::text)) || (fc.numdoc_facturacion)::text) AS comprobante_origen,
    mtv.descripcion_larga AS motivo_notacredito,
        CASE cpc.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
    cp.codigosunat,
    cpc.codigosunat AS codigosunat_ref,
        CASE
            WHEN (length((c.doc_persona)::text) <= 8) THEN 1
            ELSE
            CASE
                WHEN (cpc.id_comprobante = 3) THEN 6
                ELSE 1
            END
        END AS tipo_docliente,
    "right"((fc.serie_facturacion)::text, 3) AS serie_ref,
    fc.numdoc_facturacion AS numero_ref,
    to_char(((f.fecha_venta)::date)::timestamp with time zone, 'yyyy-mm-dd'::text) AS fechaemision,
    f.glosa,
        CASE
            WHEN (df.imp_igv > (0)::numeric) THEN (df.precio / 1.18)
            ELSE df.precio
        END AS valor_unitario,
    (
        CASE
            WHEN (df.imp_igv > (0)::numeric) THEN (df.precio / 1.18)
            ELSE df.precio
        END * df.cantidad) AS valor_venta_item,
        CASE
            WHEN (df.precio = (0)::numeric) THEN '02'::text
            ELSE '01'::text
        END AS tipoprecio,
        CASE
            WHEN (df.imp_igv > (0)::numeric) THEN (((df.precio / 1.18) * df.cantidad) * 0.18)
            ELSE (0)::numeric
        END AS imp_detiten,
    mtv.id_motivonotacredito,
    btrim((dep.departamento)::text) AS departamento,
    btrim((prov.provincia)::text) AS provincia,
    btrim((dis.distrito)::text) AS distrito,
    dis.id_distrito AS ubigeosunat,
    f.digestvalue,
    f.signaturevalue,
    COALESCE(c.email, ''::character varying) AS email,
    suc.direccion AS direccion_suc,
    suc.telefono,
    suc.celular,
    emp.ruc,
    suc.codigo_establecimiento,
    suc.id_ubigeo,
    suc.nom_ubigeo AS ubigeo_sucursal
   FROM ((((((((((((((((((((((ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON ((cp.id_comprobante = f.id_comprobante)))
     JOIN common.tbl_tipoventa tv ON ((tv.id_tipoventa = f.id_tipoventa)))
     JOIN common.tbl_moneda m ON ((m.id_moneda = f.id_moneda)))
     JOIN ventas.tbl_direccion dc ON (((dc.id_direccion = f.id_direccion) AND ((dc.id_persona)::text = (f.id_cliente)::text))))
     JOIN ventas.tbl_sector sec ON ((dc.id_sector = sec.id_sector)))
     JOIN ventas.tbl_zona z ON ((sec.id_zona = z.id_zona)))
     JOIN common.tbl_distrito dis ON (((z.id_distrito)::text = (dis.id_distrito)::text)))
     JOIN common.tbl_provincia prov ON (((dis.id_provincia)::text = (prov.id_provincia)::text)))
     JOIN common.tbl_dpto dep ON (((prov.id_dpto)::text = (dep.id_dpto)::text)))
     JOIN planillas.tbl_persona c ON (((c.id_persona)::text = (dc.id_persona)::text)))
     JOIN planillas.tbl_persona vend ON (((vend.id_persona)::text = (f.id_vendedor)::text)))
     JOIN ventas.tbl_detfacturacion df ON (((f.id_facturacion = df.id_facturacion) AND (f.id_sucursal = df.id_sucursal) AND (df.id_estado = 1))))
     JOIN almacen.tbl_precio tp ON (((tp.id_listaprecio = df.id_listaprecio) AND ((tp.id_producto)::text = (df.id_producto)::text) AND (tp.id_unidadventa = df.id_unidadventa))))
     JOIN almacen.tbl_detproducto dp ON ((((dp.id_producto)::text = (tp.id_producto)::text) AND (dp.id_unidadventa = tp.id_unidadventa))))
     JOIN almacen.tbl_producto p ON (((p.id_producto)::text = (dp.id_producto)::text)))
     JOIN almacen.tbl_unidad u ON ((u.id_unidadventa = df.id_unimedventa)))
     JOIN common.v_sucursal suc ON ((suc.id_sucursal = f.id_sucursal)))
     JOIN common.tbl_empresa emp ON ((emp.id_empresa = suc.id_empresa)))
     JOIN ventas.tbl_facturacion fc ON ((fc.id_facturacion = f.id_facturacionref)))
     JOIN common.tbl_comprobante cpc ON ((cpc.id_comprobante = fc.id_comprobante)))
     JOIN common.tbl_motivonotacredito mtv ON ((mtv.id_motivonotacredito = f.id_motivonotacredito)))
     JOIN planillas.tbl_persona vfv ON (((vfv.id_persona)::bpchar = (fc.id_vendedor)::bpchar)))
  WHERE (df.cantidad > (0)::numeric)
  ORDER BY f.fecha_venta, f.id_comprobante, f.serie_facturacion, f.numdoc_facturacion, df.item;

ALTER TABLE ventas.v_impnotascredito
    OWNER TO postgres;

CREATE OR REPLACE VIEW ventas.v_impnotasdebito
 AS
 SELECT f.numdoc_facturacion,
    "right"(f.serie_facturacion::text, 3) AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END AS cliente,
    (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS direccion,
    f.fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
        CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE ((split_part(p.descripcion_larga::text, ','::text, 1) || ''::text) || btrim(COALESCE(almacen.fn_getseriesventas(f.id_facturacion::bigint, f.id_sucursal, df.id_producto, df.id_unidadventa), ''::text))) || COALESCE(
            CASE
                WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    0 AS id_caja,
    0.0::numeric(20,4) AS imp_recibido,
    0.0::numeric(20,4) AS imp_vuelto,
    f.id_vendedor,
    NULL::text AS vale,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    0::numeric(20,4) AS puntos,
    0::numeric(20,4) AS tot_puntos,
    1 AS id_turno,
    tv.descripcion_larga AS tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
    df.ancho,
    df.largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS ubigeo,
    COALESCE(( SELECT c_1.fec_vencimiento
           FROM creditos.tbl_credito cr
             JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
             JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
          WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
          ORDER BY c_1.nro_cuota DESC
         LIMIT 1), f.fecha_venta) AS fec_vencimiento,
    df.imp_percepcion,
    df.precio / 1.02 AS precio_percep_l,
    df.precio / 1.02 * df.cantidad AS total_percep_l,
    f.valor_venta AS valorventa_percep,
    f.imp_igv AS impigv_percep,
    f.imp_total AS total_percep,
    f.imp_percepcion AS impprecep_percep,
    split_part(vfv.nombre_razon::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
    (cpc.descripcion_corta::text || (fc.serie_facturacion::text || '-'::text)) || fc.numdoc_facturacion::text AS comprobante_origen,
    mtv.descripcion_larga AS motivo_notacredito,
        CASE cpc.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
    cp.codigosunat,
    cpc.codigosunat AS codigosunat_ref,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE
            CASE
                WHEN cpc.id_comprobante = 3 THEN 6
                ELSE 1
            END
        END AS tipo_docliente,
    "right"(fc.serie_facturacion::text, 3) AS serie_ref,
    fc.numdoc_facturacion AS numero_ref,
    to_char(f.fecha_venta::date::timestamp with time zone, 'yyyy-mm-dd'::text) AS fechaemision,
    f.glosa,
        CASE
            WHEN df.imp_igv > 0::numeric THEN df.precio / 1.18
            ELSE df.precio
        END AS valor_unitario,
        CASE
            WHEN df.imp_igv > 0::numeric THEN df.precio / 1.18
            ELSE df.precio
        END * df.cantidad AS valor_venta_item,
        CASE
            WHEN df.precio = 0::numeric THEN '02'::text
            ELSE '01'::text
        END AS tipoprecio,
        CASE
            WHEN df.imp_igv > 0::numeric THEN df.precio / 1.18 * df.cantidad * 0.18
            ELSE 0::numeric
        END AS imp_detiten,
    mtv.id_motivonotadebito as id_motivonotacredito,
    btrim(dep.departamento::text) AS departamento,
    btrim(prov.provincia::text) AS provincia,
    btrim(dis.distrito::text) AS distrito,
    dis.id_distrito AS ubigeosunat,
    f.digestvalue,
    f.signaturevalue,
    COALESCE(c.email, ''::character varying) AS email,
    suc.direccion AS direccion_suc,
    suc.telefono,
    suc.celular,
    emp.ruc,
    suc.codigo_establecimiento,
    suc.id_ubigeo,
    suc.nom_ubigeo AS ubigeo_sucursal
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND df.id_estado = 1
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unimedventa
     JOIN common.v_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp ON emp.id_empresa = suc.id_empresa
     JOIN ventas.tbl_facturacion fc ON fc.id_facturacion = f.id_facturacionref
     JOIN common.tbl_comprobante cpc ON cpc.id_comprobante = fc.id_comprobante
     JOIN common.tbl_motivonotadebito mtv ON mtv.id_motivonotadebito = f.id_motivonotadebito
     JOIN planillas.tbl_persona vfv ON vfv.id_persona::bpchar = fc.id_vendedor::bpchar
  WHERE df.cantidad > 0::numeric
  ORDER BY f.fecha_venta, f.id_comprobante, f.serie_facturacion, f.numdoc_facturacion, df.item;

ALTER TABLE VENTAS.TBL_PESAJE ADD COLUMN fecha timestamp default now();

CREATE OR REPLACE  VIEW VENTAS.V_CABCHECKIN
AS
SELECT (COALESCE(C.DESCRIPCION_CORTA,'') || '' || COALESCE(CP.SERIE,'') || '' || COALESCE(CP.NUMERO,'')) AS DOCUMENTO,
CP.FECHA,
case when trim(cp.id_cliente)='000' then cp.DNI_CLIENTE else  trim(P.DOC_PERSONA) end as DOC_PERSONA ,
CASE WHEN trim(cp.id_cliente)='000' then trim(cp.NOMAPE_CLIENTE) else  trim(P.NOMBRE_RAZON)  end AS CLIENTE,
M.SIMBOLO AS MONEDA,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
U.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
lpad(CP.SERIE,4,'0')::CHAR(4) AS SERIE,
COALESCE(CP.NUMERO,'0') as NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
COALESCE(cp.atencion_para,'') AS atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
COALESCE((CTC.DESCRIPCION_CORTA || '' ||cot.SERIE || '' || Cot.NUMERO),'S/C') as cotizacion,
(( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
      JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa=dp.id_cotizapreventa and p.id_sucursal=dp.id_sucursal
     WHERE p.id_cotizapreventa = cp.id_cotizapreventa and p.id_sucursal=cp.id_sucursal and dp.id_estado=1)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE f.id_cotizapreventa = cp.id_cotizapreventa and f.id_sucursalpreventa=cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente,
CP.SERIE::integer as serie_prev,
CP.NUMERO::integer  as numero_prev   ,
SUC.ID_EMPRESA,
COALESCE(cp.TIPDOCUMENTO,'') as TIPDOCUMENTO,
cp.id_comprobante,
cp.BLOQUEAR_ENCAJA,
--dir.direccion,
 CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN cp.direccion_cliente::text
            ELSE btrim(dir.direccion::text)
        END AS direccion,
COALESCE(cp.imp_percepcion,0)::numeric(20,4) as imp_percepcion,
COALESCE(cp.imp_neto,0)::numeric(20,4) as imp_neto,
COALESCE(ms.nro_mesa,'') as mesa,
COALESCE(CP.TELEFONO_CLI,'') as TELEFONO_CLI,
ms.id_mesa,
mc.id_mesacomanda,
cp.orden_compra
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
inner join hotel.tbl_habitacion hba on hba.id=cp.habitacion_id
LEFT JOIN restaurant.tbl_comandamesa MC ON MC.id_cotizapreventa=CP.id_cotizapreventa
LEFT JOIN restaurant.tbl_mesa ms on ms.id_mesa=mc.id_mesa
LEFT JOIN ventas.tbl_cotizacionpreventa COT ON (CP.id_cotizacion=COT.id_cotizapreventa)
LEFT JOIN COMMON.TBL_COMPROBANTE CTC ON(CTC.ID_COMPROBANTE=COT.ID_COMPROBANTE)
where cp.preventa=true
order by cp.serie::integer desc,cp.numero::integer desc;

create or replace view ventas.v_pesaje
as
SELECT
pesaje_id,
serie,
numero,
fecha,
c.nombre_razon as cliente,
peso_bruto,
peso_tara,
peso_neto
FROM VENTAS.TBL_PESAJE p
inner join planillas.tbl_persona c on c.id_persona=p.id_cliente

create or replace view ventas.v_ticket_pesaje
as
SELECT
pesaje_id,
cp.descripcion_larga as  nom_comprobante,
serie || '-' || numero as nro_documento,
fecha,
c.doc_persona as documento,
c.nombre_razon as cliente,
dc.direccion || ', ' || btrim(dep.departamento::text) || ',' || btrim(prov.provincia::text) || ', ' || btrim(dis.distrito::text) AS direccion,
peso_bruto,
peso_tara,
peso_neto,
s.direccion as direccion_suc,
s.telefono,
s.celular,
s.email  as email_sucursal,
p.placa,
p.marca,
p.color,
p.modelo,
emp.ruc,
emp.nombre as empresa,
p.observaciones
FROM VENTAS.TBL_PESAJE p
inner join planillas.tbl_persona c on c.id_persona=p.id_cliente
JOIN ventas.tbl_direccion dc ON dc.id_direccion = p.id_direccion AND dc.id_persona::text = p.id_cliente::text
JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
inner join common.tbl_sucursal s on s.id_sucursal=p.sucursal_id
inner join common.tbl_empresa emp on emp.id_empresa=s.id_empresa
inner join common.tbl_comprobante cp on cp.id_comprobante=p.id_comprobante

SELECT *FROM VENTAS.TBL_PESAJE
select *from common.tbl_empresa

select *from planillas.tbl_persona
select *from ventas.tbl_pesaje

CREATE OR REPLACE VIEW hotel.v_tipohabitacion
as
select
id,
codigo,
descripcion,
nro_personas,
nro_habitaciones,
id_estado
from hotel.tbl_tipohabitacion

select * from creditos.v_cuenta_corriente_clientes  where id_empresa=1 and fec_credito::date>='01/07/2020' and fec_credito::Date<='23/07/2020' and cliente ilike '%%' order by  id_cliente

create or replace view hotel.v_habitacion
as
select
	ha.id,
	ha.codigo as nro_habitacion,
	th.codigo as tipo_habitacion,
	ha.id_tipohabitacion ,
        COALESCE(x.estado,false) as ocupado	,
	sh.descripcion as situacionhabitacion,
	ha.id_situacionhabitacion,
	th.descripcion as nombre_tipo_habitacion,
	COALESCE(x.id_cotizapreventa,0) as id_cotizapreventa,
	COALESCE(x.id_sucursal,0) as id_sucursal
from hotel.tbl_habitacion ha
inner join hotel.tbl_tipohabitacion th on th.id=ha.id_tipohabitacion
inner join hotel.tbl_situacionhabitacion sh on sh.id=ha.id_situacionhabitacion
left join (select habitacion_id,z.id_cotizapreventa,id_sucursal ,case when id_estado=1 then true else false end as estado from ventas.tbl_cotizacionpreventa  z
where id_estado=1
) x on x.habitacion_id=ha.id

select *from hotel.tbl_tipohabitacion

select *from  ventas.tbl_cotizacionpreventa

select *from hotel.tbl_habitacion
select  *from hotel.tbl_situacionhabitacion

CREATE OR REPLACE VIEW creditos.v_detallepagoproveedores AS
 SELECT (c.serie::text || '-'::text) || c.nro_doc_compra::text AS comprobante,
    c.fec_documento AS fecha_compra,
    prov.doc_persona AS doc_proveedor,
    prov.nombre_razon AS proveedor,
    mc.fecha_mov,
        CASE
            WHEN dpp.id_moneda = 1 THEN dpp.imp_pago
            ELSE 0::numeric
        END AS imp_soles,
        CASE
            WHEN dpp.id_moneda = 2 THEN dpp.imp_pago
            ELSE 0::numeric
        END AS imp_dolares,
    (mc.serie::text || '-'::text) || mc.numero::text AS numero_movimiento,
    prov.id_persona AS id_proveedor
   FROM compras.tbl_compra c
     JOIN planillas.tbl_persona prov ON prov.id_persona::text = c.id_proveedor::text
     JOIN creditos.tbl_creditoscompra cp ON c.id__compra = cp.id__compra AND c.id_sucursalcompra = cp.id_sucursalcompra
     JOIN creditos.tbl_credito cr ON cr.id_credito = cp.id_credito AND cr.id_sucursal_credito = cp.id_sucursal_credito
     JOIN creditos.tbl_detpagocuota dpc ON cr.id_credito = dpc.id_credito AND cr.id_sucursal_credito = dpc.id_sucursal_credito
     JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dpc.id_movimcaja AND mc.id_sucursal = dpc.id_sucursal
     JOIN caja.tbl_detmovpago dpp ON mc.id_movimcaja = dpp.id_movimcaja AND mc.id_sucursal = dpp.id_sucursal
     JOIN common.tbl_moneda m ON m.id_moneda = dpp.id_moneda
  WHERE mc.id_estado = 1;

create or replace view ventas.v_consolidadoventasmensual
as
select
	f.serie_facturacion,
	min(f.numdoc_facturacion::bigint) as inicio,
	max(f.numdoc_facturacion::bigint) as fin,
	sum(f.imp_igv) as imp_igv,
	sum(f.valor_venta) as imp_venta,
	sum(f.imp_total) as imp_total ,
	date_part('year',f.fecha_venta) as anio,
	date_part('month',f.fecha_venta) as mes,
	emp.nombre as empresa,
	emp.ruc as ruc_empresa,
	s.direccion as dir_sucursal
from ventas.tbl_facturacion f
 JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
 JOIN common.tbl_empresa emp on emp.id_empresa=s.id_empresa
where date_part('year',fecha_venta)=2020 and date_part('month',fecha_venta)=1
group by serie_facturacion,emp.nombre ,
	emp.ruc ,
	s.direccion,date_part('year',f.fecha_venta) ,date_part('month',f.fecha_venta)

create or replace view compras.v_imprimircompras
as
select
c.serie,
c.nro_doc_compra as numero,
c.fec_documento as fecha_compra,
prov.nombre_razon as proveedor,
prov.doc_persona as documento,
dir.direccion,
tv.descripcion_larga as tipocompra,
mon.simbolo as moneda,
vend.nombre_razon as comprador,
case c.id_comprobante
	when 3 then 'FACTURA DE COMPRA'
	when 2 then 'BOLETA DE COMPRA'
	when 27 then 'ORDEN DE COMPRA'
end as nom_comprobante,
suc.direccion as direccion_suc,
suc.email as email_sucursal,
suc.telefono,
suc.celular,
c.referencia_guia,
dc.item,
p.codigo as cod_producto,
p.descripcion_larga as producto,
dc.cantidad,
und.desc_corta as unidad,
dc.precio,
dc.imp_incluido as tot_detalle,
dc.imp_dscto as impdscto_detalle,
emp.ruc,
emp.nombre as empresa,
c.imp_igv,
c.imp_venta,
c.imp_total,
c.imp_exonerado,
c.imp_dcsto,
fu_numero_letras(c.imp_total,c.id_moneda) as tot_letras,
c.glosa,
c.id__compra::text || c.id_sucursalcompra as id_compra
from compras.tbl_compra c
inner join compras.tbl_detcompra dc on c.id__compra=dc.id__compra and c.id_sucursalcompra=dc.id_sucursalcompra
inner join ventas.tbl_direccion dir on dir.id_direccion=c.id_dirproveedor and dir.id_persona=c.id_proveedor
inner join planillas.tbl_persona prov on prov.id_persona=dir.id_persona
inner join common.tbl_moneda mon on mon.id_moneda=c.id_moneda
inner join common.tbl_tipoventa tv on tv.id_tipoventa=c.id_tipocompra
inner join common.tbl_comprobante ct on ct.id_comprobante=c.id_comprobante
inner join almacen.tbl_detproducto dp on dp.id_producto=dc.id_producto and dc.id_unidadventa=dp.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_unidad und on und.id_unidadventa=dp.id_unidadventa
inner join common.tbl_sucursal suc on suc.id_sucursal=c.id_sucursalcompra
inner join common.tbl_empresa as emp on emp.id_empresa=suc.id_empresa
inner join planillas.tbl_persona vend on vend.id_persona=c.id_comprador
where dc.id_estado=1

select *from compras.tbl_detcompra

select *from compras.tbl_compra

select *from common.tbl_empresa

 select *from almacen.tbl_unidad

CREATE OR REPLACE VIEW common.v_tiporeporte
as
select
id,
nombre,
id_usuario,
id_estado
from common.tbl_tiporeporte

select *from ventas.fn_list_ventas_agrupadas(1,'','');

select * from ventas.fn_list_ventas_agrupadas(0,'01/01/2019','01/01/2020') where  id_producto::integer in ('2901','2766','495','470','477','4513')

create or replace function ventas.fn_list_ventas_agrupadas(
	op integer,
	f1 text,
	f2 text
)
returns table(
	id_producto varchar(30),
	codigo varchar(30),
	producto varchar(200),
	familia varchar(100),
	cantidad numeric(20,4),
	precio numeric(20,4),
	importe numeric(20,4),
	unidad varchar(60),
	val_unidad numeric(20,4),
	vendedor varchar(500),
	doc_vendedor varchar(12),
	id_familia char(5)
) as $$
declare
begin
return query
	select
	trim(p.id_producto)::varchar(30) as id_producto,
	trim(p.codigo)::varchar(30) as codigo,
	p.descripcion_larga as producto,
	fa.descripcion_larga as familia,
	sum(df.cantidad) as cantidad,
	0.00::numeric(20,4) as precio,
	sum(df.importe) as Importe,
	und.desc_larga as unidad,
	dp.val_unidad,
	vend.nombre_razon as vendedor,
	vend.doc_persona,
	p.id_familia
	from ventas.tbl_facturacion f
	inner join ventas.tbl_detfacturacion df on f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal and df.id_estado=1
	inner join planillas.tbl_persona vend on vend.id_persona=f.id_vendedor
	inner join almacen.tbl_detproducto dp on dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa
	inner join almacen.tbl_unidad und on und.id_unidadventa=df.id_unidadventa
	inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
	inner join almacen.tbl_familia fa on fa.id_familia=p.id_familia
group by p.codigo,p.id_producto,p.descripcion_larga,fa.descripcion_larga,und.desc_larga,dp.val_unidad,vend.doc_persona,vend.nombre_razon,p.id_familia
order by   vend.doc_persona,p.id_familia;
end;$$
language 'plpgsql';

select *from almacen.tbl_unidad
CREATE OR REPLACE VIEW almacen.v_ProductosReporte
as
select id,p.id_producto,p.descripcion_larga as producto,r.id_tiporeporte,r.id_estado from almacen.tbl_ProductosReporte r
inner join almacen.tbl_producto p on r.id_producto=p.id_producto
where r.id_estado=1

select *from almacen.v_precios

create or replace view ventas.v_ventas
as
select
	f.fecha_venta,
	x.fecha_vencimiento,
	x.ultipo_pago,
	cp.codigosunat as codigo_sunat,
	f.serie_facturacion,
	f.numdoc_facturacion,
	vend.doc_persona as doc_vendedor,
	vend.nombre_razon as vendedor,
	cli.doc_persona as doc_cliente,
	cli.nombre_razon || (CASE WHEN f.id_estado<>1 then '(****ANULADO***)' else '' end )  as cliente,
	dir.direccion,
	(trim(dpc.departamento) ||'-'||trim(pc.provincia) ||'-' || dc.distrito) as ubigeo,
	z.zona,
	sc.sector as ruta,
	CASE WHEN f.id_estado=1 then f.imp_igv else 0.00 end as imp_igv,
	CASE WHEN f.id_estado=1 then f.valor_venta else 0.00 end as valor_venta,
	CASE WHEN f.id_estado=1 then f.imp_total else 0.00 end as imp_total,
	CASE WHEN f.id_estado=1 then f.imp_dscto else 0.00 end as imp_dscto,
	CASE WHEN f.id_estado=1 then f.imp_neto else 0.00 end imp_neto,
	CASE WHEN f.id_estado=1 then COALESCE(x.credito,0)else 0.00 end as imp_credito,
	CASE WHEN f.id_estado=1 then COALESCE(x.imp_nc,0) else 0.00 end as imp_nc,
	CASE WHEN f.id_estado=1 then COALESCE(x.pagos,f.imp_total) else 0.00 end as imp_pagos,
	CASE WHEN f.id_estado=1 then COALESCE(x.saldo,0) else 0.00 end as imp_saldo,
	m.simbolo as moneda ,
	cp.descripcion_larga as tipo_comprobante,
	tv.descripcion_larga as tipo_venta,
	date_part('day',f.fecha_venta)::integer as dia,
	date_part('month',f.fecha_venta)::integer as mes,
	date_part('year',f.fecha_venta)::integer as anio,
	COALESCE(x.dias,0) as dias_credito,
	 COALESCE((select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  telefono
		from COMMON.tbl_telefono  tl
		where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t),'-') as tlf_cliente,
	'-' as garante,
	suc.id_empresa
from ventas.tbl_facturacion f
inner join common.tbl_tipoventa tv on tv.id_tipoventa=f.id_tipoventa
INNER JOIN COMMON.TBL_COMPROBANTE CP on cp.id_comprobante=f.id_comprobante
inner join common.tbl_moneda m on m.id_moneda=f.id_moneda
inner join planillas.tbl_persona vend on vend.id_persona=f.id_vendedor
inner join ventas.tbl_direccion dir on dir.id_persona=f.id_cliente and dir.id_direccion=f.id_direccion
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona
inner join ventas.tbl_sector sc on (sc.id_sector=dir.id_sector)
inner join ventas.tbl_zona z on (z.id_zona=sc.id_zona)
inner join common.tbl_distrito dc on (dc.id_distrito=z.id_distrito)
inner join common.tbl_provincia pc on (pc.id_provincia=dc.id_provincia)
inner join common.tbl_dpto dpc on (dpc.id_dpto=pc.id_dpto)
INNER JOIN common.tbl_sucursal suc on suc.id_sucursal=f.id_sucursal
LEFT JOIN (
	SELECT
	    to_char(fac.fecha_venta,'dd/MM/yyyy') AS fec_credito,
	    to_char(ven.fec_vencimiento::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_vencimiento,
	    COALESCE(z.imp_credito, 0::numeric) AS credito,
	    COALESCE(nc.imp_nc,0.00) as imp_nc,
	    COALESCE(pcr.imp_pago, 0::numeric) AS pagos,
	    (COALESCE(z.imp_credito, 0::numeric)-COALESCE(nc.imp_nc,0.00) -COALESCE(pcr.imp_pago, 0::numeric)) as saldo,
	    fac.imp_neto + COALESCE(( SELECT sum(c.imp_interes) AS sum
		   FROM creditos.tbl_cuota c
		  WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
	    now()::Date-fac.fecha_venta::date as dias ,
	pagf.fecha_mov as ultipo_pago,
	fac.id_facturacion,
	fac.id_sucursal
   FROM ventas.tbl_facturacion fac
     JOIN creditos.tbl_ventacredito vc ON fac.id_sucursal = vc.id_sucursal AND vc.id_facturacion = fac.id_facturacion AND fac.id_tipoventa = 2 AND vc.id_estado = 1
     JOIN creditos.tbl_credito cred ON cred.id_credito = vc.id_credito AND cred.id_sucursal_credito = vc.id_sucursal_credito
     INNER JOIN ( SELECT tbl_cuota.id_credito,
            tbl_cuota.id_sucursal_credito,
            max(tbl_cuota.fec_vencimiento::date) AS fec_vencimiento
           FROM creditos.tbl_cuota
          GROUP BY tbl_cuota.id_credito, tbl_cuota.id_sucursal_credito
     ) ven ON ven.id_credito = cred.id_credito AND ven.id_sucursal_credito = cred.id_sucursal_credito
     INNER JOIN (
		SELECT c.id_credito,c.id_sucursal_credito as id_sucursal, sum(c.imp_cuota) AS imp_credito
		FROM creditos.tbl_cuota c
		group by c.id_credito,c.id_sucursal_credito
	) Z on z.id_credito=cred.id_credito and z.id_sucursal=cred.id_sucursal_credito
    LEFT JOIN (
	SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito
	) pcr ON pcr.id_credito = cred.id_credito AND pcr.id_sucursal_credito = cred.id_sucursal_credito
   LEFT JOIN (
	select sum(COALESCE(NC.imp_dscto,0)) as imp_nc,id_credito,id_sucursal_cred as id_sucursal  from creditos.tbl_cuota_notacredito NC
	where nc.id_estado=1
	group by id_credito,id_sucursal_cred
	) nc ON nc.id_credito = cred.id_credito AND nc.id_sucursal = cred.id_sucursal_credito
LEFT JOIN  (SELECT max(mc.fecha_mov) as fecha_mov,dp.id_credito,dp.id_sucursal_credito
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
	     where mc.id_estado=1 and dp.id_estado=1
	     group by dp.id_credito,dp.id_sucursal_credito
         -- ORDER BY mc.fecha_mov DESC
         ) pagf on pagf.id_credito = cred.id_credito AND pagf.id_sucursal_credito = cred.id_sucursal_credito
  WHERE fac.id_estado = 1
) x on X.id_facturacion=f.id_facturacion and x.id_sucursal=f.id_sucursal
order by
date_part('year',f.fecha_venta)::integer asc,
date_part('day',f.fecha_venta)::integer asc,
date_part('month',f.fecha_venta)::integer asc

CREATE OR REPLACE VIEW ventas.v_registroventas
AS
 SELECT f.fecha_venta::date AS fecha_emision,
        CASE f.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    lpad(f.serie_facturacion::text, 4, '0'::text) AS nro_serie,
    lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_comprobante,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS doc_cliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END ||
        CASE
            WHEN f.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN f.id_operacion = 2 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                    ELSE f.imp_total
                END
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                    ELSE f.valor_venta
                END
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                    ELSE f.imp_igv
                END
            END
            ELSE 0::numeric
        END AS igv,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                ELSE f.imp_total
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS total,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    (dc.direccion || '- '::text) || dis.distrito::text AS direccion,
    (((cp.descripcion_corta::text || '/'::text) || lpad(f.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                ELSE f.valor_venta
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS valor_venta,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                ELSE f.imp_igv
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    f.id_facturacion::text || f.id_sucursal::text AS codigo_venta,
    m.id_moneda,
    f.id_operacion,
    f.id_tipoventa,
    f.id_facturacion,
    cp.id_comprobante AS idtipcomprobante,
    f.id_estado,
    s.id_empresa,
        CASE f.id_estado
            WHEN 1 THEN f.imp_percepcion
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_percepcion,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN (f.imp_igv + f.imp_neto) * '-1'::integer::numeric
                ELSE f.imp_neto
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_neto,
    COALESCE((((cpnc.descripcion_corta::text || '/'::text) || lpad(nc.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS documento_referencia,
    to_char(f.fecha_venta, 'dd/yy/yyyy'::text) AS fecha_grid,
    COALESCE(lpad(nc.serie_facturacion::text, 4, '0'::text), ''::text) AS serie_ref,
    COALESCE(lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS numero_ref,
    COALESCE(
        CASE nc.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END, ''::text) AS tipocomprobante_ref,
    nc.fecha_venta::date AS fecha_ref,
    length(btrim(c.doc_persona::text)) AS len,
    f.tipo_cambio,
    f.glosa,
COALESCE(ecp.nombre,'') as estado_comprobante,
COALESCE(ect.nombre,'') as estado_contribuyente,
COALESCE(cct.nombre,'') as condicion_contribuyente
   FROM ventas.tbl_facturacion f
	JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
	JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
	JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
	JOIN common.tbl_estado e ON e.id_estado = f.id_estado
	JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
	JOIN ventas.tbl_sector sec ON sec.id_sector = dc.id_sector
	JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
	JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
	JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
	JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
	left join common.tbl_estadocomprobante ecp on ecp.codigo=f.estado_comprobante
	left join common.tbl_estadocontribuyente ect on ect.codigo=f.estado_contribuyente
	left join common.tbl_condicioncontribuyente cct on cct.codigo=f.condicion_contribuyente
     LEFT JOIN ventas.tbl_facturacion nc ON nc.id_facturacion = f.id_facturacionref AND f.id_sucursalref = nc.id_sucursal
     LEFT JOIN common.tbl_comprobante cpnc ON cpnc.id_comprobante = nc.id_comprobante
  WHERE f.id_comprobante <> 32
  ORDER BY f.id_comprobante asc, ("right"(f.serie_facturacion::text, 2)) asc, (f.numdoc_facturacion::integer) asc;

create or replace view ventas.v_premios_puntos
as
select
	to_char(f.fecha_venta,'dd/MM/yyyy') as Fecha,
	cp.descripcion_corta as tipo,
	f.serie_facturacion || '-' || f.numdoc_facturacion as Numero,
	cli.nombre_razon as cliente,
	f.imp_total,
	pto.puntos,
	0.00 as puntos_canjeados,
	pto.puntos as saldo_puntos,
	f.id_cliente,
	f.id_facturacion,
	f.id_sucursal
 from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
inner join ventas.tbl_puntos pto on f.id_facturacion=pto.id_facturacion and f.id_sucursal=pto.id_sucursal
UNION ALL

SELECT
to_char(pto.fecha,'dd/MM/yyyy') as Fecha,
cp.descripcion_corta as tipo,
pto.serie|| '-' || pto.numero as Numero,
pre.descripcion_premio as cliente,
0.00 as imp_total,
0.00 as puntos,
pto.puntos_canjeados as puntos_canjeados,
0.00 as saldo_puntos,
pto.id_cliente,
pto.id as id,
1 as id_sucursal
FROM VENTAS.TBL_CANJEPUNTOS pto
inner join common.tbl_comprobante cp on cp.id_comprobante=pto.id_comprobante
inner join planillas.tbl_persona cli on cli.id_persona=pto.id_cliente
inner join VENTAS.TBL_PREMIO pre on pre.id=pto.premio_id

SELECT *FROM VENTAS.TBL_CANJEPUNTOS
select *from ventas.tbl_puntos
select *from planillas.tbl_persona
select *from common.tbl_comprobante

select *from ventas.tbl_facturacion  limit 10

create or replace view ventas.v_premios
as
select id,pre.descripcion_premio,pre.cantidad,pre.precio,pre.puntos,pre.id_producto,pre.id_unidadventa,pre.genera_cupon,pre.descuenta_stock,pre.id_estado,pre.id_usuario from VENTAS.TBL_PREMIO pre
inner join almacen.tbl_producto prod on prod.id_producto=pre.id_producto
inner join common.tbl_estado es on es.id_estado=pre.id_estado;

CREATE OR REPLACE VIEW ventas.v_registroventas_detallada
AS
 SELECT f.fecha_venta::date AS fecha_emision,
        CASE f.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    lpad(f.serie_facturacion::text, 4, '0'::text) AS nro_serie,
    lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_comprobante,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS doc_cliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END ||
        CASE
            WHEN f.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN f.id_operacion = 2 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                    ELSE f.imp_total
                END
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                    ELSE f.valor_venta
                END
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                    ELSE f.imp_igv
                END
            END
            ELSE 0::numeric
        END AS igv,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                ELSE f.imp_total
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS total,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    (dc.direccion || '- '::text) || dis.distrito::text AS direccion,
    (((cp.descripcion_corta::text || '/'::text) || lpad(f.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                ELSE f.valor_venta
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS valor_venta,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                ELSE f.imp_igv
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    f.id_facturacion::text || f.id_sucursal::text AS codigo_venta,
    m.id_moneda,
    f.id_operacion,
    f.id_tipoventa,
    f.id_facturacion,
    cp.id_comprobante AS idtipcomprobante,
    f.id_estado,
    s.id_empresa,
        CASE f.id_estado
            WHEN 1 THEN f.imp_percepcion
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_percepcion,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN (f.imp_igv + f.imp_neto) * '-1'::integer::numeric
                ELSE f.imp_neto
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_neto,
    COALESCE((((cpnc.descripcion_corta::text || '/'::text) || lpad(nc.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS documento_referencia,
    to_char(f.fecha_venta, 'dd/yy/yyyy'::text) AS fecha_grid,
    COALESCE(lpad(nc.serie_facturacion::text, 4, '0'::text), ''::text) AS serie_ref,
    COALESCE(lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS numero_ref,
    COALESCE(
        CASE nc.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END, ''::text) AS tipocomprobante_ref,
    nc.fecha_venta::date AS fecha_ref,
    length(btrim(c.doc_persona::text)) AS len,
    f.tipo_cambio,
    f.glosa,
    COALESCE(f.orden_compra,'') as orden_compra,
    COALESCE(x.formapago,'') as formapago,
    COALESCE(x.banco,'') as  banco,
    COALESCE(x.nro_operacion,'') as  nro_operacion,
    COALESCE((select replace(replace(t.producto::text,'{"producto":"',''),'"},','],[') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select p.descripcion_larga as producto
		from almacen.tbl_producto p
		inner join ventas.tbl_detfacturacion df on p.id_producto=df.id_producto
		where df.id_estado=1 and df.id_Facturacion=f.id_facturacion and df.id_sucursal=f.id_sucursal
		order by df.item
	      ) d
	    ) as producto
	) t),'') as producto
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_estado e ON e.id_estado = f.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dc.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     LEFT JOIN ventas.tbl_facturacion nc ON nc.id_facturacion = f.id_facturacionref AND f.id_sucursalref = nc.id_sucursal
     LEFT JOIN common.tbl_comprobante cpnc ON cpnc.id_comprobante = nc.id_comprobante
     LEFT JOIN (select m.id_facturacion,m.id_sucursal,m.imp_movimiento,fp.descripcion as formapago,cb.nombre_ban as banco,dp.nro_operacion  from caja.tbl_movcaja m
		inner join caja.tbl_detmovpago dp on m.id_movimcaja=dp.id_movimcaja
		inner join common.tbl_formapago fp on dp.id_formapago=fp.id_formapago
		inner join common.tbl_banco cb on cb.id_banco=dp.id_banco
		) X on x.id_Facturacion=f.id_facturacion and x.id_sucursal=f.id_sucursal
  WHERE f.id_comprobante <> 32
  ORDER BY f.id_comprobante, ("right"(f.serie_facturacion::text, 3)), (f.numdoc_facturacion::integer);

select *from caja.tbl_detmovpago where id_banco<>0

create or replace view ventas.v_facturacionanticipo
as
select
	to_char(f.fecha_venta,'dd/MM/yyyy') as fecha,
	f.serie_facturacion ||'-'||numdoc_facturacion as documento ,
	cli.nombre_razon as cliente,
	m.simbolo as moneda,
	f.imp_total,
	an.id_anticipo,
	an.id_sucursalanticipo,
	f.id_cliente,
	an.id,
	2 as op,
        an.id_estado,
        an.id_facturacion,
	an.id_sucursal,
	f.serie_facturacion as serie,
	f.numdoc_facturacion as numero,
	to_char(f.fecha_venta,'yyyy-MM-dd') PaidDate,
	an.PaidAmount,
	cp.codigosunat as tipo_comprobante,
	cli.doc_persona documento_persona,
	ti.codigo_sunat as tipo_identidad
from
ventas.tbl_facturacionanticipo an
inner join ventas.tbl_facturacion f on  f.id_facturacion =an.id_anticipo and f.id_sucursal=an.id_sucursalanticipo
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
inner join planillas.tbl_tipdocidentidad ti on ti.id_tipdocidentidad=cli.id_tipdocidentidad
inner join common.tbl_moneda m on m.id_moneda=f.id_moneda

select *from common.tbl_comprobante
select *from ventas.tbl_facturacion

create or replace view ventas.v_anticipos_facturacion
as
SELECT
	to_char(f.fecha_venta,'dd/MM/yyyy') as fecha,
	f.serie_facturacion ||'-'||numdoc_facturacion as documento ,
	cli.nombre_razon as cliente,
	m.simbolo as moneda,
	f.imp_total,
	f.id_facturacion,
	f.id_sucursal,
	f.id_cliente
FROM ventas.tbl_facturacion f
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
inner join common.tbl_moneda m on m.id_moneda=f.id_moneda
where f.anticipo is true

select *from common.tbl_moneda

create or replace  view ventas.v_ventas_x_vendedor_resumido
as
select
    f.id_sucursal,
    tv.descripcion_larga as tipoventa, --select *from common.tbl_tipoventa
    cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    dpto.departamento,
    prov.provincia,
    dist.distrito,
    Z.zona,
    sec.sector,
    dir.referencia,
    vend.doc_persona as doc_vendedor,
    vend.nombre_razon AS vendedor,
    cp.descripcion_corta AS tipo_doc,
    f.serie_facturacion AS serie,
    f.numdoc_facturacion AS numero,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_giro,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_vencimiento,
    mn.simbolo AS moneda,
    f.imp_neto AS imp_venta,
    0.00 AS imp_inicial,
    f.imp_total AS imp_credito,
    COALESCE(f.imp_total, 0::numeric) AS imp_pago,
    0.00  AS imp_saldo,
    f.id_facturacion::text || f.id_sucursal::text AS id_facturacion,
    f.id_cliente,
    f.id_vendedor,
    f.id_estado,
    suc.id_empresa,
    0.00 AS imp_dscto,
     f.fecha_venta as ultimo_pago,
	COALESCE((select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  telefono
		from COMMON.tbl_telefono  tl
		where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t),'') as tlf_cliente

from ventas.tbl_facturacion f
JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
inner join common.tbl_tipoventa tv on tv.id_tipoventa=f.id_tipoventa
JOIN common.tbl_moneda mn ON mn.id_moneda = f.id_moneda
JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
inner join ventas.tbl_direccion dir on dir.id_persona=f.id_cliente and dir.id_direccion=f.id_direccion
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona
JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
JOIN common.tbl_distrito dist ON dist.id_distrito::text = z.id_distrito::text
JOIN common.tbl_provincia prov ON prov.id_provincia::text = dist.id_provincia::text
JOIN common.tbl_dpto dpto ON dpto.id_dpto::text = prov.id_dpto::text
JOIN PLANILLAS.TBL_PERSONA vend ON vend.id_persona=f.id_vendedor
where f.id_tipoventa=1
union
select
    f.id_sucursal,
    tv.descripcion_larga as tipoventa, --select *from common.tbl_tipoventa
    cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    dpto.departamento,
    prov.provincia,
    dist.distrito,
    z.zona,
    sec.sector,
    dir.referencia,
    vend.doc_persona as doc_vendedor,
    vend.nombre_razon AS vendedor,
    cp.descripcion_corta AS tipo_doc,
    f.serie_facturacion AS serie,
    f.numdoc_facturacion AS numero,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_giro,
    to_char(ven.fec_vencimiento::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_vencimiento,
    mn.simbolo AS moneda,
    f.imp_neto AS imp_venta,
    COALESCE(inicial.imp_inicial, 0::numeric) AS imp_inicial,
    cr.imp_credito - COALESCE(inicial.imp_inicial, 0::numeric) AS imp_credito,
    COALESCE(pcr.imp_pago, 0::numeric) AS imp_pago,
        CASE
            WHEN (COALESCE(f.imp_total, 0::numeric) - COALESCE(pagc.imp_pago, 0::numeric))::numeric(20,4) > 0::numeric THEN (COALESCE(f.imp_total, 0::numeric)  - COALESCE(pagc.imp_pago, 0::numeric))::numeric(20,4)
            ELSE 0::numeric
        END - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE  cr.id_credito = nc.id_credito AND cr.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_saldo,
    f.id_facturacion::text || f.id_sucursal::text AS id_facturacion,
    f.id_cliente,
    f.id_vendedor,
    f.id_estado,
    suc.id_empresa,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE   cr.id_credito = nc.id_credito AND cr.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_dscto,
     pagf.fecha_mov as ultimo_pago,
	COALESCE((select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  telefono
		from COMMON.tbl_telefono  tl
		where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t),'') as tlf_cliente

from ventas.tbl_facturacion f
JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
inner join common.tbl_tipoventa tv on tv.id_tipoventa=f.id_tipoventa
JOIN common.tbl_moneda mn ON mn.id_moneda = f.id_moneda
JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
inner join ventas.tbl_direccion dir on dir.id_persona=f.id_cliente and dir.id_direccion=f.id_direccion
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona
JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
JOIN common.tbl_distrito dist ON dist.id_distrito::text = z.id_distrito::text
JOIN common.tbl_provincia prov ON prov.id_provincia::text = dist.id_provincia::text
JOIN common.tbl_dpto dpto ON dpto.id_dpto::text = prov.id_dpto::text
inner join creditos.tbl_ventacredito vc on f.id_facturacion=vc.id_facturacion and f.id_sucursal=vc.id_sucursal and vc.id_estado=1
inner join creditos.tbl_credito cr on cr.id_credito=vc.id_credito and cr.id_sucursal_credito=vc.id_sucursal_credito
JOIN PLANILLAS.TBL_PERSONA vend ON vend.id_persona=f.id_vendedor
LEFT JOIN ( SELECT tbl_cuota.id_credito,
            tbl_cuota.id_sucursal_credito,
            max(tbl_cuota.fec_vencimiento::date) AS fec_vencimiento
           FROM creditos.tbl_cuota
          GROUP BY tbl_cuota.id_credito, tbl_cuota.id_sucursal_credito) ven ON ven.id_credito = cr.id_credito AND ven.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            ccc.id_cuotas,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito, ccc.id_cuotas) pcr ON pcr.id_credito = cr.id_credito AND pcr.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(mov.imp_movimiento) AS imp_inicial
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota = 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito) inicial ON inicial.id_credito = cr.id_credito AND inicial.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_cuotas,
            ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito, ccc.id_cuotas
   ) pagc ON pagc.id_credito = cr.id_credito AND pagc.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN  (SELECT max(mc.fecha_mov) as fecha_mov,dp.id_credito,dp.id_sucursal_credito,dp.id_cuotas
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
	     where mc.id_estado=1
	     group by dp.id_credito,dp.id_sucursal_credito,dp.id_cuotas
         -- ORDER BY mc.fecha_mov DESC
         ) pagf on pagf.id_credito = cr.id_credito AND pagf.id_sucursal_credito = cr.id_sucursal_credito

where f.id_tipoventa<>1 and f.id_estado=1

CREATE OR REPLACE VIEW planillas.v_clientes
as
SELECT
	p.doc_persona,
	P.nombre_razon as cliente,
	dir.direccion,
	btrim(dep.departamento::text) AS departamento,
	btrim(prov.provincia::text) AS provincia,
	btrim(dis.distrito::text) AS distrito,
	trim(sec.sector) as sector,
	trim(z.zona) as zona
 FROM planillas.tbl_persona p
inner join ventas.tbl_direccion dir on p.id_persona=dir.id_persona
JOIN ventas.tbl_sector sec ON dir.id_sector = sec.id_sector
JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
JOIN common.tbl_pais pais on pais.id_pais=dep.id_pais

select * from ALMACEN.FN_PRODUCTOS_ALMACEN(1,'1',1)

CREATE OR REPLACE VIEW ventas.v__solicitudcomprobante
as
select
	s.id,
	f.serie_facturacion || '-'||f.numdoc_facturacion as numero,
	to_char(f.fecha_venta,'dd/MM/yyyy') as fecha,
	p.nombre_razon as cliente,
	f.imp_total,
	case when s.anulacion is true then 'ANULACION' ELSE 'MODIFICACION' END solicitud,
	COALESCE(s.justificacion,'') as justificacion,
	s.denegado,
	COALESCE(s.clave,'') as clave
from ventas.tbl_solicitudcomprobante s
inner join ventas.tbl_facturacion f on f.id_facturacion=s.id_facturacion and f.id_sucursal=s.id_sucursal
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join planillas.tbl_persona p on p.id_persona=f.id_cliente;

CREATE OR REPLACE VIEW caja.v_cajas
AS
 SELECT est.id_cajabanco,
    est.descripcion,
    est.venta_contado,
    est.cobranzas,
    est.pagos,
    est.venta_credito,
    est.caja_banco,
    em.id_moneda,
    em.descripcion_larga AS moneda,
    s.id_sucursal,
    s.nombre AS sucursal,
    e.id_estado,
    e.des_estado AS estado,
    ep.id_empresa,
    ep.nombre AS empresa,
    est.correo_liq
   FROM caja.tbl_cajabanco est
     JOIN common.tbl_estado e ON e.id_estado = est.id_estado
     JOIN common.tbl_sucursal s ON s.id_sucursal = est.id_sucursal
     JOIN common.tbl_empresa ep ON ep.id_empresa = s.id_empresa
     JOIN common.tbl_moneda em ON em.id_moneda = est.id_moneda;

select *from ventas.v_vendedores

create or replace view ventas.v_metasventa
as
select
	m.id,
	pm.descripcion as anio,
	mm.descripcion mes,
	m.proveedor,
	m.familia,
	m.item,
	mm.id_mes,
	m.id_anio,
	COALESCE(m.id_estado,1) as id_estado
from ventas.tbl_metaventa M
inner join contabilidad.tbl_procesocontable pm on pm.id_proceso=m.id_anio
inner join common.tbl_mes mm on mm.id_mes=m.id_mes

create or replace view ventas.v_metafamilia
as
select
	f.id_familia,
	f.descripcion_larga as familia,
	mf.meta_porcent,
	COALESCE(x.imp_venta,0) as imp_venta ,
	mf.id,
	mf.id_metaventa
from ventas.tbl_metafamilia mf
inner join ventas.tbl_metaventa m on m.id=mf.id_metaventa
inner join contabilidad.tbl_procesocontable pc on pc.id_proceso=m.id_anio
inner join almacen.tbl_familia f on f.id_familia=mf.id_familia
left join (
	select p.id_familia, sum(df.importe)as imp_venta,date_part('year',f.fecha_venta) as año,date_part('month',f.fecha_venta) as id_mes from ventas.tbl_facturacion f
	inner join ventas.tbl_detfacturacion df on f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal
	inner join almacen.tbl_producto p on p.id_producto=df.id_producto
	where f.id_estado=1 and df.id_estado=1
	group by p.id_familia,date_part('year',f.fecha_venta),date_part('month',f.fecha_venta)
) x on x.id_familia=f.id_familia and x.año=pc.descripcion::integer and x.id_mes=m.id_mes

create or replace view ventas.v_metavendedor
as
select
mv.id_vendedor,
p.nombre_razon as vendedor,
mv.imp_meta,
COALESCE(x.imp_venta,0) as imp_venta ,
mv.id,
mv.id_metaventa
from ventas.tbl_metavendedor mv
inner join ventas.tbl_metaventa m on m.id=mv.id_metaventa
inner join contabilidad.tbl_procesocontable pc on pc.id_proceso=m.id_anio
inner join planillas.tbl_persona p on p.id_persona=mv.id_vendedor
left join (
	select ven.id_persona as id_vendedor, sum(f.imp_total)as imp_venta,date_part('year',f.fecha_venta) as año,
	date_part('month',f.fecha_venta) as id_mes from ventas.tbl_facturacion f
	inner join planillas.tbl_persona ven on ven.id_persona=f.id_vendedor
	where f.id_estado=1 and f.id_estado=1
	group by ven.id_persona,date_part('year',f.fecha_venta),date_part('month',f.fecha_venta)
) x on x.id_vendedor=mv.id_vendedor and x.año=pc.descripcion::integer and x.id_mes=m.id_mes

CREATE OR REPLACE VIEW ventas.v_listar_vericacion_cobransas
AS
 SELECT mov.id_movimcaja,
    cp.descripcion_corta AS abreviatura,
    mov.serie,
    mov.numero,
    mov.fecha_mov,
    (((cpf.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS documento,
    cli.doc_persona AS dni_ruc,
    COALESCE(cli.id_persona, '000'::bpchar::character varying) AS cod_cliente,
    cli.nombre_razon AS cliente,
    m.simbolo AS moneda,
    f.imp_total,
    mov.imp_movimiento,
    vend.nombre_razon AS vendedor,
    COALESCE(uss.camp2, ''::text) AS usuario,
    mov.id_caja_destino AS id_caja,
    mov.id_estado,
    tv.descripcion_larga::text AS op_estado,
    '-99'::integer AS nrocuota,
    tv.id_tipoventa::text AS idtipventa,
    mov.id_sucursal,
    COALESCE(usa.camp2, '-'::text) AS usuario_anula,
    COALESCE(usauto.camp2, '-'::text) AS usuario_autoriza,
    replace((select replace(replace(t.telefono::text,'{"nro_operacion":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  ban.nombre_ban || '->'|| nro_operacion	 AS nro_operacion
		from caja.tbl_detmovpago  tl
		inner join  common.tbl_banco ban on ban.id_banco=tl.id_banco
		where mov.id_movimcaja=tl.id_movimcaja and mov.id_sucursal=tl.id_sucursal
	      ) d
	    ) as telefono
	) t),'[Ninguno->]','') as nro_operacion,
       mov.doc_referencia,
       to_char(f.fecha_venta,'dd/MM/yyyy') as fecha_venta,
	to_char(mov.fecha_mov,'dd/MM/yyyy') as fecha_movimiento

   FROM caja.tbl_movcaja mov
     JOIN common.tbl_moneda m ON mov.id_moneda = m.id_moneda
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = mov.id_comprobante
     JOIN ventas.tbl_facturacion f ON f.id_facturacion = mov.id_facturacion AND mov.id_sucursal_fac = f.id_sucursal
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN common.tbl_comprobante cpf ON cpf.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN seguridad.tbl_usuario uss ON uss.id_usuario = mov.id_usuario
     LEFT JOIN seguridad.tbl_usuario usa ON usa.id_usuario = mov.id_usuarioa::bpchar
     LEFT JOIN seguridad.tbl_usuario usauto ON usauto.id_usuario = mov.id_usuario_autoriza::bpchar
  WHERE f.id_tipoventa = 1
UNION
 SELECT mov.id_movimcaja,
    COALESCE(cp.descripcion_corta, ''::bpchar) AS abreviatura,
    COALESCE(mov.serie, ''::bpchar) AS serie,
    COALESCE(mov.numero, ''::bpchar) AS numero,
    mov.fecha_mov,
    (((cpf.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS documento,
    cli.doc_persona AS dni_ruc,
    COALESCE(cli.id_persona, '000'::bpchar::character varying) AS cod_cliente,
    cli.nombre_razon AS cliente,
    m.simbolo AS moneda,
    f.imp_total,
    dp.imp_pago AS imp_movimiento,
    vend.nombre_razon AS vendedor,
    COALESCE(uss.camp2, ''::text) AS usuario,
    mov.id_caja_destino AS id_caja,
    mov.id_estado,
    'CUOTA=>'::text || c.nro_cuota::text AS op_estado,
    c.nro_cuota AS nrocuota,
    '0'::text AS idtipventa,
    mov.id_sucursal,
    COALESCE(usa.camp2, '-'::text) AS usuario_anula,
    COALESCE(usauto.camp2, '-'::text) AS usuario_autoriza,
    (select replace(replace(t.telefono::text,'{"nro_operacion":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  ban.nombre_ban || '->'|| nro_operacion	AS nro_operacion
		from caja.tbl_detmovpago  tl
		inner join  common.tbl_banco ban on ban.id_banco=tl.id_banco
		where mov.id_movimcaja=tl.id_movimcaja and mov.id_sucursal=tl.id_sucursal
	      ) d
	    ) as telefono
	) t) as nro_operacion,
    mov.doc_referencia,
    to_char(f.fecha_venta,'dd/MM/yyyy') as fecha_venta,
    to_char(mov.fecha_mov,'dd/MM/yyyy') as fecha_movimiento
   FROM caja.tbl_movcaja mov
     JOIN common.tbl_moneda m ON mov.id_moneda = m.id_moneda
     JOIN common.tbl_comprobante cp ON mov.id_comprobante = cp.id_comprobante
     JOIN creditos.tbl_detpagocuota dp ON mov.id_movimcaja = dp.id_movimcaja AND mov.id_sucursal = dp.id_sucursal
     JOIN creditos.tbl_cuota c ON c.id_cuotas = dp.id_cuotas AND c.id_credito = dp.id_credito AND c.id_sucursal_credito = dp.id_sucursal_credito
     JOIN creditos.tbl_credito cc ON cc.id_credito = c.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito
     JOIN creditos.tbl_ventacredito vc ON cc.id_credito = vc.id_credito AND cc.id_sucursal_credito = vc.id_sucursal_credito
     JOIN ventas.tbl_facturacion f ON f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN common.tbl_comprobante cpf ON cpf.id_comprobante = f.id_comprobante
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN seguridad.tbl_usuario uss ON uss.id_usuario = mov.id_usuario
     LEFT JOIN seguridad.tbl_usuario usa ON usa.id_usuario = mov.id_usuarioa::bpchar
     LEFT JOIN seguridad.tbl_usuario usauto ON usauto.id_usuario = mov.id_usuario_autoriza::bpchar
  WHERE c.nro_cuota <> 0
UNION
 SELECT mov.id_movimcaja,
    cp.descripcion_corta AS abreviatura,
    COALESCE(mov.serie, '-'::bpchar) AS serie,
    COALESCE(mov.numero, '-'::bpchar) AS numero,
    mov.fecha_mov,
    (((cpf.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS documento,
    cli.doc_persona AS dni_ruc,
    COALESCE(cli.id_persona, '000'::bpchar::character varying) AS cod_cliente,
    cli.nombre_razon AS cliente,
    m.simbolo AS moneda,
    f.imp_total,
    dp.imp_pago AS imp_movimiento,
    vend.nombre_razon AS vendedor,
    COALESCE(uss.camp2, ''::text) AS usuario,
    mov.id_caja_destino AS id_caja,
    mov.id_estado,
    'Inicial'::text AS op_estado,
    c.nro_cuota AS nrocuota,
    '0'::text AS idtipventa,
    mov.id_sucursal,
    COALESCE(usa.camp2, '-'::text) AS usuario_anula,
    COALESCE(usauto.camp2, '-'::text) AS usuario_autoriza,
    (select replace(replace(t.telefono::text,'{"nro_operacion":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  ban.nombre_ban || '->'|| nro_operacion	AS nro_operacion
		from caja.tbl_detmovpago  tl
		inner join  common.tbl_banco ban on ban.id_banco=tl.id_banco
		where mov.id_movimcaja=tl.id_movimcaja and mov.id_sucursal=tl.id_sucursal
	      ) d
	    ) as telefono
	) t) as nro_operacion,
     mov.doc_referencia,
     '' as fecha_venta,
     to_char(mov.fecha_mov,'dd/MM/yyyy') as fecha_movimiento
   FROM caja.tbl_movcaja mov
     JOIN common.tbl_moneda m ON mov.id_moneda = m.id_moneda
     JOIN common.tbl_comprobante cp ON mov.id_comprobante = cp.id_comprobante
     JOIN creditos.tbl_detpagocuota dp ON mov.id_movimcaja = dp.id_movimcaja AND mov.id_sucursal = dp.id_sucursal
     JOIN creditos.tbl_cuota c ON c.id_cuotas = dp.id_cuotas AND c.id_credito = dp.id_credito AND c.id_sucursal_credito = dp.id_sucursal_credito
     JOIN creditos.tbl_credito cc ON cc.id_credito = c.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito
     JOIN creditos.tbl_ventacredito vc ON cc.id_credito = vc.id_credito AND cc.id_sucursal_credito = vc.id_sucursal_credito
     JOIN ventas.tbl_facturacion f ON f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN common.tbl_comprobante cpf ON cpf.id_comprobante = f.id_comprobante
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN seguridad.tbl_usuario uss ON uss.id_usuario = mov.id_usuario
     LEFT JOIN seguridad.tbl_usuario usa ON usa.id_usuario = mov.id_usuarioa::bpchar
     LEFT JOIN seguridad.tbl_usuario usauto ON usauto.id_usuario = mov.id_usuario_autoriza::bpchar
  WHERE c.nro_cuota = 0;

CREATE OR REPLACE VIEW ventas.v_registro_ventas_detallado
 AS
 SELECT f.fecha_venta::date AS fecha_emision,
        CASE f.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    lpad(f.serie_facturacion::text, 4, '0'::text) AS nro_serie,
    lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_comprobante,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS doc_cliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END ||
        CASE
            WHEN f.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN f.id_operacion = 2 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                    ELSE f.imp_total
                END
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                    ELSE f.valor_venta
                END
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                    ELSE f.imp_igv
                END
            END
            ELSE 0::numeric
        END AS igv,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                ELSE f.imp_total
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS total,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    (dc.direccion || '- '::text) || dis.distrito::text AS direccion,
    (((cp.descripcion_corta::text || '/'::text) || lpad(f.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                ELSE f.valor_venta
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS valor_venta,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                ELSE f.imp_igv
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    f.id_facturacion::text || f.id_sucursal::text AS codigo_venta,
    m.id_moneda,
    f.id_operacion,
    f.id_tipoventa,
    f.id_facturacion,
    cp.id_comprobante AS idtipcomprobante,
    f.id_estado,
    s.id_empresa,
        CASE f.id_estado
            WHEN 1 THEN f.imp_percepcion
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_percepcion,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN (f.imp_igv + f.imp_neto) * '-1'::integer::numeric
                ELSE f.imp_neto
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_neto,
    COALESCE((((cpnc.descripcion_corta::text || '/'::text) || lpad(nc.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS documento_referencia,
    to_char(f.fecha_venta, 'dd/yy/yyyy'::text) AS fecha_grid,
    COALESCE(lpad(nc.serie_facturacion::text, 4, '0'::text), ''::text) AS serie_ref,
    COALESCE(lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS numero_ref,
    COALESCE(
        CASE nc.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END, ''::text) AS tipocomprobante_ref,
    nc.fecha_venta::date AS fecha_ref,
    length(btrim(c.doc_persona::text)) AS len,
    f.tipo_cambio,
    f.glosa
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_estado e ON e.id_estado = f.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dc.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     LEFT JOIN ventas.tbl_facturacion nc ON nc.id_facturacion = f.id_facturacionref AND f.id_sucursalref = nc.id_sucursal
     LEFT JOIN common.tbl_comprobante cpnc ON cpnc.id_comprobante = nc.id_comprobante
  ORDER BY f.id_comprobante, ("right"(f.serie_facturacion::text, 3)), (f.numdoc_facturacion::integer);

create or replace view compras.v_compras_correlativos
as
select
 f.anio::text || lpad(f.id_mes::text,2,'0') ||'-'|| f.id_compra as Periodo,
f.id_compra as correlativo,
f.serie || '-' ||f.nro_doc_compra as documento,
f.fec_documento,
fec_ingsistema,
prov.doc_persona,
prov.nombre_razon as proveedor,
f.nota_credito,
f.anio,
f.id_mes,
f.id__compra,
f.id_sucursalcompra
from compras.tbl_compra f
inner join common.tbl_comprobante c on c.id_comprobante=f.id_comprobante
inner join planillas.tbl_persona prov on prov.id_persona=f.id_proveedor
where f.id_estado=1
order by f.anio,f.id_mes,f.id_compra

select * from compras.v_detcompras   where ID__COMPRA = 57 and id_sucursalcompra = 1 order by item

select *from planillas.tbl_persona

select *from compras.tbl_compra

CREATE OR REPLACE VIEW common.v_departamento
as
SELECT
id_dpto as id,
p.descripcion_larga as pais,
dp.departamento,
p.id_pais,
1 id_estado
 FROM common.tbl_dpto dp
inner join common.tbl_pais p on p.id_pais=dp.id_pais

select *from common.tbl_dpto

CREATE OR REPLACE VIEW ventas.v_resumen
as
SELECT
resumen_id,
documentos_emision_Fecha as fecha_emision,
resumen_fecha as fecha_resumen,
resumen_name as nombre_resumen,
resumen_enviado_lote as lote,
COALESCE(resumen_ticket,'-') as ticket,
COALESCE(to_CHAR(resumen_enviado_fecha,'dd/MM/yyyy'),'-') as fecha_envio,
COALESCE(resumen_enviado_archivo,'-') as nombre_archivo,
s.descripcion as estado_sunat,
resumen_enviado_status,
tipo_resumen
FROM ventas.tbl_resumen  r
inner join COMMON.TBL_ESTADOSUNAT s on s.id=resumen_enviado_status
order by  documentos_emision_Fecha::date asc,resumen_enviado_lote asc;

create or replace view ventas.v_detresumen
as
select
tipo_documento,
serie_documento,
numero_documento,
venta_gravada,
venta_exonerada,
venta_inafecta,
otros_cargos,
isc,
igv,
venta_gratuita,
monto_percepcion,
total_cobrado,
resumen_id
from ventas.tbl_detresumen
order by serie_documento,numero_documento::bigint asc;

select * from ventas.v_resumen   where fecha_resumen::date>='01/04/2019' and fecha_resumen::date<='01/07/2019' and resumen_enviado_status =4

select *from ventas.tbl_resumen

create or replace view COMMON.V_ESTADOSUNAT
as
select id,descripcion,codigosunat from COMMON.TBL_ESTADOSUNAT;

select *from caja.v_liquidacion_bimoneda

create or replace view caja.v_liquidacion_bimoneda
as
select
com.descripcion_corta AS comprobante,
f.serie_facturacion::text || '-'::text || f.numdoc_facturacion::text as nro_comprobante,
CASE
    WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente) || ' uss: '|| us.camp2
    ELSE ((btrim(cli.nombre_razon::text) || '('::text) || mc.glosa) || ')'::text || ' uss: '|| us.camp2
END AS cliente,
 m.simbolo AS moneda,
 f.id_vendedor AS id_vendedor,
 CASE
    WHEN f.id_estado = 1 THEN f.imp_total
    ELSE 0.00
END AS imp_total,
 COALESCE(dp.nro_operacion, ''::text) AS nro_operacion,
 fp.descripcion AS formapago,
CASE
    WHEN m.id_moneda = 1 THEN
    CASE
	WHEN f.id_estado = 1 THEN dp.imp_pago
	ELSE 0::numeric
    END
ELSE 0.00
END AS imp_soles,
 CASE
    WHEN m.id_moneda = 2 THEN dp.imp_pago
    ELSE 0.00
END AS imp_dolares,
f.id_comprobante,
f.serie_facturacion AS serie,
f.numdoc_facturacion AS numero,
f.id_facturacion,
1 AS op_fil,
f.serie_facturacion AS serie1,
f.numdoc_facturacion::bigint AS numero1,
mc.fecha_liquidacion,
mc.liquidacion_id,
fp.id_formapago,
'000'::character varying AS id_concepto,
'Por documento'::character varying AS concepto,
''::text AS referencia,
mc.id_turno,
mc.fecha_mov,
mc.id_caja_destino AS id_caja,
mc.id_movimcaja,
mc.id_sucursal,
CASE
    WHEN m.id_moneda = 1 THEN
    CASE
	WHEN f.id_estado = 1 THEN
		case when fp.id_formapago in('01') then dp.imp_pago  else 0 end --select *from common.tbl_formapago

	ELSE 0::numeric
    END
ELSE 0.00
END AS total_soles,
 CASE
    WHEN m.id_moneda = 2 THEN case when fp.id_formapago in('01') then dp.imp_pago  else 0 end
    ELSE 0.00
END AS total_dolares
 from ventas.tbl_facturacion f
inner join caja.tbl_movcaja mc on f.id_facturacion=mc.id_facturacion and f.id_sucursal=mc.id_sucursal_fac
INNER JOIN common.tbl_comprobante com ON com.id_comprobante = f.id_comprobante
inner join caja.tbl_detmovpago dp on mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal
INNER JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
INNER JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
JOIN common.tbl_moneda m ON m.id_moneda =dp.id_moneda
JOIN common.tbl_formapago fp ON fp.id_formapago = dp.id_formapago
JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mc.id_tipocambio
JOIN seguridad.tbl_usuario us on us.id_usuario=mc.id_usuario
WHERE mc.id_estado=1
UNION ALL

select
com.descripcion_corta AS comprobante,
mc.serie::text || '-'::text || mc.numero::text as nro_comprobante,
CASE
    WHEN btrim(mc.id_personaingdiv::text) = '000'::text THEN btrim(mc.nomape_cliente) || ' uss: '|| us.camp2
    ELSE ((btrim(cli.nombre_razon::text) || '('::text) || mc.glosa) || ')'::text || ' uss: '|| us.camp2
END AS cliente,
 m.simbolo AS moneda,
 mc.id_persona AS id_vendedor,
 CASE
    WHEN mc.id_estado = 1 THEN mc.imp_movimiento
    ELSE 0.00
END AS imp_total,
 COALESCE(dp.nro_operacion, ''::text) AS nro_operacion,
 CASE
    WHEN mc.signo = '-1'::integer THEN 'Egresos'::character varying
    ELSE fp.descripcion
END  AS formapago,
CASE
    WHEN m.id_moneda = 1 THEN
    CASE
	WHEN mc.id_estado = 1 THEN dp.imp_pago
	ELSE 0::numeric
    END
ELSE 0.00
END AS imp_soles,
 CASE
    WHEN m.id_moneda = 2 THEN dp.imp_pago
    ELSE 0.00
END AS imp_dolares,
mc.id_comprobante,
mc.serie AS serie,
mc.numero AS numero,
mc.id_facturacion,
1 AS op_fil,
mc.serie AS serie1,
mc.numero::bigint AS numero1,
mc.fecha_liquidacion,
mc.liquidacion_id,
case when mc.signo='-1' then '06' else fp.id_formapago end id_formapago,
'000'::character varying AS id_concepto,
'Por documento'::character varying AS concepto,
''::text AS referencia,
mc.id_turno,
mc.fecha_mov,
mc.id_caja_destino AS id_caja,
mc.id_movimcaja,
mc.id_sucursal,
CASE
    WHEN m.id_moneda = 1 THEN
	case when mc.signo='-1' then
	dp.imp_pago*-1 else dp.imp_pago
	end
    ELSE 0.00
END AS total_soles,
 CASE
    WHEN m.id_moneda = 2 THEN
	case when mc.signo='-1' then
	dp.imp_pago*-1 else dp.imp_pago
	end
    ELSE 0.00
END AS total_dolares
 from   caja.tbl_movcaja mc
INNER JOIN common.tbl_comprobante com ON com.id_comprobante = mc.id_comprobante
inner join caja.tbl_detmovpago dp on mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal
INNER JOIN planillas.tbl_persona cli ON cli.id_persona::text = mc.id_personaingdiv::text
JOIN common.tbl_moneda m ON m.id_moneda =dp.id_moneda
JOIN common.tbl_formapago fp ON fp.id_formapago = dp.id_formapago
JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mc.id_tipocambio
JOIN seguridad.tbl_usuario us on us.id_usuario=mc.id_usuario
WHERE mc.id_estado=1  and mc.id_facturacion IS NULL
order by 20, 12,13

select *from caja.tbl_movcaja limit 10

select *from  almacen.v_inventario_inicial_valida
go
SELECT
	vend.id_persona as id_vendedor,
	vend.nombre_razon as vendedor,
	fa.id_familia,
	fa.descripcion_larga as familia,
	p.codigo,
	p.descripcion_larga as producto,
	und.desc_corta as unidad,
	sum(x.cantidad) as cantidad,
	sum(df.importe) as importe,
	--count(f.id_cliente) as covertura,
	z.covertura
 FROM ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on df.id_facturacion=f.id_facturacion and f.id_sucursal=df.id_sucursal
inner join planillas.tbl_persona vend on vend.id_persona=f.id_vendedor
inner join almacen.tbl_detproducto dp on dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_familia fa on fa.id_familia=p.id_familia
JOIN LATERAL almacen.fn_stock(df.id_producto, df.id_unidadventa, df.id_almacen, df.cantidad) x(product_id, unit_id, val_unit, stock, cantidad) ON x.product_id::text = dp.id_producto::text
inner join almacen.tbl_unidad und on und.id_unidadventa=x.unit_id

inner join (
	select df.id_producto,f.id_vendedor,count(id_cliente) as covertura from ventas.tbl_facturacion f
	inner join ventas.tbl_detfacturacion df on f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal
	group by df.id_producto,f.id_vendedor
	order by f.id_vendedor desc,df.id_producto
) z on z.id_producto=p.id_producto and f.id_vendedor=z.id_vendedor
group by vend.id_persona ,
	vend.nombre_razon,
	fa.id_familia,
	fa.descripcion_larga,
	p.codigo,
	p.descripcion_larga ,
	und.desc_corta,
	df.id_producto,
	z.covertura
order by fa.id_familia, vend.id_persona,df.id_producto
--GO

select *from seguridad.item where menu ilike '%ventas%vend%' and item=107

select *from ventas.tbl_detfacturacion
select *from almacen.v_producto

create or replace view almacen.v_verificacion_inventario_inicial
as
select
p.id_producto,
trim(p.codigo) as codigo,
trim(p.descripcion_larga) as producto,
und.desc_corta as unidad,
ex.stock_inicial,
consto_inicial as costo,
dp.unidad_inventario,
dp.val_unidad,
dp.id_unidadventa ,
id_almacen,
p.cod_barra
 from almacen.tbl_existencia ex
inner join almacen.tbl_Detproducto dp on ex.id_producto=dp.id_producto and dp.id_unidadventa=ex.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_unidad und on und.id_unidadventa=dp.id_unidadventa
where p.id_estado=1 and dp.id_estado=1

--where dp.unidad_inventario is true and dp.val_unidad>1
go
create or replace view ventas.v_ventas_vendedor_distribucion
as
select
	f.serie_facturacion as serie,
	f.numdoc_facturacion as numero,
	f.fecha_venta::date as fecha ,
	cli.nombre_razon as cliente,
	vend.nombre_razon as vendedor,
	tv.descripcion_larga as tipoventa,
	COALESCE(status,false) despacho,
	f.id_Facturacion,
	f.id_sucursal,
	f.id_vendedor,
	COALESCE(z.id_detdespacho,0) id_detdespacho
from ventas.tbl_facturacion f
inner join planillas.tbl_persona vend on vend.id_persona=f.id_vendedor
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join common.tbl_tipoventa tv on tv.id_tipoventa=f.id_tipoventa
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
left join (
	select
		id_facturacion,
		id_sucursalfac as id_sucursal,
		true as status ,
		d.id_detdespacho
	from almacen.tbl_detdespacho d
	where d.id_estado=1
	) z on z.id_facturacion=f.id_facturacion and z.id_sucursal=f.id_sucursal
where f.id_estado=1  ;

--select *from common.tbl_tipoventa

create or replace view almacen.v_despacho_dsitribucion
as
select
	d.id_despacho,
	to_char(d.fecha_despacho,'dd/MM/yyyy') as fecha,
	vend.nombre_razon as vendedor,
	camp2 as usario,
	COALESCE(x.nro_documentos,0) as nro_documentos,
	d.id_vendedor
from almacen.tbl_despacho d
inner join planillas.tbl_persona vend on d.id_vendedor=vend.id_persona
inner join seguridad.tbl_usuario u on u.id_usuario=d.id_usuario
inner join(
		select id_despacho,count(1)  as nro_documentos from almacen.tbl_detdespacho d
		inner join ventas.tbl_facturacion f on f.id_facturacion =d.id_facturacion
		where f.id_estado=1 and d.id_estado=1
		group by id_despacho
	) x on x.id_despacho=d.id_despacho

create or replace view common.v_tipomoneda
as
select id_tipomoneda,descripcion_larga,descripcion_corta,valor,usar,id_moneda,id_estado
from common.tbl_tipomoneda

delete from almacen.tbl_detdespacho

select *from ventas.tbl_facturacion

create or replace view almacen.v_products_attributes_values
as
SELECT
att.name as atribute,
attv.name as value_atribute,
e.des_estado as estado,
e.id_estado,
att.id as attribute_id ,
pattv.attribute_value_id,
pattv.product_attribute_id,
pattv.id as product_atribute_value_id,
pattv.printable,
patt.product_id
FROM almacen.attributes att
inner join almacen.product_attributes patt on att.id=patt.attribute_id
inner join almacen.product_attribute_values pattv on patt.id=pattv.product_attribute_id
inner join almacen.attribute_values attv on attv.id=pattv.attribute_value_id
inner join common.tbl_estado e on e.id_estado=pattv.id_estado

ALTER TABLE almacen.product_attribute_values ADD COLUMN ID_ESTADO INTEGER DEFAULT 1;
ALTER TABLE almacen.product_attribute_values add column printable boolean default false;

select *from common.tbl_estado
select *from almacen.product_attribute_values
select *from common.v_tablas_generales

select *from ventas.v_valesconsumofact

CREATE OR REPLACE VIEW ventas.v_valesconsumofact AS
 SELECT v.id_vale,
    v.id_sucrusal_vale,
        CASE
            WHEN v.fec_emision IS NOT NULL THEN to_char(v.fec_emision, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_emision,
    v.concepto,
        CASE
            WHEN v.fec_vencimiento IS NOT NULL THEN to_char(v.fec_vencimiento, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_vencimiento,
    v.imp_vale,
    v.id_direccion,
    v.id_moneda,
    COALESCE(v.nro_vale, ''::text) AS nro_vale,
    v.imp_pendiente,
    v.id_cliente,
    p.doc_persona,
    p.nombre_razon AS cliente,
    v.id_autoriza,
    v.vehiculo,
    v.placa,
    v.conductor,
    v.serie_vale,
    v.id_comprobante,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(v.kilometraje, ''::character varying) AS kilometraje,
    v.fec_emision AS fecha,
    (lpad(v.serie_vale::text, 4, '0'::text) || '.'::text) || lpad(v.nro_vale, 7, '0'::text) AS vale_id,
    (((c.descripcion_corta::text || '/'::text) || lpad(v.serie_vale::text, 4, '0'::text)) || '-'::text) || lpad(v.nro_vale, 7, '0'::text) AS vale,
        CASE date_part('month'::text, v.fec_emision)
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
    date_part('year'::text, v.fec_emision)::text AS anio,
    prod.id_familia,
    prod.descripcion_larga AS producto,
    COALESCE(v.id_clientefactura, ''::character varying) AS id_clientefactura,
    COALESCE(v.id_direccionfactura, 0::bigint) AS id_direccionfactura,
    COALESCE(cf.doc_persona, ''::character varying) AS doc_clientefactura,
    COALESCE(cf.nombre_razon, ''::character varying) AS clienefactura
   FROM ventas.tbl_valesconsumo v
     JOIN planillas.tbl_persona p ON p.id_persona::text = v.id_cliente::text
     JOIN common.tbl_estado e ON e.id_estado = v.id_estado
     JOIN common.tbl_comprobante c ON c.id_comprobante = v.id_comprobante
     JOIN ventas.tbl_detvale d ON v.id_vale = d.id_vale AND v.id_sucrusal_vale = d.id_sucrusal_vale
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
     JOIN almacen.tbl_producto prod ON prod.id_producto::text = dp.id_producto::text
     LEFT JOIN planillas.tbl_persona cf ON cf.id_persona::text = v.id_clientefactura::text
  WHERE NOT (v.id_vale::text || v.id_sucrusal_vale::text IN ( SELECT fv.id_vale::text || fv.id_sucrusal_vale::text
           FROM ventas.tbl_facvale fv
          WHERE fv.id_estado = 1))
  ORDER BY (v.serie_vale::integer), (v.nro_vale::integer);

SELECT *FROM common.v_tablas_generales

CREATE OR REPLACE   VIEW common.v_tablas_generales
as
select row_to_json(t)::text as data
from (
  select

    (
      select array_to_json(array_agg(row_to_json(d)))
      from (
        select  ID_MOTIVO,
		CODIGO_SUNAT as code,
		DESCRIPCION_LARGA as name,
		id_estado as status_id

        from COMMON.tbl_motivotraslado
        order by id_motivo asc
      ) d
    ) as motivo_traslado,
    (
      select array_to_json(array_agg(row_to_json(d)))
      from (
        select  id_modalidad,
		CODIGO_SUNAT as code,
		DESCRIPCION_LARGA as name,
		id_estado as status_id

        from COMMON.tbl_modalidadtraslado
        order by id_modalidad asc
      ) d
    ) as modalidad_traslado,
(
	select array_to_json(array_agg(row_to_json(d)))
	from (
	select  id,
		codigosunat as code,
		descripcion as name,
		id_estado as status_id

	from COMMON.TBL_ESTADOSUNAT
	order by id asc
) d
) as estado_sunat,
(
	select array_to_json(array_agg(row_to_json(d)))
	from (
	select  id_pais as id,
		codigosunat as code,
		descripcion_larga as name,
		id_estado as status_id

	from common.tbl_pais
	order by id_pais asc
) d
) as pais  ,

 (
	select array_to_json(array_agg(row_to_json(d)))
	from (
	select  id_dpto as id,
		departamento as name,
		id_pais as country_id

	from common.tbl_dpto
	order by id_dpto asc
) d
) as departamento,
(
	select array_to_json(array_agg(row_to_json(d)))
	from (
	select  id,
		name,
		codigo_sunat code

	from common.tbl_afectacionigv
	order by id asc
) d
) as afectacionigv

) t;

select * from ventas.V_CABCOTIZACION   where id_empresa=1 and documento || doc_persona || cliente ilike '%%'

select *from common.tbl_provincia where provincia ilike '%Santiago%'

create or replace view compras.v_n_precios_x_compras
as
select
	to_char(c.fec_documento,'dd/MM/yyyy') as fecha,
	cp.codigosunat ||'/'||c.serie || '-' || c.nro_doc_compra as numero_doc ,
	prov.nombre_razon as proveedor,
	p.codigo,
	p.descripcion_larga as producto,
	und.desc_corta as unidad,
	dc.cantidad,
	dc.precio,
	dc.imp_igv,
	dc.imp_flete,
	dc.id_producto,
	c.id_proveedor,
	m.simbolo as moneda
from compras.tbl_compra c
inner join common.tbl_comprobante cp on cp.id_comprobante=c.id_comprobante
inner join common.tbl_moneda m on m.id_moneda=c.id_moneda
inner join  compras.tbl_detcompra dc on c.id__compra=dc.id__compra and c.id_sucursalcompra=dc.id_sucursalcompra
inner join  almacen.tbl_detproducto dp on dp.id_producto=dc.id_producto and dp.id_unidadventa=dc.id_unidadventa
inner join  almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_unidad und on und.id_unidadventa=dp.id_unidadventa
inner join  planillas.tbl_persona prov on prov.id_persona =c.id_proveedor
where c.id_estado=1 and dc.id_estado=1
order  by c.fec_documento::Date asc

create or replace view ventas.v_n_precios_x_ventas
as
select
	to_char(c.fecha_venta,'dd/MM/yyyy') as fecha,
	cp.codigosunat ||'/'||c.serie_facturacion || '-' || c.numdoc_facturacion as numero_doc ,
	prov.nombre_razon as proveedor,
	p.codigo,
	p.descripcion_larga as producto,
	und.desc_corta as unidad,
	dc.cantidad,
	dc.precio,
	dc.imp_igv,
	dc.id_producto,
	c.id_cliente,
	m.simbolo as moneda
from ventas.tbl_facturacion c
inner join common.tbl_comprobante cp on cp.id_comprobante=c.id_comprobante
inner join common.tbl_moneda m on m.id_moneda=c.id_moneda
inner join  ventas.tbl_detfacturacion dc on c.id_facturacion=dc.id_facturacion and c.id_sucursal=dc.id_sucursal
inner join  almacen.tbl_detproducto dp on dp.id_producto=dc.id_producto and dp.id_unidadventa=dc.id_unidadventa
inner join  almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_unidad und on und.id_unidadventa=dp.id_unidadventa
inner join  planillas.tbl_persona prov on prov.id_persona =c.id_cliente
where c.id_estado=1 and dc.id_estado=1
order  by c.fecha_venta::Date asc

select *from ventas.tbl_detfacturacion

select *from compras.v_n_precios_x_compras where id_producto='740'

740
select *from almacen.tbl_unidad
select *from compras.tbl_detcompra

create or replace view ventas.v_ventas_x_proveedor
as
select 	tcp.descripcion_corta as tipo_documento,
	f.serie_facturacion as serie,
	f.numdoc_facturacion as numero,
	to_char(f.fecha_venta::date,'dd/MM/yyyy') as fecha,
	cli.doc_persona as doc_cliente,
	cli.nombre_razon as cliente,
	tv.descripcion_larga as tipo_venta,
	f.imp_total as total,
	f.imp_neto,
	p.descripcion_larga as producto,
	un.desc_corta as unidad,
	df.cantidad,
	df.precio,
	df.imp_dscto,
	df.importe,
	x.doc_proveedor,
	x.proveedor,
	df.id_producto,
	f.id_cliente,
	x.id_proveedor
	 from ventas.tbl_facturacion f
inner join common.tbl_tipoventa tv on tv.id_tipoventa=f.id_tipoventa
inner join common.tbl_comprobante tcp on tcp.id_comprobante=f.id_comprobante
inner join ventas.tbl_detfacturacion df on f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
inner join almacen.tbl_detproducto dp on dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa
inner join almacen.tbl_unidad un on un.id_unidadventa=df.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
left join (
	select distinct id_proveedor,id_producto,prv.doc_persona as doc_proveedor,prv.nombre_razon as proveedor from compras.tbl_compra c
	inner join planillas.tbl_persona prv on prv.id_persona=c.id_proveedor
	inner join compras.tbl_detcompra dc on c.id__compra=dc.id__compra and c.id_sucursalcompra=dc.id_sucursalcompra
) x on x.id_producto=df.id_producto
order by x.id_proveedor,df.id_producto
--where df.id_producto='214'

select *from common.tbl_comprobante
select *from almacen.tbl_unidad

select *from ventas.tbl_detfacturacion limit 10

CREATE OR REPLACE VIEW COMPRAS.v_compras_por_familia_series
as
SELECT
(cp.descripcion_corta || '/' || c.serie || '-' || c.nro_doc_compra) as documento,
to_char(c.fec_documento,'dd/MM/yyyy') as fecha,
prov.doc_persona as doc_proveedor,
prov.nombre_razon as proveedor ,
(p.descripcion_larga || almacen.fn_serie_producto_compra(dc.id__compra,c.id_sucursalcompra,dc.id_producto,dc.id_unidadventa))::text as producto,
fa.descripcion_larga as familia,
ma.descripcion_larga as marca,
--COALESCE(x.nro_serie,'-') as serie_producto,
c.imp_total,
c.id__compra::text||c.id_sucursalcompra as id_compra,
p.id_familia,
p.id_producto,
p.codigo,
dc.cantidad
FROM compras.tbl_compra c
inner join planillas.tbl_persona prov on prov.id_persona=c.id_proveedor
inner join common.tbl_comprobante cp on cp.id_comprobante=c.id_comprobante
inner join compras.tbl_Detcompra dc on c.id__compra=dc.id__compra and c.id_sucursalcompra=dc.id_sucursalcompra
inner join almacen.tbl_detproducto dp on dc.id_producto=dp.id_producto and dc.id_unidadventa=dp.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_familiamarca fm on fm.id_familia=p.id_familia and p.id_marca=fm.id_marca
inner join almacen.tbl_familia fa on fa.id_familia=fm.id_familia
inner join almacen.tbl_marca ma on ma.id_marca=fm.id_marca
/*left join (select sc.id__compra,sc.id_sucursalcompra,sp.id_producto,sp.id_unidadventa,sp.nro_serie from almacen.tbl_serieproducto sp
	    inner join almacen.tbl_seriecompra sc on sp.id_serie=sc.id_serie
	 ) x on x.id__compra=dc.id__compra and x.id_sucursalcompra=dc.id_sucursalcompra  and x.id_producto=dc.id_producto and x.id_unidadventa=dc.id_unidadventa
*/
order by c.id__compra,dc.id_producto

select *from almacen.tbl_seriecompra
select *from almacen.tbl_productofmilia
select *from compras.tbl_compra

select *from planillas.tbl_persona
select *from almacen.tbl_serieproducto

CREATE OR REPLACE VIEW caja.v_liquidaciones_diarias
AS
 SELECT split_part(ct.key, '|'::text, 1)::bigint AS liquidacion_id,
    split_part(ct.key, '|'::text, 2)::date AS fecha_liquidacion,
    split_part(ct.key, '|'::text, 3)::character varying(11) AS dni,
    split_part(ct.key, '|'::text, 4)::character varying(200) AS colaborador,
    COALESCE(ct.deposito, 0::numeric) AS deposito,
    COALESCE(ct.efectivo, 0::numeric) AS efectivo,
    COALESCE(ct.tarjeta, 0::numeric) AS tarjeta,
    COALESCE(ct.egresos, 0::numeric) AS egresos
   FROM crosstab('SELECT concat(liquidacion_id,''|'',
    fecha_liquidacion,''|'',
    dni,''|'',
    colaborador
    )as key,
	formapago,
	sum(importe) AS importe
FROM caja.v_liquidacion_diaria_cajas v group by key,formapago'::text, 'select distinct  formapago from  caja.v_liquidacion_diaria_cajas formapago'::text) ct(key text, deposito numeric(10,2), efectivo numeric(10,2), egresos numeric(10,2), tarjeta numeric(10,2))
  ORDER BY (split_part(ct.key, '|'::text, 1)::bigint);

select *from caja.fn_liquidaciones_caja_diarios()

CREATE OR REPLACE FUNCTION caja.fn_liquidaciones_caja_diarios()
returns table(
	_liquidacion_id bigint,
	_fecha_liquidacion date,
	_dni varchar(12),
	_colaborador text,
	_DEPOSITO numeric(20,2),
	_TARJETA numeric(20,2),
	_EFECTIVO numeric(20,2),
	_CREDITO numeric(20,2),
	_EGRESOS numeric(20,2),
	_imp_saldo_final numeric(20,4),
	_imp_recibido numeric(20,4),
	_imp_diferencia numeric(20,4),
	_liquidado boolean
) as $$
declare
	dat record;
begin
  CREATE TEMPORARY TABLE  tmp_liquidacion_val(
	liquidacion_id bigint,
	fecha_liquidacion date,
	dni varchar(12),
	colaborador text,
	DEPOSITO numeric(20,2),
	TARJETA numeric(20,2),
	EFECTIVO numeric(20,2),
	CREDITO numeric(20,2),
	EGRESOS numeric(20,2)
  )ON COMMIT DROP;
  for dat in select * from caja.v_liquidacion_diaria_cajas loop
	if not exists(select *from tmp_liquidacion_val where liquidacion_id=dat.liquidacion_id) then
		insert into tmp_liquidacion_val(
			liquidacion_id,
			fecha_liquidacion ,
			dni,
			colaborador ,
			DEPOSITO,
			TARJETA,
			EFECTIVO,
			CREDITO,
			EGRESOS
		)values(
			dat.liquidacion_id,
			dat.fecha_liquidacion ,
			dat.dni,
			dat.colaborador ,
			case when dat.formapago='DEPOSITO' then dat.importe else 0.00 end ,
			case when dat.formapago='TARJETA' then dat.importe else 0.00 end,
			case when dat.formapago='EFECTIVO' then dat.importe else 0.00 end,
			case when dat.formapago='CREDITO' then dat.importe else 0.00 end,
			case when dat.formapago='EGRESOS' then abs(dat.importe) else 0.00 end
		);
	else
	update tmp_liquidacion_val set
			DEPOSITO=case when dat.formapago='DEPOSITO' then dat.importe else deposito end,--case when COALESCE(DEPOSITO,0)=0 then (case when dat.formapago='DEPOSITO' then dat.importe  end ) end,
			TARJETA=case when dat.formapago='TARJETA' then dat.importe else TARJETA end,--case when COALESCE(TARJETA,0)=0 then (case when dat.formapago='TARJETA' then dat.importe  end ) end,
			EFECTIVO=case when dat.formapago='EFECTIVO' then dat.importe else EFECTIVO end,--case when COALESCE(EFECTIVO,0)=0 then (case when dat.formapago='EFECTIVO' then dat.importe  end ) end,
			CREDITO=case when dat.formapago='CREDITO' then dat.importe else CREDITO end,--case when COALESCE(CREDITO,0)=0 then (case when dat.formapago='CREDITO' then dat.importe  end ) end,
			EGRESOS=case when dat.formapago='EGRESOS' then abs(dat.importe) else EGRESOS end--case when COALESCE(EGRESOS,0)=0 then (case when dat.formapago='EGRESOS' then dat.importe end ) end
		where liquidacion_id=dat.liquidacion_id;
	end if;
  end loop;
  return query select
		v.liquidacion_id ,
		v.fecha_liquidacion ,
		v.dni ,
		v.colaborador ,
		v.DEPOSITO ,
		v.TARJETA ,
		v.EFECTIVO ,
		v.CREDITO ,
		v.EGRESOS ,
		tc.imp_saldo_final,
		tc.imp_recibido,
		tc.imp_diferencia,
		tc.liquidado
  from tmp_liquidacion_val V
	inner join  planillas.tbl_turnocolaborador tc on v.liquidacion_id =tc.liquidacion_id;
end;$$
language 'plpgsql';

CREATE OR REPLACE VIEW caja.v_liquidacion_diaria_cajas AS
 SELECT v.liquidacion_id,
    v.fecha_liquidacion,
    p.doc_persona AS dni,
    p.nombre_razon AS colaborador,
    upper(v.formapago::text) AS formapago,
        CASE
            WHEN v.formapago::text = 'EFECTIVO'::text THEN sum(v.imp_soles) - COALESCE(x.importe, 0::numeric)
            ELSE sum(v.imp_soles)
        END AS importe,
    caj.correo_liq,
    v.id_caja,
    COALESCE(x.importe, 0::numeric) AS apertura,
    COALESCE(z.importe, 0::numeric) AS imp_credito
   FROM caja.v_liquidacion_ventas_contado v
     JOIN planillas.tbl_turnocolaborador tr ON tr.liquidacion_id = v.liquidacion_id
     JOIN planillas.tbl_persona p ON p.id_persona::text = tr.id_colaborador::text
     JOIN caja.tbl_cajabanco caj ON caj.id_cajabanco = v.id_caja
     LEFT JOIN ( SELECT tbl_movcaja.id_movimcaja AS movimiento_id,
            tbl_movcaja.id_sucursal AS sucursal_id,
            tbl_movcaja.imp_movimiento AS importe,
            tbl_movcaja.apertura
           FROM caja.tbl_movcaja
          WHERE tbl_movcaja.apertura IS TRUE) x ON x.movimiento_id = tr.movimiento_id AND x.sucursal_id = tr.movisucursal_id
     LEFT JOIN ( SELECT sum(cc.imp_cuota) AS importe,
            c.liquidacion_id
           FROM creditos.tbl_credito c
             JOIN creditos.tbl_cuota cc ON c.id_credito = cc.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito
          GROUP BY c.liquidacion_id) z ON z.liquidacion_id = tr.liquidacion_id
  GROUP BY v.liquidacion_id, v.fecha_liquidacion, v.formapago, p.doc_persona, p.nombre_razon, caj.correo_liq, v.id_caja, x.importe, z.importe
  ORDER BY v.liquidacion_id, (upper(v.formapago::text));

delete from caja.tbl_Detmovpago where id_movimcaja in (select id_movimcaja  FROM CAJA.TBL_MOVCAJA WHERE APERTURA IS TRUE)

delete from caja.tbl_Detmovpago where id_movimcaja in (delete  FROM CAJA.TBL_MOVCAJA WHERE APERTURA IS TRUE)

select *from planillas.tbl_turnocolaborador

SELECT *FROM caja.v_liquidacion_ventas_contado

select *from caja.v_liquidacion_ventas_contado

SELECT *FROM ventas.tbl_solicitud_credito sc

select *from  ventas.v_listar_solicitud_credito

select *from ventas.tbl_solicitud_credito

select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (

select
	(
      select array_to_json(array_agg(row_to_json(d)))
      from (
        select  telefono
        from COMMON.tbl_telefono

      ) d
    ) as telefono
) t

create or replace view ventas.v_listar_solicitud_credito
as
SELECT sc.id,
    sc.id_sucursal,
	sc.fecha_registro,
    sc.serie,
    sc.numero,
    sc.fecha_solicitud,
    CASE WHEN cli.id_tipdocidentidad=2 then cli.doc_persona else '' end as dni,
	CASE WHEN cli.id_tipdocidentidad=4 then cli.doc_persona else '' end as ruc,
    cli.nombre_razon AS cliente,
	sc.cargo_cliente as cargo,
	dircli.direccion,
	scli.sector as ruta,
	scli.distrito,
	scli.provincia,
	scli.departamento,
	 cli.doc_persona AS doc_cliente,
	cli.nombre_razon AS nom_cliente,
	dircli.direccion AS dir_cliente,
	(select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  telefono
		from COMMON.tbl_telefono  tl
		where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t) as tlf_cliente,
	case when dircli.id_tipvivienda=2 then '(X)' ELSE '( )' END as alquilada,
	case when dircli.id_tipvivienda=3 then '(X)' ELSE '( )' END as familiar,
	case when dircli.id_tipvivienda=1 then '(X)' ELSE '( )' END  as propia,
	sc.trabajo_actual_cliente as trabajo_actual,
	sc.dir_trabajo_cliente as direccion_trabajo,
	es.descripcion as estado_civil,
	sc.ocupacion_cliente as ocupacion,
	sc.profecion_cliente as profecion,
	sc.ingresos_cliente,
	sc.otros_ingresos_cliente,
	'' as cargo_conyuge,
	'' as ing_mensual_conyuge,
	sc.antiguedad_trabajo_cliente as antiguedad,
	'' edad,
    e.des_estado AS estado,
    COALESCE(sc.observaciones, ''::text) AS observaciones,
    to_char(sc.precio_lista,'9,999.99') as precio_lista,
    to_char(sc.inicial,'9,999.99') inicial,
    sc.imp_debe_inicial,
    sc.imp_debe_dias,
    sc.nro_cuotas,
    sc.intervalo_dias,
    sc.intervalo_entre_cuotas,
    sc.imp_tasa,
    sc.dias_gracia,
    sc.fec_primer_vencimiento,
    COALESCE(sc.imp_interes_cuota, 0::numeric) AS imp_interes_cuota,
    COALESCE(sc.imp_capital_cuota, 0::numeric) AS imp_capital_cuota,
   to_char( COALESCE(sc.importe_cuotas, 0::numeric),'9,999.99') AS importe_cuotas,
    sc.importe_financiamiento,
    sc.monto_afinanciar,
    sc.id_cliente,
    sc.id_dircliente,
    sc.id_evaluacioncliente,
    sc.id_cliente_conyuge,
    sc.id_dircli_conyuge,
    sc.id_garante,
    cony.doc_persona AS doc_conyugue,
    cony.nombre_razon AS nom_conyugue,
    dirc.direccion AS dir_conyugue,
	'' AS trabajo_actual_conyuge,
	''AS direccion_trabajo_conyuge,
	'' AS antiguedad_conyuge,
	'' as ingreso_mensual_conyuge,
	aval.dni as doc_garante,
	aval.apellidos || ' ' || aval.nombres as nombre_garante,
	aval.direccion as dir_garante,
	avalubi.sector as localidad_garante,
	avalubi.distrito as nom_dist_aval,
	avalubi.provincia as nom_prov_aval,
	avalubi.departamento as nom_dep_aval,
	'' as tlf_garante,
	'' as dni_conyugue,
	'' as nom_ape_conyugue,
	'' as trabajo_conyugue,
	'' as antiguedad_conyugue,
	case when aval.id_tipvivienda=1 then '(X)' ELSE '( )' END  as alquilada_aval,
	case when aval.id_tipvivienda=2 then '(X)' ELSE '( )' END as propia_aval,
	case when aval.id_tipvivienda=3 then '(X)' ELSE '( )' END as familia_aval,
	aval.ocupacion as ocupacion_garante,
	'' as edad_aval,
	aval.direcc_trabajo as dirtrab_garante,
	aval.cargo as cargo_aval,
	aval.ing_mensual as ingreso_garante,
	aval.antiguedad as antiguedad_aval,
	aval.celular as telefono_conyugue,

    vend.id_persona AS id_vendedor,
    vend.nombre_razon AS vendedor,
    COALESCE(aval.dni, ''::bpchar) AS dni_aval,
        CASE sc.aprobado
            WHEN 1 THEN 'En evaluación'::text
            WHEN 2 THEN 'Aprobado'::text
            WHEN 3 THEN 'Rechazado'::text
            ELSE NULL::text
        END AS estado_solicitud,
    sc.aprobado,
    cp.id_moneda,
    cp.id_tipoventa,
    cp.id_operacion,
    COALESCE(cp.tipdocumento, ''::text) AS tipdocumento,
    tv.descripcion_larga AS tipo_venta,
    cp.id_cotizapreventa,
    cp.id_sucursal AS id_sucursal_preventa,
    m.simbolo AS moneda,
    (( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
             JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa = dp.id_cotizapreventa AND p.id_sucursal = dp.id_sucursal
          WHERE p.id_cotizapreventa = cp.id_cotizapreventa AND p.id_sucursal = cp.id_sucursal AND dp.id_estado = 1)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
             JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal
          WHERE f.id_cotizapreventa = cp.id_cotizapreventa AND f.id_sucursalpreventa = cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente,
    COALESCE(xfc.facturado, 0::bigint) AS facturado,
    cp.serie AS serie_pedido,
    cp.numero AS numero_pedido,
    cp.imp_bruto,
    cp.imp_dscto,
    cp.valor_venta,
    cp.imp_igv,
    cp.imp_total,
    cp.id_estado AS id_estado_preventa,
    COALESCE(cp.imp_percepcion, 0::numeric)::numeric(20,4) AS imp_percepcion,
    COALESCE(cp.imp_neto, 0::numeric)::numeric(20,4) AS imp_neto,
	'' as nro_serie,
	'' as modelo,
	'' as color,
	'' as marca,
	'' recibos
   FROM ventas.tbl_solicitud_credito sc
     JOIN ventas.tbl_direccion dircli ON dircli.id_direccion = sc.id_dircliente AND dircli.id_persona::text = sc.id_cliente::text
     JOIN common.v_datosubigeo scli ON scli.id_sector = dircli.id_sector
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dircli.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = sc.id_vendedor::text
     JOIN ventas.tbl_cotizacionpreventa cp ON cp.solicitud_credito_id = sc.id AND cp.sucursal_solicitud_credito_id = sc.id_sucursal
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = cp.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = cp.id_moneda
     JOIN planillas.tbl_estadocivil es on es.id_estadocivil=cli.id_estadocivil
     LEFT JOIN ventas.tbl_direccion dircoop ON dircoop.id_direccion = sc.id_dircli_conyuge AND dircoop.id_persona::text = sc.id_cliente_conyuge::text
     LEFT JOIN common.v_datosubigeo scoop ON scoop.id_sector = dircoop.id_sector
     LEFT JOIN planillas.tbl_persona coop ON coop.id_persona::text = dircoop.id_persona::text
     LEFT JOIN ventas.tbl_contacto aval ON aval.id_contacto = sc.id_garante::bpchar
	   LEFT JOIN common.v_datosubigeo avalubi ON avalubi.id_sector = aval.id_sector
	 left join  ventas.tbl_tipovivienda tvalval ON tvalval.id_tipvivienda=avaL.id_tipvivienda
     LEFT JOIN ventas.tbl_direccion dirc ON dirc.id_direccion = sc.id_dircli_conyuge
     LEFT JOIN planillas.tbl_persona cony ON cony.id_persona::text = dirc.id_persona::text
     LEFT JOIN common.v_datosubigeo ubi_cony ON ubi_cony.id_sector = dirc.id_sector
     LEFT JOIN ( SELECT fc.id_cotizapreventa,
            fc.id_sucursalpreventa,
            count(1) AS facturado
           FROM ventas.tbl_facturacion fc
          WHERE fc.id_estado = 1
          GROUP BY fc.id_cotizapreventa, fc.id_sucursalpreventa) xfc ON xfc.id_cotizapreventa = cp.id_cotizapreventa AND xfc.id_sucursalpreventa = cp.id_sucursal
     JOIN common.tbl_estado e ON e.id_estado = sc.id_estado;

CREATE OR REPLACE VIEW compras.v_exportar_compras_otros_sistemas
as
 SELECT to_char(c.fec_documento::date,'dd/MM/yyyy') AS fecha_emision,
        CASE c.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
			WHEN 36 THEN '02'::text
			WHEN 6 THEN '14'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    c.serie AS nro_serie,
    c.nro_doc_compra AS nro_comprobante,
        CASE
            WHEN length(prov.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
    prov.doc_persona AS doc_cliente,
    prov.nombre_razon::text ||
        CASE
            WHEN c.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN c.id_operacion = 2 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_total *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS va_exonerado,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_afecto *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS va_afecto,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_igv *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS igv,
        CASE
            WHEN c.id_estado = 7 THEN 0::numeric
            ELSE c.imp_total *
            CASE
                WHEN c.id_moneda = 2 THEN c.tipo_cambio
                ELSE 1::numeric
            END
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS total,
    c.id_comprobante,
    c.id_dirproveedor,
    c.id_proveedor,
    c.id_sucursalcompra,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || c.serie::text) || '-'::text) || c.nro_doc_compra::text AS nro_documento,
    'SON :'::text || fu_numero_letras(c.imp_total *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END) AS tot_letras,
    c.imp_venta *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS imp_venta,
    c.imp_igv *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    ((c.id_compra::text || c.id_sucursalcompra::text) || c.anio::text) || c.id_mes::text AS codigo_compra,
    m.id_moneda,
    c.id_operacion,
    c.id_tipocompra,
    c.id_compra,
    cp.id_comprobante AS idtipcomprobante,
    c.id_estado,
    s.id_empresa,
    c.tipo_cambio AS tipocambio,
    c.referencia_ncr,
    c.fec_ingsistema AS fechareg,
    c.serie_nc,
    c.fecha_nc,
    COALESCE(ref.serie_ref, ''::bpchar) AS serie_ref,
    COALESCE(ref.numero_ref, ''::bpchar) AS numero_ref,
    COALESCE(ref.fecha_ref, ''::text) AS asfecha_ref,
    COALESCE(ref.codigosunat_ref, ''::text) AS codigosunat_ref,
    c.nrooperacion_detatracion,
    c.imp_detraccion,
        CASE
            WHEN COALESCE(c.nrooperacion_detatracion, ''::character varying)::text <> ''::text THEN COALESCE(to_char(c.fec_pago, 'dd/MM/yyyy'::text), ''::text)
            ELSE ''::text
        END AS fec_pago,
        CASE
            WHEN c.id_tipocompra = 1 THEN COALESCE(to_char(c.fec_documento, 'dd/MM/yyyy'::text), ''::text)
            ELSE COALESCE(to_char(c.fec_documento + ((c.dias_credito::text || ' day'::text)::interval), 'dd/MM/yyyy'::text), ''::text)
        END AS fec_vencimiento,
    c.id_mes,
    c.anio,
    c.dias_credito,
    COALESCE(z.nro_cuenta,'60111') as cuenta
   FROM compras.tbl_compra c
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = c.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = c.id_tipocompra
     JOIN common.tbl_estado e ON e.id_estado = c.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = c.id_dirproveedor AND dc.id_persona::text = c.id_proveedor::text
     JOIN planillas.tbl_persona prov ON prov.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = c.id_sucursalcompra
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = c.id_tipocambio
     left join (select distinct cta.nro_cuenta,egr.id_sucursalcompra,egr.id__compra from compras.tbl_detegreso egr
		inner join common.tbl_concepto cto on cto.id=egr.id_concepto::integer and cto.id_estado=1
		inner join contabilidad.tbl_configuracioncuenta cc on cc.concepto_id=cto.id and cc.id_estado=1
		inner join contabilidad.tbl_plancuenta cta on cta.id_plancuenta=cc.id_cuentadebe
     where egr.id_estado=1) z on z.id_sucursalcompra=c.id_sucursalcompra and z.id__compra=c.id__compra
     LEFT JOIN ( SELECT cref.id__compra,
            cref.id_sucursalcompra,
            cref.serie AS serie_ref,
            cref.nro_doc_compra AS numero_ref,
            to_char(cref.fec_documento, 'dd/MM/yyyy'::text) AS fecha_ref,
            cpref.codigosunat AS codigosunat_ref
           FROM compras.tbl_compra cref
             JOIN common.tbl_comprobante cpref ON cpref.id_comprobante = cref.id_comprobante
          WHERE cref.nota_credito = false AND cref.nota__debito = false) ref ON c.id__compra__ref = ref.id__compra AND c.id__sucursal__ref = ref.id_sucursalcompra
  WHERE c.id_estado = 1
  ORDER BY c.fec_ingsistema;

CREATE OR REPLACE VIEW contabilidad.v_pivotlibroventas
AS
 SELECT v_regventascontabilidad.fecha,
    v_regventascontabilidad.tipodoc,
    v_regventascontabilidad.serie,
    v_regventascontabilidad.numero,
    v_regventascontabilidad.codigo,
    v_regventascontabilidad.cliente,
    sum(v_regventascontabilidad.valor_venta) AS valor_venta,
    sum(v_regventascontabilidad.imp_igv) AS imp_igv,
    sum(v_regventascontabilidad.valor_venta) + sum(v_regventascontabilidad.imp_igv) AS total,
    v_regventascontabilidad.codigo_tdo,
    v_regventascontabilidad.estado_das,
    v_regventascontabilidad.codigo_movtabla,
    v_regventascontabilidad.id_empresa,
    v_regventascontabilidad.id_sucursal,
    v_regventascontabilidad.id_mes,
    v_regventascontabilidad.anio
   FROM contabilidad.v_regventascontabilidad
  GROUP BY v_regventascontabilidad.fecha,
  v_regventascontabilidad.tipodoc,
  v_regventascontabilidad.serie,
   v_regventascontabilidad.numero,
   v_regventascontabilidad.codigo,
   v_regventascontabilidad.cliente,
   v_regventascontabilidad.codigo_tdo,
   v_regventascontabilidad.estado_das,
   v_regventascontabilidad.codigo_movtabla,
   v_regventascontabilidad.id_empresa,
   v_regventascontabilidad.id_sucursal,
   v_regventascontabilidad.id_mes,
   v_regventascontabilidad.anio;

create or replace view common.v_datosubigeo
as
select s.sector,z.zona,dist.distrito,prov.provincia,dpto.departamento,s.id_sector,z.id_zona,dist.id_distrito,prov.id_provincia,dpto.id_dpto
from    ventas.tbl_sector s
inner join ventas.tbl_zona z on z.id_zona=s.id_zona
inner join common.tbl_distrito dist on dist.id_distrito=z.id_distrito
inner join common.tbl_provincia prov on prov.id_provincia=dist.id_provincia
inner join common.tbl_dpto dpto on dpto.id_dpto=prov.id_dpto

select *from common.v_ubigeo

select *from ventas.v_solicitud_credito

create or replace view ventas.v_solicitud_credito
as
select
id,--0
sc.id_sucursal,--1
sc.serie,--2
sc.numero,--3
fecha_solicitud,--4
cli.doc_persona,--5
cli.nombre_razon as cliente,--6
e.des_Estado as estado,--7
COALESCE(sc.observaciones,'') as observaciones ,--8
sc.precio_lista,--9
sc.inicial,--10
sc.imp_debe_inicial,--11
sc.imp_debe_dias,--12
sc.nro_cuotas,--13
sc.intervalo_dias,--14
sc.intervalo_entre_cuotas,--15
sc.imp_tasa,--16
sc.dias_gracia,--17
sc.fec_primer_vencimiento,--18
COALESCE(sc.imp_interes_cuota,0) as imp_interes_cuota,--19
COALESCE(sc.imp_capital_cuota,0) as imp_capital_cuota,--20
COALESCE(sc.importe_cuotas,0) as importe_cuotas,--21
sc.importe_financiamiento,--22
sc.monto_afinanciar,--23
sc.id_cliente ,--24
sc.id_dircliente,--25
sc.id_evaluacioncliente ,--26
sc.id_cliente_conyuge ,--28
sc.id_dircli_conyuge ,--28
sc.id_garante,--29
cli.doc_persona as doc_cliente,--30
cli.nombre_razon as nom_cliente,--31
dircli.direccion as dir_cliente ,--32
cony.doc_persona as doc_conyugue,--33
cony.nombre_razon as nom_conyugue,--34
dirc.direccion as dir_conyugue ,--35
vend.id_persona as id_vendedor,--36
vend.nombre_razon as vendedor,--37
COALESCE(aval.dni,'') as dni_aval,--38
  case sc.aprobado
  when 1  then 'En evaluación'
  when 2  then 'Aprobado'
  when 3  then 'Rechazado'
  end as estado_solicitud,--39
  sc.aprobado,--40
  cp.id_moneda,--41
  cp.id_tipoventa,--42
  cp.id_operacion,--43
  COALESCE(cp.TIPDOCUMENTO,'') as TIPDOCUMENTO,--44
  TV.DESCRIPCION_LARGA AS TIPO_VENTA,--45
  cp.id_cotizapreventa,--46
  cp.id_sucursal as id_sucursal_preventa, --47
  M.SIMBOLO AS MONEDA, --48
  (( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
      JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa=dp.id_cotizapreventa and p.id_sucursal=dp.id_sucursal
     WHERE p.id_cotizapreventa = cp.id_cotizapreventa and p.id_sucursal=cp.id_sucursal and dp.id_estado=1)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE f.id_cotizapreventa = cp.id_cotizapreventa and f.id_sucursalpreventa=cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente,-- 49
     COALESCE(xfc.facturado,0) as facturado, --50
	cp.serie as serie_pedido,--51
	cp.numero as numero_pedido,--52
	CP.IMP_BRUTO,--53
	CP.IMP_DSCTO,--54
	CP.VALOR_VENTA,--55
	CP.IMP_IGV,--56
	CP.IMP_TOTAL,--57
	cp.id_estado as id_estado_preventa,--58
	COALESCE(cp.imp_percepcion,0)::numeric(20,4) as imp_percepcion,--59
	COALESCE(cp.imp_neto,0)::numeric(20,4) as imp_neto,--60
	 sc.ocupacion_cliente ,--61
	 sc.profecion_cliente ,--62
	 sc.trabajo_actual_cliente ,--63
	 sc.cargo_cliente  ,--64
	 sc.dir_trabajo_cliente  ,--65
	 sc.antiguedad_trabajo_cliente ,--66
	 sc.ingresos_cliente  ,--67
	 sc.otros_ingresos_cliente  ,--68
	 sc.ocupacion_conyuge ,--69
	 sc.profecion_conyuge ,--70
	 sc.trabajo_actual_conyuge ,--71
	 sc.cargo_conyuge  ,--72
	 sc.dir_trabajo_conyuge  ,--73
	 sc.antiguedad_trabajo_conyuge ,--74
	 sc.ingresos_conyuge  ,--75
	 sc.otros_ingresos_conyuge --76

from ventas.tbl_solicitud_credito sc
inner join ventas.tbl_direccion dircli on dircli.id_direccion=sc.id_dircliente and dircli.id_persona=sc.id_cliente
inner join common.v_datosubigeo scli on  scli.id_sector=dircli.id_sector
inner join planillas.tbl_persona cli on cli.id_persona=dircli.id_persona
inner join planillas.tbl_persona vend on vend.id_persona=sc.id_vendedor
inner join ventas.tbl_cotizacionpreventa CP on cp.solicitud_credito_id=sc.id and cp.sucursal_solicitud_credito_id=sc.id_sucursal
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
left join ventas.tbl_direccion dircoop on dircoop.id_direccion=sc.id_dircli_conyuge and dircoop.id_persona=sc.id_cliente_conyuge
left join common.v_datosubigeo scoop on  scoop.id_sector=dircoop.id_sector
left join planillas.tbl_persona coop on coop.id_persona=dircoop.id_persona
left join ventas.tbl_contacto aval on aval.id_contacto=sc.id_garante
left join ventas.tbl_direccion dirc on dirc.id_direccion=sc.id_dircli_conyuge
left join planillas.tbl_persona cony on cony.id_persona=dirc.id_persona
left join common.v_datosubigeo ubi_cony on  ubi_cony.id_sector=dirc.id_sector
left join (select fc.id_cotizapreventa, fc.id_sucursalpreventa ,count(1) as facturado from ventas.tbl_facturacion fc
	where fc.id_estado=1
	group by fc.id_cotizapreventa, fc.id_sucursalpreventa
	) xfc on xfc.id_cotizapreventa=cp.id_cotizapreventa and xfc.id_sucursalpreventa=cp.id_sucursal
inner join common.tbl_estado e on e.id_estado=sc.id_estado

select *from ventas.tbl_cotizacionpreventa
select *from ventas.tbl_contacto
select *from ventas.tbl_cotizacionpreventa
select *from ventas.tbl_contacpersona
select *from planillas.tbl_persona
select *from ventas.tbl_solicitud_credito sc

select *from VENTAS.v_contactopersona

select * from VENTAS.fn_solicitud_credito(1,0,1,NULL,14,'0001','0000003',NULL,'1500.00','0',4,'375.00','1500.00','1500.00','1',0,0,0,1,'1    ','00807451',177,0,NULL,0,NULL,0,'20',1,'',NULL,NULL,0,0,'2018-10-09 22:51:32.588',NULL,'0',1)

select *from ventas.tbl_solicitud_credito

"- DISPENSADOR ALFANO LM-YL1-801B-3
- PLANCHA IMACO ID1"

select *from ALMACEN.FN_GET_PRODUCTOS_VENTAS(25,1)

CREATE OR REPLACE FUNCTION ALMACEN.FN_GET_PRODUCTOS_VENTAS(
	_id_facturacion integer,
	_id_sucursal integer
)
RETURNS TEXT AS $$
DECLARE
	_data record;
	_res text;
	ind integer;
BEGIN
	ind:=0;
	for _data in select CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE ((split_part(p.descripcion_larga::text, ','::text, 1) || '
'::text) || COALESCE(almacen.fn_getseriesventas(df.id_facturacion::bigint, df.id_sucursal, df.id_producto, df.id_unidadventa), ''::text))
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,df.id_facturacion,df.id_sucursal from ventas.tbl_detfacturacion df
	inner join almacen.tbl_producto p on p.id_producto=df.id_producto
	where df.id_facturacion=_id_facturacion and df.id_sucursal=_id_sucursal
	group by p.descripcion_larga ,df.id_facturacion,df.id_sucursal ,df.id_producto,df.descripcion_linea,df.id_unidadventa,df.precio
	loop
		if ind=0 then
			_res:='
- '||     _data.producto;
		else
			_res:=_res || E'\n'  || '
- '|| _data.producto ;
		end if;

		ind:=ind+1;
	end loop;
return _res || '
';
END;$$
LANGUAGE 'plpgsql';

create or replace view ventas.v_info_contrato
as
select
cli.doc_persona,
cli.nombre_razon as cliente,
dir.direccion || ' - ' || (trim(dpc.departamento) || '-' || trim(pc.provincia) || '-' || trim(dc.distrito)) as direccion ,
trunc(f.imp_total,2) as imp_total,
trunc(COALESCE(cc_ini.imp_inicial,0),2) as imp_inicial,
trunc(COALESCE(cc_cuota.imp_cuota,0),2) as imp_cuota,
to_char(f.fecha_venta  ,'dd/MM/yyyy') as fecha,
f.id_facturacion,
f.id_sucursal,
COALESCE(z.garante,'________________________________________') as garante,
COALESCE(z.dni,'____________________') as dni_garante,
COALESCE(z.dni_conyuge,'____________________') as dni_conyuge,
COALESCE(z.nomape_conyuge,'__________________________________________________') as nomape_conyuge,
COALESCE(z.direccion,'____________________________________________________________') as direccion_garante,
ALMACEN.FN_GET_PRODUCTOS_VENTAS (f.id_facturacion,f.id_sucursal) as producto
from ventas.tbl_facturacion f
/*inner join (select max(importe) as importe,p.descripcion_larga as producto,df.id_facturacion,df.id_sucursal from ventas.tbl_detfacturacion df
	inner join almacen.tbl_producto p on p.id_producto=df.id_producto
	group by p.descripcion_larga ,df.id_facturacion,df.id_sucursal

 ) zdf on zdf.id_facturacion=f.id_facturacion and zdf.id_sucursal=f.id_sucursal
 */
inner join ventas.tbl_direccion dir on dir.id_direccion=f.id_direccion and dir.id_persona=f.id_cliente
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona
inner join ventas.tbl_sector sc on (sc.id_sector=dir.id_sector)
inner join ventas.tbl_zona zc on (zc.id_zona=sc.id_zona)
inner join common.tbl_distrito dc on (dc.id_distrito=zc.id_distrito)
inner join common.tbl_provincia pc on (pc.id_provincia=dc.id_provincia)
inner join common.tbl_dpto dpc on (dpc.id_dpto=pc.id_dpto)
left join (select cp.id_persona,dni,apellidos || ' ' || nombres as garante,dni_conyuge,nomape_conyuge,direccion || ' - ' || (trim(dp.departamento) || '-' || trim(p.provincia) || '-' || trim(distrito)) as direccion
	from ventas.tbl_contacpersona cp
	inner join ventas.tbl_contacto c on c.id_contacto=cp.id_contacto
	inner join ventas.tbl_sector s on (s.id_sector=c.id_sector)
	  inner join ventas.tbl_zona z on (z.id_zona=s.id_zona)
	  inner join common.tbl_distrito d on (d.id_distrito=z.id_distrito)
	  inner join common.tbl_provincia p on (p.id_provincia=d.id_provincia)
	  inner join common.tbl_dpto dp on (dp.id_dpto=p.id_dpto)
) z on z.id_persona=cli.id_persona
left join (
	select vc.id_facturacion,vc.id_sucursal ,sum(cc.imp_cuota) as imp_inicial from creditos.tbl_ventacredito vc
	inner join creditos.tbl_credito cr on cr.id_credito=vc.id_credito and cr.id_sucursal_credito=vc.id_sucursal_credito
	inner join creditos.tbl_cuota cc on cr.id_credito=cc.id_credito and  cr.id_sucursal_credito=cc.id_sucursal_credito
	where cc.nro_cuota=0
	group by vc.id_facturacion,vc.id_sucursal
) as cc_ini on cc_ini.id_facturacion=f.id_facturacion and cc_ini.id_sucursal=f.id_sucursal
left join (
	select  vc.id_facturacion,vc.id_sucursal ,max(cc.imp_cuota) as imp_cuota  from creditos.tbl_ventacredito vc
	inner join creditos.tbl_credito cr on cr.id_credito=vc.id_credito and cr.id_sucursal_credito=vc.id_sucursal_credito
	inner join creditos.tbl_cuota cc on cr.id_credito=cc.id_credito and  cr.id_sucursal_credito=cc.id_sucursal_credito

	where cc.nro_cuota not in(0,-1)
	group by vc.id_facturacion,vc.id_sucursal

) as cc_cuota on cc_cuota.id_facturacion=f.id_facturacion and cc_cuota.id_sucursal=f.id_sucursal

--where z.id_persona is not null

select *from creditos.tbl_cuota where id_credito=20 and  id_sucursal_credito=1

select *from ventas.tbl_facturacion

select *from planillas.tbl_persona
select *from ventas.tbl_contacto
-- Creacion de la vista de la tabla tbl_grupo
create or replace view almacen.v_family_mobil
as
SELECT id_familia as id,
  f.descripcion_larga as name,
  f.descripcion_corta as shortName,
  e.des_estado as status,
  g.descripcion_corta as group
FROM almacen.tbl_familia f
inner join common.tbl_estado e on f.id_estado=e.id_estado
inner join almacen.tbl_grupo g on f.id_grupo = g.id_grupo;

create or replace view ventas.v_pendiens_despacho
as
select
f.numdoc_facturacion,
f.serie_facturacion,
f.id_comprobante,
f.id_direccion,
f.id_cliente,
f.id_sucursal,
( CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END )::varchar(12) AS documento,
        (CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END)::varchar(500) AS cliente,
--c.doc_persona as documento,
--c.nombre_razon as cliente,
dc.direccion,
f.fecha_venta,
cp.descripcion_corta || '/'||f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
f.valor_venta,
f.imp_igv,
f.imp_total,
m.simbolo as moneda,
tv.descripcion_larga as tipo_venta,
e.des_estado as estado,
(f.id_facturacion::text  ||f.id_sucursal::text) as codigo_venta,
m.id_moneda,
f.id_operacion,
f.id_tipoventa,
f.id_facturacion,
f.nota_credito,
s.id_empresa,
COALESCE(x.cantidad,0) as cant_facturado,
COALESCE(z.cantidad,0) as cant_despachado
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join common.tbl_tipoventa tv on (tv.id_tipoventa=f.id_tipoventa)
inner join common.tbl_estado e on (e.id_estado=f.id_estado)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join common.tbl_sucursal s on s.id_sucursal=f.id_sucursal
LEFT JOIN (
	SELECT codigorefk, sum(dmv.cantidad) as cantidad FROM ALMACEN.TBL_CABMOVALM C
	inner join almacen.tbl_detmovalm dmv on c.id_movimiento=dmv.id_movimiento
	WHERE TABLA='tbl_facturacion'  and c.id_estado=1 and dmv.id_estado=1
	group by codigorefk
) z on z.codigorefk=f.id_sucursal::text || '-'||f.id_facturacion::text
left join (
	select df.id_facturacion,df.id_sucursal,sum(df.cantidad)as cantidad from ventas.tbl_detfacturacion df
	where df.id_estado=1
	group by df.id_facturacion,df.id_sucursal
) x on x.id_facturacion=f.id_facturacion and x.id_sucursal=f.id_sucursal

where (COALESCE(x.cantidad,0)-COALESCE(z.cantidad,0))>0

select *from ventas.tbl_detfacturacion

create or replace view ventas.v_det_facturacion_pendiente_despacho
as
select
df.item,
df.id_producto,
df.id_almacen,
case when TRIM(df.id_producto)='TXT-01' then df.descripcion_linea else
(split_part(p.descripcion_larga,',',1)  )
 end || case when df.precio=0 then E'\nTRANSFERENCIA GRATUITA' else '' end as producto,
'0.00'::numeric(20,4) as stock,
u.desc_corta as unidad,
sum(df.cantidad) as cantidad,
df.lista,
df.precio,
df.imp_dscto,
df.importe as tot_detalle,
'+'::text agregar,
dp.id_unidadventa,
df.id_listaprecio,
(df.precio*df.cantidad-df.imp_igv)::numeric(20,4) as subtotal,
case when f.id_operacion=1 then igv.imp_igv else 0 end  as porcent_igv,
df.precio*df.cantidad as imp_bruto,
sum(df.cantidad)-COALESCE(z.cantidad,0) as cantidad_pendiente,
p.servicio as ctrl_sctok,
tp.coste,
df.id_estado,
dp.val_unidad,
dp.val_minimo,
df.imp_igv,
df.id_facturacion,
df.id_sucursal,
dp.id_unidadventa as idunimedcontrolventa,
dp.val_unidad as val_controlventa,
p.codigo
from   ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa and df.id_estado=1)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
--inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=df.id_unimedventa)
inner join common.tbl_igv igv on (igv.id_igv=f.id_igv)
LEFT JOIN (
	SELECT codigorefk, sum(dmv.cantidad) as cantidad,dmv.id_producto, dmv.id_unidadkardex FROM ALMACEN.TBL_CABMOVALM C
	inner join almacen.tbl_detmovalm dmv on c.id_movimiento=dmv.id_movimiento
	WHERE TABLA='tbl_facturacion' and dmv.id_estado=1 and c.id_estado=1
	group by codigorefk,id_producto, id_unidadkardex
	) z on z.codigorefk=f.id_sucursal::text || '-'||f.id_facturacion::text and df.id_producto=z.id_producto and df.id_unidadventa=z.id_unidadkardex
where df.id_estado=1
group by
igv.imp_igv,
f.id_operacion,
p.descripcion_larga,
df.descripcion_linea,
df.item,
df.id_producto,
df.id_almacen,
df.lista,
u.desc_corta ,
df.precio,
df.imp_dscto,
df.importe  ,
dp.id_unidadventa,
df.id_listaprecio,
df.cantidad ,
p.servicio ,
tp.coste,
df.id_estado,
dp.val_unidad,
dp.val_minimo,
df.imp_igv,
df.id_facturacion,
df.id_sucursal,
dp.id_unidadventa  ,
dp.val_unidad ,
p.codigo,
z.cantidad
order by df.item

CREATE OR REPLACE VIEW restaurant.v_comanda
AS
 SELECT DISTINCT m.id_mesa::text as table_id,
    m.nro_mesa as Table,
    m.nro_sillas::text as chairs,
    s.nombre AS room,
    su.nombre AS branch,
    e.des_estado AS status,
    m.x::text as x,
    m.y::text as y,
    m.id_salon::text as room_id,
    m.id_estado::text as status_id,
    COALESCE(mc.ocupado, false) AS occupied,
    COALESCE(mc.id_cotizapreventa, 0::bigint)::text AS order_id,
    su.id_sucursal::text as branch_id,
    COALESCE(mc.id_mesacomanda, 0::bigint)::text AS command_id
   FROM restaurant.tbl_mesa m
     JOIN restaurant.tbl_salon s ON s.id_salon = m.id_salon
     JOIN common.tbl_sucursal su ON su.id_sucursal = s.id_sucursal
     JOIN common.tbl_estado e ON e.id_estado = s.id_estado
     LEFT JOIN ( SELECT sum(dc.cantidad) - COALESCE(z.cantidad, 0::numeric) AS saldopendiente,
            mc_1.id_cotizapreventa,
            mc_1.id_mesacomanda,
                CASE
                    WHEN (sum(dc.cantidad) - COALESCE(z.cantidad, 0::numeric)) > 0::numeric THEN true
                    ELSE false
                END AS ocupado,
            mc_1.id_mesa,
            mc_1.nombre_union
           FROM restaurant.tbl_comandamesa mc_1
             JOIN ventas.tbl_detpreventacotiza dc ON dc.id_cotizapreventa = mc_1.id_cotizapreventa
             LEFT JOIN ( SELECT sum(df.cantidad) AS cantidad,
                    f.id_cotizapreventa,
                    f.id_sucursalpreventa,
                    f.id_facturacion
                   FROM ventas.tbl_facturacion f
                     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion
                  WHERE df.id_estado = 1 AND f.id_estado = 1
                  GROUP BY f.id_cotizapreventa, f.id_sucursalpreventa, f.id_facturacion) z ON z.id_cotizapreventa = mc_1.id_cotizapreventa
          WHERE mc_1.id_estado = 1 AND z.id_facturacion IS NULL
          GROUP BY z.cantidad, mc_1.id_cotizapreventa, mc_1.id_mesacomanda, mc_1.ocupado, mc_1.id_mesa, mc_1.nombre_union) mc ON mc.id_mesa = m.id_mesa
	 order by m.nro_mesa asc
          ;

select *from creditos.v_letras_pendientes_x_cobrar where id_sucursal=2

select *from creditos.v_creditos_x_cobrar

select * from creditos.v_letras_pendientes_x_cobrar  where mora>0 and  id_cliente='43580245'

CREATE OR REPLACE VIEW creditos.v_letras_pendientes_x_cobrar
AS
 SELECT cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    dpto.departamento,
    prov.provincia,
    dist.distrito,
    sec.sector,
    dir.referencia,
    cp.descripcion_corta AS tipo_doc,
    f.serie_facturacion AS serie,
    f.numdoc_facturacion AS numero,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_giro,
    to_char(cc.fec_vencimiento::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_vencimiento,
    mn.simbolo AS moneda,
    f.imp_neto AS imp_venta,
    COALESCE(inicial.imp_inicial, 0::numeric) AS imp_inicial,
    cr.imp_credito - COALESCE(inicial.imp_inicial, 0::numeric) AS imp_credito,
    cc.imp_cuota,
    COALESCE(pcr.imp_pago, 0::numeric) AS imp_pago,
    creditos.getfunccalmora(cc.id_cuotas)::numeric(20,4) AS mora,
        CASE
            WHEN (COALESCE(cc.imp_cuota, 0::numeric) + creditos.getfunccalmora(cc.id_cuotas)::numeric - COALESCE(pagc.imp_pago, 0::numeric))::numeric(20,4) > 0::numeric THEN (COALESCE(cc.imp_cuota, 0::numeric) + creditos.getfunccalmora(cc.id_cuotas)::numeric - COALESCE(pagc.imp_pago, 0::numeric))::numeric(20,4)
            ELSE 0::numeric
        END - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE nc.id_estado=1 and cc.id_cuotas = nc.id_cuota AND cr.id_credito = nc.id_credito AND cr.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_saldo,
    cc.nro_cuota,
    cc.id_cuotas AS id_cuota,
    f.id_facturacion::text || f.id_sucursal::text AS id_facturacion,
    f.id_cliente,
    f.id_sucursal,
    f.id_estado,
    suc.id_empresa,
    COALESCE(gar.garante,'') as garante,
    gar.dni AS dni_garante,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE cc.id_cuotas = nc.id_cuota AND cr.id_credito = nc.id_credito AND cr.id_sucursal_credito = nc.id_sucursal_cred and nc.id_estado=1), 0::numeric) AS imp_dscto,
     pagf.fecha_mov as ultimo_pago,
	COALESCE((select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  telefono
		from COMMON.tbl_telefono  tl
		where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t),'') as tlf_cliente,
   v.nombre_razon as vendedor,
   z.Zona,
   (cr.id_credito::text ||  cr.id_sucursal_credito::text) as id_creditocuenta
 --select *from ventas.tbl_zona
/*(select mc.fecha_mov from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito and cc.id_cuotas=dp.id_cuotas order by mc.fecha_mov desc limit 1  ) as ultimo_pago*/
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_moneda mn ON mn.id_moneda = f.id_moneda
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dist ON dist.id_distrito::text = z.id_distrito::text
     JOIN common.tbl_provincia prov ON prov.id_provincia::text = dist.id_provincia::text
     JOIN common.tbl_dpto dpto ON dpto.id_dpto::text = prov.id_dpto::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN creditos.tbl_ventacredito vc ON f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal AND vc.id_estado = 1
     JOIN creditos.tbl_credito cr ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
     JOIN creditos.tbl_cuota cc ON cr.id_credito = cc.id_credito AND cr.id_sucursal_credito = cc.id_sucursal_credito
     JOIN planillas.tbl_persona v on v.id_persona=f.id_vendedor
     LEFT JOIN ( SELECT cp_1.id_persona,
            co.dni,
            (co.apellidos || ' '::text) || co.nombres AS garante
           FROM ventas.tbl_contacpersona cp_1
             JOIN ventas.tbl_contacto co ON co.id_contacto = cp_1.id_contacto) gar ON gar.id_persona::text = f.id_cliente::text
     LEFT JOIN ( SELECT tbl_cuota.id_credito,
            tbl_cuota.id_sucursal_credito,
            max(tbl_cuota.fec_vencimiento::date) AS fec_vencimiento
           FROM creditos.tbl_cuota
          GROUP BY tbl_cuota.id_credito, tbl_cuota.id_sucursal_credito) ven ON ven.id_credito = cc.id_credito AND ven.id_sucursal_credito = cc.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            ccc.id_cuotas,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito, ccc.id_cuotas) pcr ON pcr.id_credito = cr.id_credito AND pcr.id_sucursal_credito = cr.id_sucursal_credito AND pcr.id_cuotas = cc.id_cuotas
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(mov.imp_movimiento) AS imp_inicial
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota = 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito) inicial ON inicial.id_credito = cr.id_credito AND inicial.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_cuotas,
            ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito, ccc.id_cuotas) pagc ON pagc.id_credito = cc.id_credito AND pagc.id_sucursal_credito = cc.id_sucursal_credito AND pagc.id_cuotas = cc.id_cuotas
     LEFT JOIN  (SELECT max(mc.fecha_mov) as fecha_mov,dp.id_credito,dp.id_sucursal_credito,dp.id_cuotas
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
	     where mc.id_estado=1
	     group by dp.id_credito,dp.id_sucursal_credito,dp.id_cuotas
         -- ORDER BY mc.fecha_mov DESC
         ) pagf on pagf.id_credito = cc.id_credito AND pagf.id_sucursal_credito = cc.id_sucursal_credito AND pagf.id_cuotas = cc.id_cuotas
  WHERE cc.nro_cuota <> 0 AND f.id_estado = 1 AND NOT (EXISTS ( SELECT 1
           FROM creditos.tbl_ventacredito vc_1
             JOIN ventas.tbl_facturacion f_1 ON f_1.id_facturacion = vc_1.id_facturacion AND f_1.id_facturacion = vc_1.id_sucursal_credito
          WHERE f.id_tipoventa=2 and vc_1.id_credito = cr.id_credito AND vc_1.id_sucursal_credito = cr.id_sucursal_credito AND (f_1.id_motivonotacredito = ANY (ARRAY['01'::bpchar, '02'::bpchar]))))
  ORDER BY f.id_cliente, cc.id_credito, cc.id_cuotas;

select *from creditos.v_letras_pendientes_x_cobrar

CREATE OR REPLACE VIEW creditos.v_historial_crediticio_cliente
AS
 SELECT cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    dpto.departamento,
    prov.provincia,
    dist.distrito,
    sec.sector,
    dir.referencia,
    cp.descripcion_corta AS tipo_doc,
    f.serie_facturacion AS serie,
    f.numdoc_facturacion AS numero,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_giro,
    to_char(cc.fec_vencimiento::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_vencimiento,
    mn.simbolo AS moneda,
    f.imp_neto AS imp_venta,
    COALESCE(inicial.imp_inicial, 0::numeric) AS imp_inicial,
    cr.imp_credito - COALESCE(inicial.imp_inicial, 0::numeric) AS imp_credito,
    cc.imp_cuota,
    COALESCE(pcr.imp_pago, 0::numeric) AS imp_pago,
    creditos.getfunccalmora(cc.id_cuotas)::numeric(20,4) AS mora,
        CASE
            WHEN (COALESCE(cc.imp_cuota, 0::numeric) + creditos.getfunccalmora(cc.id_cuotas)::numeric - COALESCE(pagc.imp_pago, 0::numeric))::numeric(20,4) > 0::numeric THEN (COALESCE(cc.imp_cuota, 0::numeric) + creditos.getfunccalmora(cc.id_cuotas)::numeric - COALESCE(pagc.imp_pago, 0::numeric))::numeric(20,4)
            ELSE 0::numeric
        END - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE cc.id_cuotas = nc.id_cuota AND cr.id_credito = nc.id_credito AND cr.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_saldo,
    cc.nro_cuota,
    cc.id_cuotas AS id_cuota,
    f.id_facturacion::text || f.id_sucursal::text AS id_facturacion,
    f.id_cliente,
    f.id_sucursal,
    f.id_estado,
    suc.id_empresa,
    gar.garante,
    gar.dni AS dni_garante,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE cc.id_cuotas = nc.id_cuota AND cr.id_credito = nc.id_credito AND cr.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_dscto,
	pag.fecha_mov,
        pag.descripcion_corta || '/' ||pag.serie || '-' || pag.numero as documento_mov,
	pag.imp_movimiento,
	(cr.id_credito::text ||  cr.id_sucursal_credito::text)::bigint as id_credito,
        pag.id_movimiento,
        (cc.id_cuotas::text || cc.id_credito::text || cc.id_sucursal_credito::text) as id_cuotas
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_moneda mn ON mn.id_moneda = f.id_moneda
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dist ON dist.id_distrito::text = z.id_distrito::text
     JOIN common.tbl_provincia prov ON prov.id_provincia::text = dist.id_provincia::text
     JOIN common.tbl_dpto dpto ON dpto.id_dpto::text = prov.id_dpto::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN creditos.tbl_ventacredito vc ON f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal AND vc.id_estado = 1
     JOIN creditos.tbl_credito cr ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
     JOIN creditos.tbl_cuota cc ON cr.id_credito = cc.id_credito AND cr.id_sucursal_credito = cc.id_sucursal_credito
     LEFT JOIN (select  (movc.id_movimcaja::TEXT || movc.id_sucursal::TEXT)::bigint AS id_movimiento,
			dp.id_credito,
			dp.id_sucursal_credito,
			dp.id_cuotas ,
			movc.fecha_mov,
			cp.descripcion_corta,
			serie,
			movc.numero ,
			movc.imp_movimiento
		from creditos.tbl_detpagocuota dp
		inner join caja.tbl_movcaja movc on movc.id_movimcaja =dp.id_movimcaja and movc.id_sucursal=dp.id_sucursal
		inner join common.tbl_comprobante cp on cp.id_comprobante=movc.id_comprobante
		order by (movc.id_movimcaja::TEXT || movc.id_sucursal)::bigint asc
		--inner join common.tbl_moneda m on m.id_moneda =movc.id_moneda
		--select *from caja.tbl_movcaja limit 10

	) pag on cc.id_credito=pag.id_credito and cc.id_sucursal_credito = pag.id_sucursal_credito and cc.id_cuotas=pag.id_cuotas
     LEFT JOIN ( SELECT cp_1.id_persona,
            co.dni,
            (co.apellidos || ' '::text) || co.nombres AS garante
           FROM ventas.tbl_contacpersona cp_1
             JOIN ventas.tbl_contacto co ON co.id_contacto = cp_1.id_contacto) gar ON gar.id_persona::text = f.id_cliente::text
     LEFT JOIN ( SELECT tbl_cuota.id_credito,
            tbl_cuota.id_sucursal_credito,
            max(tbl_cuota.fec_vencimiento::date) AS fec_vencimiento
           FROM creditos.tbl_cuota
          GROUP BY tbl_cuota.id_credito, tbl_cuota.id_sucursal_credito) ven ON ven.id_credito = cc.id_credito AND ven.id_sucursal_credito = cc.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            ccc.id_cuotas,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito, ccc.id_cuotas) pcr ON pcr.id_credito = cr.id_credito AND pcr.id_sucursal_credito = cr.id_sucursal_credito AND pcr.id_cuotas = cc.id_cuotas
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(mov.imp_movimiento) AS imp_inicial
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota = 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito) inicial ON inicial.id_credito = cr.id_credito AND inicial.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_cuotas,
            ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito, ccc.id_cuotas) pagc ON pagc.id_credito = cc.id_credito AND pagc.id_sucursal_credito = cc.id_sucursal_credito AND pagc.id_cuotas = cc.id_cuotas
  WHERE cc.nro_cuota <> 0 AND f.id_estado = 1 AND NOT (EXISTS ( SELECT 1
           FROM creditos.tbl_ventacredito vc_1
             JOIN ventas.tbl_facturacion f_1 ON f_1.id_facturacion = vc_1.id_facturacion AND f_1.id_facturacion = vc_1.id_sucursal_credito
          WHERE vc_1.id_credito = cr.id_credito AND vc_1.id_sucursal_credito = cr.id_sucursal_credito AND (f_1.id_motivonotacredito = ANY (ARRAY['01'::bpchar, '02'::bpchar]))))
  ORDER BY (cr.id_credito::text ||  cr.id_sucursal_credito::text)::bigint asc--f.id_cliente, cc.id_credito, cc.id_cuotas;

select *from common.tbl_comprobante
select *from creditos.v_documentos_emitidos limit 10

CREATE OR REPLACE VIEW creditos.v_documentos_emitidos
AS
 SELECT distinct cp.descripcion_corta AS tipo_doc,
    cp.codigosunat,
    f.serie_facturacion AS serie,
    f.numdoc_facturacion AS numero,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_giro,
    COALESCE(to_char(ven.fec_vencimiento::timestamp with time zone, 'dd/MM/yyyy'::text),'') AS fecha_vencimiento,
    mn.simbolo AS moneda,
    cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    dpto.departamento,
    prov.provincia,
    dist.distrito,
    sec.sector,
    dir.referencia,
    f.imp_neto AS imp_venta,
    COALESCE(inicial.imp_inicial, 0::numeric) AS imp_inicial,
    cr.imp_credito - COALESCE(inicial.imp_inicial, 0::numeric) AS imp_credito,
    COALESCE(cc.imp_cuota, 0::numeric) AS imp_cuota,
    COALESCE(pcr.imp_pago, 0::numeric) AS imp_pago,
    COALESCE(cc.imp_mora,0) AS mora,
    COALESCE((COALESCE(cc.imp_cuota, 0::numeric) +
        (CASE
            WHEN COALESCE(ncc.nota_credito, 0::numeric) > 0::numeric THEN 0::numeric
            ELSE cc.imp_mora - COALESCE(pagc.imp_pago, 0::numeric)
        END) - COALESCE(ncc.nota_credito, 0::numeric))::numeric(20,4), 0::numeric) AS imp_saldo,
    f.id_facturacion::text || f.id_sucursal::text AS id_facturacion,
    f.id_cliente,
    f.id_sucursal,
    f.id_estado,
    suc.id_empresa,
    COALESCE(to_char(ultima_fecha.fecha_mov::date,'dd/MM/yyyy'),'') AS ultipo_pago,
    tv.descripcion_larga AS tipo_venta,
COALESCE(dias.dias,0) as dias

   FROM ventas.tbl_facturacion f
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_moneda mn ON mn.id_moneda = f.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = f.id_direccion AND dir.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dist ON dist.id_distrito::text = z.id_distrito::text
     JOIN common.tbl_provincia prov ON prov.id_provincia::text = dist.id_provincia::text
     JOIN common.tbl_dpto dpto ON dpto.id_dpto::text = prov.id_dpto::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     LEFT JOIN creditos.tbl_ventacredito vc ON f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal AND vc.id_estado = 1
     LEFT JOIN creditos.tbl_credito cr ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
     LEFT JOIN ( SELECT tbl_cuota.id_credito,
            tbl_cuota.id_sucursal_credito,
            max(tbl_cuota.fec_vencimiento::date) AS fec_vencimiento
           FROM creditos.tbl_cuota
          GROUP BY tbl_cuota.id_credito, tbl_cuota.id_sucursal_credito) ven ON ven.id_credito = cr.id_credito AND ven.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
          --  ccc.id_cuotas,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito) pcr ON pcr.id_credito = cr.id_credito AND pcr.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(mov.imp_movimiento) AS imp_inicial
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota = 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito) inicial ON inicial.id_credito = cr.id_credito AND inicial.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT-- ccc.id_cuotas,
            ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito) pagc ON pagc.id_credito = cr.id_credito AND pagc.id_sucursal_credito = cr.id_sucursal_credito
     LEFT JOIN ( SELECT dp.id_sucursal_credito AS id_sucursal,
            dp.id_credito,
            max(mc.fecha_mov) as fecha_mov
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
group by dp.id_sucursal_credito,dp.id_credito
          --ORDER BY mc.fecha_mov DESC
         LIMIT 1) ultima_fecha ON ultima_fecha.id_credito = cr.id_credito AND ultima_fecha.id_sucursal = cr.id_sucursal_credito
     LEFT JOIN ( SELECT sum(cc_1.imp_cuota) AS imp_cuota,
            sum(creditos.getfunccalmora(cc_1.id_cuotas)::numeric(20,4)) AS imp_mora,
            cc_1.id_credito,
            cc_1.id_sucursal_credito AS id_sucursal
           FROM creditos.tbl_cuota cc_1
          GROUP BY cc_1.id_credito, cc_1.id_sucursal_credito) cc ON cc.id_credito = cr.id_credito AND cc.id_sucursal = cr.id_sucursal_credito
     LEFT JOIN ( SELECT
	   sum(COALESCE(nc.imp_dscto, 0::numeric)) AS nota_credito,
            nc.id_credito,
            nc.id_sucursal_cred AS id_sucursal
           FROM creditos.tbl_cuota_notacredito nc
             JOIN ventas.tbl_facturacion fnc ON fnc.id_facturacion = nc.id_notacredito AND fnc.id_sucursal = nc.id_sucursalnc
          WHERE fnc.id_estado = 1
          GROUP BY nc.id_credito, nc.id_sucursal_cred) ncc ON ncc.id_credito = cr.id_credito AND ncc.id_sucursal = cr.id_sucursal_credito
    LEFT JOIN (
		 SELECT
		sum(now()::date - cc.fec_vencimiento::date) AS dias,
		cc.id_credito,
		cc.id_sucursal_credito as id_sucursal
           FROM creditos.tbl_cuota cc
		group by cc.id_credito,
		cc.id_sucursal_credito
	) AS dias on dias.id_credito = cr.id_credito AND dias.id_sucursal = cr.id_sucursal_credito
  WHERE f.id_estado = 1

select *from common.tbl_comprobante

select * from ventas.tbl_Facturacion  where id_sucursal=1 order by id_Facturacion desc
select *from ventas.v_guiaremisionventa

select *from creditos.fn_letras_x_cobrar(1)

create or replace  function creditos.fn_letras_x_cobrar(_id_empresa integer)
returns table(
	doc_persona varchar(12),
	cliente varchar(100),
	direccion text,
	departamento varchar(30),
	provincia varchar(30),
	distrito varchar(30),
	sector varchar(300),
	referencia text,
	tipo_doc char(3),
	serie char(4),
	numero char(7),
	fecha_giro text,
	fecha_vencimiento text,
	moneda varchar(5),
	imp_venta numeric(20,4),
	imp_inicial numeric(20,4),
	imp_credito numeric(20,4),
	imp_cuota numeric(14,6),
	imp_pago numeric(20,4),
	mora numeric(20,4),
	imp_saldo numeric(20,4),
	nro_cuota integer,
	id_cuota integer,
	id_facturacion text,
	id_cliente varchar(15),
	id_sucursal integer,
	id_estado integer
) as $$
declare
begin
return query select
cli.doc_persona,
cli.nombre_razon as cliente,
dir.direccion,
dpto.departamento,
prov.provincia,
dist.distrito,
sec.sector,
dir.referencia,
cp.descripcion_corta as tipo,
f.serie_facturacion as serie,
f.numdoc_facturacion as numero	,
to_char(f.fecha_venta::date,'dd/MM/yyyy') as fecha_giro,
to_char(cc.fec_vencimiento::date,'dd/MM/yyyy') as fecha_vencimiento,
mn.simbolo as moneda,
f.imp_neto as imp_venta,
COALESCE(inicial.imp_inicial,0) as imp_inicial,
cr.imp_credito-COALESCE(inicial.imp_inicial,0) as imp_credito,
cc.imp_cuota,
COALESCE(pcr.imp_pago,0) as imp_pago,
creditos.getfunccalmora(cc.id_cuotas)::numeric(20,4) as mora,
(COALESCE(cc.imp_cuota,0)+creditos.getfunccalmora(cc.id_cuotas)::numeric-COALESCE(pagc.imp_pago,0))::numeric(20,4)  as imp_saldo,
cc.nro_cuota,
cc.id_cuotas as id_cuota,
f.id_facturacion::text || f.id_sucursal::text as id_facturacion,
f.id_cliente,
f.id_sucursal,
f.id_estado
from ventas.tbl_facturacion f
inner join common.tbl_moneda mn on mn.id_moneda=f.id_moneda
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join ventas.tbl_direccion dir on dir.id_direccion=f.id_direccion and dir.id_persona=f.id_cliente
inner join ventas.tbl_sector sec on sec.id_sector=dir.id_sector
inner join ventas.tbl_zona z on z.id_zona=sec.id_zona
inner join common.tbl_distrito  dist on dist.id_distrito=z.id_distrito
inner join common.tbl_provincia prov on prov.id_provincia=dist.id_provincia
inner join common.tbl_dpto dpto on dpto.id_dpto=prov.id_dpto
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona
inner join creditos.tbl_ventacredito vc on f.id_facturacion=vc.id_facturacion and f.id_sucursal=vc.id_sucursal
inner join creditos.tbl_credito cr on cr.id_credito=vc.id_credito and cr.id_sucursal_credito=vc.id_sucursal_credito
inner join creditos.tbl_cuota cc on cr.id_credito=cc.id_credito and  cr.id_sucursal_credito=cc.id_sucursal_credito
left join (
	select id_credito,id_sucursal_credito,max(fec_vencimiento::date) as fec_vencimiento from creditos.tbl_cuota  -- ORDER BY nro_cuota DESC limit 1
	group by id_credito,id_sucursal_credito
) ven on ven.id_credito=cc.id_credito and  ven.id_sucursal_credito=cc.id_sucursal_credito
left join (
	select  ccc.id_credito,ccc.id_sucursal_credito,sum(imp_movimiento) as imp_pago from creditos.tbl_cuota ccc
	inner join creditos.tbl_detpagocuota dpc on ccc.id_cuotas=dpc.id_cuotas and ccc.id_credito=dpc.id_credito and  ccc.id_sucursal_credito=dpc.id_sucursal_credito
	inner join caja.tbl_movcaja mov on  (mov.id_movimcaja=dpc.id_movimcaja and  mov.id_sucursal=dpc.id_sucursal)
	where ccc.nro_cuota<>0
	group by ccc.id_credito,ccc.id_sucursal_credito
) pcr on pcr.id_credito=cr.id_credito and  pcr.id_sucursal_credito=cr.id_sucursal_credito
left join (
	select  ccc.id_credito,ccc.id_sucursal_credito,sum(imp_movimiento) as imp_inicial from creditos.tbl_cuota ccc
	inner join creditos.tbl_detpagocuota dpc on ccc.id_cuotas=dpc.id_cuotas and ccc.id_credito=dpc.id_credito and  ccc.id_sucursal_credito=dpc.id_sucursal_credito
	inner join caja.tbl_movcaja mov on  (mov.id_movimcaja=dpc.id_movimcaja and  mov.id_sucursal=dpc.id_sucursal)
	where ccc.nro_cuota=0
	group by ccc.id_credito,ccc.id_sucursal_credito
) inicial on inicial.id_credito=cr.id_credito and  inicial.id_sucursal_credito=cr.id_sucursal_credito
left join (
	select  ccc.id_cuotas,ccc.id_credito,ccc.id_sucursal_credito,sum(imp_movimiento) as imp_pago from creditos.tbl_cuota ccc
	inner join creditos.tbl_detpagocuota dpc on ccc.id_cuotas=dpc.id_cuotas and ccc.id_credito=dpc.id_credito and  ccc.id_sucursal_credito=dpc.id_sucursal_credito
	inner join caja.tbl_movcaja mov on  (mov.id_movimcaja=dpc.id_movimcaja and  mov.id_sucursal=dpc.id_sucursal)
	where ccc.nro_cuota<>0
	group by ccc.id_credito,ccc.id_sucursal_credito,ccc.id_cuotas
) pagc on pagc.id_credito=cc.id_credito and  pagc.id_sucursal_credito=cc.id_sucursal_credito and pagc.id_cuotas=cc.id_cuotas
where cc.nro_cuota<>0 and f.id_estado=1
order by cc.id_credito,cc.id_cuotas;
end;$$
language 'plpgsql';

select *from ventas.tbl_direccion

select *from caja.tbl_movcaja

select *from creditos.tbl_cuota
select *from ventas.tbl_facturacion
select *from common.tbl_moneda

CREATE OR REPLACE VIEW almacen.v_listar_seried_productos_movimeinto AS
 SELECT
        CASE
            WHEN ((((compra.anio::text || '-'::text) || compra.idmeses::text) || ''::text) || compra.idcompra::text) IS NULL THEN ''::text
            ELSE (((compra.anio::text || '-'::text) || compra.idmeses::text) || ''::text) || compra.idcompra::text
        END AS nro_compra,
        CASE
            WHEN (((((( SELECT t.abreviatura
               FROM tipcomprobante t
              WHERE t.idtipcomprobante = compra.tipo_comprobante))::text || '/'::text) || compra.serie::text) || '-'::text) || compra.nrocomprobante::text) IS NULL THEN ''::text
            ELSE ((((( SELECT t.abreviatura
               FROM tipcomprobante t
              WHERE t.idtipcomprobante = compra.tipo_comprobante))::text || '/'::text) || compra.serie::text) || '-'::text) || compra.nrocomprobante::text
        END AS doc_compra,
        CASE
            WHEN to_char(compra.fec_documento, 'dd/mm/yyyy'::text) IS NULL THEN ''::text
            ELSE to_char(compra.fec_documento, 'dd/mm/yyyy'::text)
        END AS fecha_compra,
        CASE
            WHEN proveedor.razon_social IS NULL THEN ''::character varying::text
            ELSE proveedor.razon_social
        END AS proveedor,
    serie_producto.nroserie,
    serie_producto.nro_chasis,
    serie_producto.nro_motor,
    serie_producto.color,
        CASE
            WHEN facturacion.nro_comprobante IS NULL THEN ''::text
            ELSE ((((( SELECT t.abreviatura
               FROM tipcomprobante t
              WHERE t.idtipcomprobante = facturacion.idtipcomprobante))::text || '/'::text) || facturacion.nro_serie::text) || '-'::text) || facturacion.nro_comprobante::text
        END AS doc_venta,
    facturacion.idtipcomprobante,
        CASE
            WHEN facturacion.fecha_emision IS NULL THEN ''::text
            ELSE to_char(facturacion.fecha_emision, 'dd/mm/yyyy'::text)
        END AS fecha_venta,
        CASE
            WHEN cliente.nombre IS NULL THEN ''::character varying
            ELSE cliente.nombre
        END AS cliente,
    serie_producto.estado,
    serie_producto.idserie,
    serie_producto.id_unimed_compra,
    serie_producto.idcompra,
    serie_producto.idproducto,
    serie_producto.idalmacen,
    COALESCE(((((( SELECT t.abreviatura
           FROM tipcomprobante t
          WHERE t.idtipcomprobante = compra.idcomprobante_referencia))::text || '/'::text) || compra.serie_ref::text) || '-'::text) || compra.nro_comrpobante_ref::text, ''::text) AS doc_ref_compra,
    serie_producto.idunimed,
    serie_producto.anio_fabricacion,
    serie_producto.fecha_registro,
    serie_producto.obs_serie,
    p.descripcion_larga AS producto,
    a.nombre AS almacen,
    serie_producto.modelo,
    facturacion.idcliente,
    facturacion.iddircliente,
    facturacion.idruta,
    compra.idproveedor,
    ( SELECT (gr.serie::text || '-'::text) || gr.nro_guia::text
           FROM almacen.guia_remision gr
          WHERE gr.idguiaremision = serie_producto.idguiaremision) AS guia_remision
   FROM almacen.serie_producto
     LEFT JOIN ventas.facturacion ON serie_producto.idfacturacion = facturacion.idfacturacion
     LEFT JOIN ventas.det_facturacion ON facturacion.idfacturacion = det_facturacion.idfacturacion
     LEFT JOIN ventas.dircli ON facturacion.idruta = dircli.idruta AND facturacion.idcliente::text = dircli.idcliente::text AND facturacion.iddircliente::bpchar = dircli.iddircliente::bpchar
     LEFT JOIN ventas.cliente ON dircli.idcliente::text = cliente.idcliente::text
     LEFT JOIN compras.detalle_compra ON serie_producto.idcompra = detalle_compra.idcompra AND serie_producto.idproducto = detalle_compra.idproducto AND serie_producto.id_unimed_compra = detalle_compra.idunimed AND serie_producto.idmeses = detalle_compra.idmeses AND serie_producto.anio = detalle_compra.anio AND serie_producto.item = detalle_compra.item
     LEFT JOIN compras.compra ON detalle_compra.idcompra = compra.idcompra AND detalle_compra.idmeses = compra.idmeses AND detalle_compra.anio = compra.anio
     LEFT JOIN dirproveedor ON compra.idproveedor = dirproveedor.idproveedor AND compra.iddirproveedor = dirproveedor.iddirproveedor AND compra.iddistrito = dirproveedor.iddistrito
     LEFT JOIN proveedor ON dirproveedor.idproveedor = proveedor.idproveedor
     JOIN almacen.producto p ON p.idproducto = serie_producto.idproducto
     JOIN almacen.almacen a ON a.idalmacen = serie_producto.idalmacen
  ORDER BY a.idalmacen, serie_producto.modelo, p.idproducto;

SELECT *FROM ALMACEN.V_SERIE_PRODUCTO_MOVIMIENTOS

CREATE OR REPLACE  VIEW ALMACEN.V_SERIE_PRODUCTO_MOVIMIENTOS
AS
select distinct
trim(p.codigo) as codigo,
p.descripcion_larga as producto,
cpc.descripcion_corta || '/'|| c.serie|| '-' || c.nro_doc_compra as doc_compra,
to_char(c.fec_documento::Date,'dd/MM/yyyy') as fec_compra,
prov.nombre_razon as proveedor,
nro_serie,
coalesce(cpv.descripcion_corta || '/'|| f.serie_facturacion|| '-' || f.numdoc_facturacion,'-') as doc_venta,
coalesce(to_char(f.fecha_venta::date,'dd/MM/yyyy'),'') as fecha_venta,
coalesce(cli.nombre_razon,'-') as cliente,
alm.descalmacen as almacen,
es.des_estado as estado,
sp.id_estado,
alm.id_almacen,
sp.id_producto,
sp.id_serie
from almacen.tbl_serieproducto sp
inner join common.tbl_estado es on es.id_estado=sp.id_estado
inner join almacen.tbl_almacen alm on alm.id_almacen=sp.id_almacen
inner join almacen.tbl_producto p on p.id_producto=sp.id_producto
left join almacen.tbl_serieventa sv on sp.id_serie=sv.id_serie
left join ventas.tbl_facturacion f on f.id_facturacion=sv.id_facturacion
left join common.tbl_comprobante cpv on cpv.id_comprobante=f.id_comprobante
left join ventas.tbl_detfacturacion df on df.id_facturacion=f.id_facturacion and f.id_sucursal=df.id_sucursal
left join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
left join almacen.tbl_seriecompra sc on sp.id_serie=sc.id_serie
left join compras.tbl_compra c on c.id__compra=sc.id__compra and c.id_sucursalcompra=sc.id_sucursalcompra
left join common.tbl_comprobante cpc on cpc.id_comprobante=c.id_comprobante
left join planillas.tbl_persona prov on prov.id_persona=c.id_proveedor

select * from almacen.V_SERIE_PRODUCTO_MOVIMIENTOS   where id_producto='246' and trim(nro_serie) ilike '%%'

select *from almacen.v_producto
select *from common.tbl_estado
select *from almacen.tbl_almacen
select *from compras.tbl_compra
select *from planillas.tbl_persona
select *from ventas.tbl_facturacion
select *from almacen.tbl_serieproducto

create or replace function caja.fn_liquidicacion_caja_diaria(
	_year integer,
	_month integer
)
returns table(
	id_sucursal integer,
	tienda varchar(50),
	dia integer,
	importe numeric(20,2)
) as $$
declare
begin
return query select c.id_sucursal, c.nombre as tienda,date_part('day',fecha_mov::date)::integer as dia,sum(importe_contable)::numeric(20,2) as importe from caja.v_liquidacion_ventas_contado lvc
inner join common.tbl_sucursal c on c.id_sucursal=lvc.id_sucursal
   where  date_part('year',fecha_mov::date)=_year and date_part('month',fecha_mov::date)=_month
group by date_part('day',fecha_mov::date),c.nombre,c.id_sucursal
order by c.id_sucursal;
end;$$
language 'plpgsql';

select * from caja.fn_liquidicacion_caja_diaria(2018,1)

select *from caja.fn_liquidicacion_caja_diaria(2017,1);

select *from caja.v_liquidacion_ventas_contado lvc
select *from seguridad.v_listar_roles

CREATE OR REPLACE VIEW seguridad.v_listar_roles AS
 SELECT item.item,
    item.fk_codmenu,
    item.descripcion,
    item.item_orden,
    item.evento,
    item.estado,
    item.menu_item,
    item.orden,
    item.menu,
    item.maximised,
    item.icono,
    tbl_permiso.estado AS rol,
    tbl_permiso.id_usuario,
    tbl_permiso.toolbar,
    item.ico_favorito
   FROM seguridad.item
     JOIN seguridad.tbl_permiso ON item.item = tbl_permiso.item;

select *from seguridad.v__documento__usuario

CREATE OR REPLACE VIEW ventas.v_listar_cabecera_unidadvehicular
AS
 SELECT tbl_facturacion.id_facturacion,
    tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
        CASE
            WHEN btrim(tbl_facturacion.id_cliente::text) = '000'::text THEN tbl_facturacion.dni_cliente::text
            ELSE btrim(tbl_persona.doc_persona::text)
        END AS doc_persona,
        CASE
            WHEN btrim(tbl_facturacion.id_cliente::text) = '000'::text THEN btrim(tbl_facturacion.nomape_cliente)
            ELSE btrim(tbl_persona.nombre_razon::text)
        END AS cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga AS tipoventa,
    lpad(tbl_facturacion.serie_facturacion::text, 4, '0'::text)::character(4) AS serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado AS estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text AS id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    vend.doc_persona AS doc_vendedor,
    vend.nombre_razon AS vendedor,
    vend.id_persona AS id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta AS tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre AS sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text AS documento_canjeado,
    tbl_facturacion.placa,
    tbl_facturacion.modelo,
    tbl_facturacion.marca,
    tbl_facturacion.color,
    prod.descripcion_larga AS unidad,
    prod.id_producto,
    tbl_facturacion.imp_xdia,
    tbl_facturacion.imp_total /
        CASE
            WHEN tbl_facturacion.imp_xdia > 0::numeric THEN tbl_facturacion.imp_xdia
            ELSE 1::numeric
        END AS nro_dias
   FROM ventas.tbl_facturacion
     JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
     JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
     JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion AND tbl_facturacion.id_cliente::text = tbl_direccion.id_persona::text
     JOIN planillas.tbl_persona ON tbl_persona.id_persona::text = tbl_direccion.id_persona::text
     JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
     JOIN common.tbl_estado ON tbl_estado.id_estado = tbl_facturacion.id_estado
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = tbl_facturacion.id_vendedor::text
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = tbl_facturacion.id_sucursal
     JOIN almacen.tbl_producto prod ON prod.id_producto::text = tbl_facturacion.id_unidad::text
  ORDER BY (tbl_facturacion.fecha_venta::date), tbl_facturacion.id_comprobante, tbl_facturacion.serie_facturacion, tbl_facturacion.numdoc_facturacion;

CREATE OR REPLACE VIEW CONTABILIDAD.V_SUBDIARIO
AS
SELECT s.id,s.name,s.shortname,aux.descripcion as auxiliar,es.des_estado as status,s.auxiliar_id,s.enterprise_id,s.status_id FROM  contabilidad.tbl_subdiario s
INNER JOIN contabilidad.tbl_auxiliar aux on aux.id_auxiliar=s.auxiliar_id
INNER JOIN common.tbl_estado es on es.id_estado=s.status_id

select *from common.tbl_estado
select *from contabilidad.tbl_auxiliar

CREATE OR REPLACE view ALMACEN.V_LISTAR_PRODUCTO_KARDEX_INV
AS

select
	id_producto,
	codigo,
	producto,
	unidad,
	sum(cantidad_fisica) as cantidad_fisica,
	coste,
	importe,
	id_almacen,
	id_inventario,
	fecha,
	id_unidadventa,
	inv_inicial,
	id_sucursal,
	sum(stock) as stock
 from  (
select
p.id_producto,
trim(p.codigo) as codigo,
trim(p.descripcion_larga) as producto,
trim(und.desc_larga) as unidad,
sum(x.cantidad)as cantidad_fisica,
pre.coste,
(pre.coste*sum(x.cantidad))::numeric(20,4) as Importe,
di.id_almacen,
di.id_inventario,
to_char(inv.fecha,'dd/mm/yyyy')::timestamp fecha,
x.unit_id as id_unidadventa,
di.inv_inicial,
suc.id_sucursal ,
coalesce(ex.stock_fisico,0) as stock
from almacen.tbl_cabinventario inv
inner join  almacen.tbl_detinventario di on(inv.id_inventario=di.id_inventario and inv.id_almacen=di.id_almacen)
inner join  almacen.tbl_detproducto dp on dp.id_producto=di.id_producto and dp.id_unidadventa=di.id_unidadventa
JOIN LATERAL almacen.fn_stock(di.id_producto, di.id_unidadventa, di.id_almacen, di.cantidad_fisica) x(product_id, unit_id, val_unit, stock, cantidad) ON x.product_id::text = dp.id_producto::text
inner join  almacen.tbl_precio pre on pre.id_producto=x.product_id and pre.id_unidadventa=x.unit_id
inner join almacen.tbl_producto p on   p.id_producto=dp.id_producto
inner join almacen.tbl_unidad und on und.id_unidadventa=x.unit_id
inner join almacen.tbl_almacen alm on alm.id_almacen=di.id_almacen
inner join common.tbl_sucursal suc on suc.id_sucursal=alm.id_sucursal
left join almacen.tbl_existencia ex on ex.id_producto=di.id_producto and ex.id_unidadventa=di.id_unidadventa and ex.id_almacen=di.id_almacen
where --di.id_almacen=1 and di.id_inventario=1 and
di.id_estado=1
group by p.id_producto,
p.codigo,und.desc_larga ,suc.id_sucursal,
p.descripcion_larga ,di.id_almacen,di.id_inventario,to_char(inv.fecha,'dd/mm/yyyy'),pre.coste,di.id_producto,x.unit_id,di.inv_inicial,ex.stock_fisico
) z
group by id_producto,
	codigo,
	producto,
	unidad,
	coste,
	importe,
	id_almacen,
	id_inventario,
	fecha,
	id_unidadventa,
	inv_inicial,
	id_sucursal

select *from almacen.tbl_existencia
select *from almacen.tbl_unidad

select *from almacen.tbl_precio where id_producto='1202'

CREATE OR REPLACE VIEW ALMACEN.V_LISTAR_RETAZOS
AS
select
	id_retazo,
    p.id_producto,
    p.descripcion_larga as producto,
    u.desc_larga as unidad,
    ancho ,
    halto,
    area,
    salida,
    stock,
    id_almacen,
    u.id_unidadventa,
    fecha_registro,
    fecha_actualizacion,
    id_usuario_reg,
    id_usuario_act,
    r.id_estado,
    id_cotizapreventa
from almacen.tbl_retazoproducto r
inner join almacen.tbl_producto p on p.id_producto=r.id_producto
inner join almacen.tbl_unidad u on u.id_unidadventa=r.id_unidadventa
;

--drop VIEW caja.v_bancos
--Se creo con una nueva tabla para bancos
CREATE OR REPLACE VIEW common.v_bancos
AS
 SELECT
    ban.Id_Banco,
    ban.Nombre_ban as NombreBanco,
    ban.NombreCorto_Ban AS NombreCortoBanco,
    ep.nombre AS empresa,
    e.id_estado,
    e.des_estado AS estado,
    ep.id_empresa

   FROM COMMON.TBL_BANCO ban
     JOIN common.tbl_estado e ON e.id_estado =  ban.id_estado
     JOIN common.tbl_empresa ep ON ep.id_empresa = ban.id_empresa;

select *from common.v_bancos

CREATE OR REPLACE VIEW caja.v_liquidacion_operacionesDiversas
AS
 SELECT commov.descripcion_corta AS comprobante,
    mov.glosa AS nro_facturacion,
        CASE
            WHEN btrim(mov.id_personaingdiv::text) = '000'::text THEN btrim(mov.nomape_cliente)
            ELSE btrim(cli.nombre_razon::text) ||
            CASE
                WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN ('('::text || mov.glosa) || ')'::text
                ELSE '(***Anulado**)'::text
            END
        END AS cliente,
    m.simbolo AS moneda,
    mov.id_persona AS id_vendedor,
        CASE
            WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
            ELSE 0::numeric
        END AS imp_total,
        CASE
            WHEN mov.signo = '-1'::integer THEN 'Egresos'::character varying
            ELSE fp.descripcion
        END AS formapago,
    COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
        CASE
            WHEN m.id_moneda = 1 THEN
            CASE
                WHEN mov.signo = '-1'::integer THEN
                CASE
                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago * '-1'::integer::numeric
                    ELSE 0::numeric
                END
                ELSE
                CASE
                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                    ELSE 0::numeric
                END
            END
            ELSE 0.00
        END AS imp_soles,
        CASE
            WHEN m.id_moneda = 2 THEN
            CASE
                WHEN mov.signo = '-1'::integer THEN dmov.imp_pago * '-1'::integer::numeric
                ELSE dmov.imp_pago
            END
            ELSE 0.00
        END AS imp_dolares,
        CASE
            WHEN mov.signo = '-1'::integer THEN '99'::bpchar
            ELSE dmov.id_formapago
        END AS id_formapago,
    mov.id_turno,
    mov.fecha_mov,
    mov.id_caja_destino AS id_caja,
    mov.id_movimcaja,
    mov.id_sucursal,
    (((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text AS comprobante_mov,
    cto.id_concepto,
    cto.descripcion_larga AS concepto,
        CASE
            WHEN mov.id_comprobante = 4 THEN 0::numeric
            ELSE
            CASE
                WHEN m.id_moneda = 1 THEN
                CASE
                    WHEN mov.signo = '-1'::integer THEN
                    CASE
                        WHEN mov.id_estado = 1 THEN dmov.imp_pago * '-1'::integer::numeric
                        ELSE 0::numeric
                    END
                    ELSE
                    CASE
                        WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                        ELSE 0::numeric
                    END
                END
                ELSE 0.00
            END
        END AS importe_contable,
    mov.id_comprobante,
    mov.serie,
    mov.numero,
    0 AS id_facturacion,
    2 AS op_fil,
    mov.serie::bigint AS serie1,
    mov.numero::bigint AS numero1,
        CASE
            WHEN m.id_moneda = 1 THEN
            CASE
                WHEN mov.signo = '-1'::integer THEN
                CASE
                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago * '-1'::integer::numeric
                    ELSE 0::numeric
                END
                ELSE
                CASE
                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                    ELSE 0::numeric
                END
            END
            ELSE 0.00
        END AS imp_totalreporte,
    0 AS saldo,
    mov.doc_referencia AS referencia
   FROM caja.tbl_movcaja mov
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = mov.id_personaingdiv::text
     JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
     JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
     JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
     JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
     JOIN common.tbl_concepto cto ON cto.id_concepto::text = mov.id_concepto::text
  WHERE mov.id_facturacion IS NULL

  ORDER BY 11, 18, 21, 26, 27;

CREATE OR REPLACE VIEW GRIFO.V_liqturnoislas
as
select c.id_turno,
c.id_lado,
i.id_isla,
i.nom_isla as Isla,
TRIM(p.descripcion_corta) as Comb,
L.descripcion_lado as lado,
c.lecinicial,
c.lecfinal,
c.result_gal as Cantidad,
c.precio_lista as precio,
c.result_imp as ImpTotal,
c.fecha,
t.descripcion as Turno,
c.id_producto,
p.descripcion_larga as producto,
c.id_listaprecio
from grifo.tbl_leccontometro c
inner join tbl_lado l on l.id_lado=c.id_lado
inner join common.tbl_turno t on t.id_turno=c.id_turno
inner join tbl_isla i on i.id_isla=c.id_isla
inner join almacen.tbl_precio pre on pre.id_producto=c.id_producto and pre.id_unidadventa=c.id_unidadventa and pre.id_listaprecio=c.id_listaprecio
inner join almacen.tbl_producto p on p.id_producto=pre.id_producto
inner join almacen.tbl_unidad u on u.id_unidadventa=pre.id_unidadventa

select *from caja.tbl_CAJABANCO

select *from  common.tbl_turno
select *from grifo.tbl_leccontometro c

select *from tbl_isla

CREATE OR REPLACE VIEW ventas.v_detvalesconsumo_saldos
AS
 SELECT d.item,
    p.id_producto,
    p.descripcion_larga AS producto,
    u.desc_corta AS unidad,
    d.cantidad,
    d.lista,
    d.precio,
    d.imp_dsct,
    d.total,
    dp.id_unidadventa,
    d.id_listaprecio,
    e.id_estado,
    d.id_sucrusal_vale,
    e.des_estado AS estado,
    d.id_vale,
    COALESCE((d.cantidad-z.cantidad),case when z.cantidad is null then d.cantidad else 0 end) as Saldo
   FROM ventas.tbl_detvale d
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = d.id_unidadventa
     JOIN common.tbl_estado e ON d.id_estado = e.id_estado
     LEFT JOIN (SELECT sum(cantidad) as Cantidad,id_vale,id_sucursal,id_producto,id_unidadventa,id_listaprecio FROM ventas.tbl_consumovales vc
     WHERE id_estado=1
     group by id_Vale,id_sucursal,id_producto,id_unidadventa,id_listaprecio
     )z on z.id_vale=d.id_vale and z.id_sucursal=d.id_sucrusal_vale and z.id_producto=d.id_producto and z.id_unidadventa=d.id_unidadventa and z.id_listaprecio=d.id_listaprecio
     ;

select *from ventas.tbl_detvale

CREATE OR REPLACE VIEW ventas.v_valesconsumo_sinfac
AS
 SELECT v.id_vale,
        CASE
            WHEN v.fec_emision IS NOT NULL THEN to_char(v.fec_emision, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_emision,
    v.concepto,
        CASE
            WHEN v.fec_vencimiento IS NOT NULL THEN to_char(v.fec_vencimiento, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_vencimiento,
    v.imp_vale,
    v.id_direccion,
    v.id_moneda,
    COALESCE(v.nro_vale, ''::text) AS nro_vale,
    v.imp_pendiente,
    v.id_cliente,
    p.doc_persona,
    p.nombre_razon AS cliente,
    v.id_autoriza,
    v.vehiculo,
    v.placa,
    v.conductor,
    v.id_sucrusal_vale,
    v.serie_vale,
    v.id_comprobante,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(v.kilometraje, ''::character varying) AS kilometraje,
    v.fec_emision::date AS fecha,
    (lpad(v.serie_vale::text, 4, '0'::text) || '.'::text) || lpad(v.nro_vale, 7, '0'::text) AS vale_id,
    (((c.descripcion_corta::text || '/'::text) || lpad(v.serie_vale::text, 4, '0'::text)) || '-'::text) || lpad(v.nro_vale, 7, '0'::text) AS vale,
        CASE date_part('month'::text, v.fec_emision)
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
    date_part('year'::text, v.fec_emision)::text AS anio,
    COALESCE(v.id_clientefactura, ''::character varying) AS id_clientefactura,
    COALESCE(v.id_direccionfactura, 0::bigint) AS id_direccionfactura,
    COALESCE(cf.doc_persona, ''::character varying) AS doc_clientefactura,
    COALESCE(cf.nombre_razon, ''::character varying) AS clienefactura
   FROM ventas.tbl_valesconsumo v
     JOIN planillas.tbl_persona p ON p.id_persona::text = v.id_cliente::text
     JOIN common.tbl_estado e ON e.id_estado = v.id_estado
     JOIN common.tbl_comprobante c ON c.id_comprobante = v.id_comprobante
     LEFT JOIN planillas.tbl_persona cf ON cf.id_persona::text = v.id_clientefactura::text
     where
     NOT (v.id_vale::text || v.id_sucrusal_vale::text IN ( SELECT tbl_facvale.id_vale::text || tbl_facvale.id_sucrusal_vale::text
           FROM ventas.tbl_facvale
          WHERE tbl_facvale.id_estado = 1))

CREATE OR REPLACE VIEW VENTAS.v_recibo_vales_consumo
as
select id_consumovale as Id,
v.fecha_consumo as Fecha,
cp.descripcion_corta as TipDoc,
v.serie,
v.numero,
cli.nombre_Razon as Consumidor,
cliv.nombre_razon as cliente,
v.imp_total as ImpConsumo,
vc.serie_vale::text || '/' || vc.nro_vale::text AS Nrovale,
vc.imp_vale as ImpVale,
v.id_comprobante,
v.id_producto,
v.id_unidadventa,
v.id_listaprecio,
v.id_vale,
v.id_sucursal,
v.id_isla,
v.cantidad,
v.precio,
v.id_direccion,
v.id_cliente,
cli.doc_persona,
pro.descripcion_larga as producto,
vc.serie_vale,
vc.nro_vale,
v.glosa,
v.id_estado,
v.id_turno,
v.id_caja
FROM ventas.tbl_consumovales v
inner join common.tbl_comprobante cp on v.id_comprobante=cp.id_comprobante
inner join ventas.tbl_direccion dir on dir.id_direccion=v.id_direccion and dir.id_persona=v.id_cliente
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona
inner join almacen.tbl_precio pre on pre.id_producto=v.id_producto and v.id_unidadventa=pre.id_unidadventa and pre.id_listaprecio=v.id_listaprecio
inner join almacen.tbl_producto pro on pro.id_producto=pre.id_producto
inner join almacen.tbl_unidad und on und.id_unidadventa=pre.id_unidadventa
INNER JOIN VENTAS.tbl_valesconsumo VC ON vc.id_vale=v.id_vale and vc.id_sucrusal_vale=v.id_sucursal
inner join common.tbl_comprobante cpv on v.id_comprobante=cpv.id_comprobante
inner join planillas.tbl_persona cliv on cliv.id_persona=vc.id_cliente
order by 1;

select *from VENTAS.v_recibo_vales_consumo

select *from ventas.tbl_consumovales v

CREATE or replace VIEW COMPRAS.V_RELACIONDOCCOMPRA_NOTACREDITO
AS
SELECT 1::character(1) AS tipo,
            btrim(prod.id_producto::text) AS codarti,
            prod.descripcion_larga AS articulo,
            g.descripcion_larga AS grupo,
            f.descripcion_larga AS linea,
            0::numeric AS contenido,
            p.nombre_razon AS proveedor,
            p.doc_persona AS ruc,
            u.desc_corta AS unidadm,
            d.id_almacen AS almacen,
            'C'::text AS movi,
            c.fec_documento::date AS fecha,
            c.id_comprobante AS tipodoc,
            (((comp.descripcion_corta::text || '/'::text) || c.serie::text) || '-'::text) || c.nro_doc_compra::text AS documento,
            COALESCE(z.NotaCredito,'') as NotaCredito,
            COALESCE(z.cantidad,0) as CantNc,
            COALESCE(z.precio,0) as PrecioNc,
            COALESCE(d.precio/1.18,0) as PreciCompra,
            d.cantidad AS cant,
                CASE
                    WHEN d.precio > 0::numeric THEN d.precio / 1.18
                    ELSE 0::numeric
                END - COALESCE(z.precio,0)AS punit,
            u.id_unidadventa AS idunimed,
            c.serie::integer AS serie,
            c.nro_doc_compra::integer AS numero,
            prod.id_producto,
            d.id_almacen,
            s.id_empresa,
            f.id_familia,
            date_part('hour'::text, c.fec_documento) AS hora
           FROM compras.tbl_compra c
             JOIN ventas.tbl_direccion dir ON dir.id_direccion = c.id_dirproveedor
             JOIN planillas.tbl_persona p ON p.id_persona::text = dir.id_persona::text
             JOIN compras.tbl_detcompra d ON c.id_sucursalcompra = d.id_sucursalcompra AND c.anio = d.anio AND c.id_compra = d.id_compra AND c.id_mes = d.id_mes
             JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
             JOIN almacen.tbl_producto prod ON prod.id_producto::text = dp.id_producto::text
             JOIN almacen.tbl_familia f ON f.id_familia = prod.id_familia
             JOIN almacen.tbl_grupo g ON g.id_grupo = f.id_grupo
             JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
             JOIN common.tbl_sucursal s ON s.id_sucursal = c.id_sucursalcompra
             JOIN common.tbl_comprobante comp ON comp.id_comprobante = c.id_comprobante
             LEFT JOIN (
		SELECT
			dc.imp_venta,
			dc.cantidad,
			dc.precio,
			dc.id_producto,
			cp.id__compra__ref AS id__compra,
			cp.id__sucursal__ref AS id_sucursalcompra,
			dc.id_unidadventa,
			cp.serie::text || '-'|| cp.nro_doc_compra::text as NotaCredito
                   FROM compras.tbl_compra cp
                     JOIN compras.tbl_detcompra dc ON cp.id__compra = dc.id__compra AND cp.id_sucursalcompra = dc.id_sucursalcompra
                  WHERE cp.nota_credito = true AND (cp.id_motivonotacredito in ('04', '05', '09'))
           ) z ON z.id__compra = d.id__compra AND z.id_sucursalcompra = d.id_sucursalcompra AND z.id_producto::text = d.id_producto::text AND z.id_unidadventa = d.id_unidadventa
          WHERE d.id_estado = 1 AND c.id_estado = 1 AND d.inv_inicial = false AND c.nota_credito = false --and c.id__compra=12015993
	order by d.id_producto,c.fec_documento

SELECT ('F.P:'::text || COALESCE(fp.descripcion, ''::character varying)::text) ||
                    CASE fp.id_formapago
                        WHEN '01'::bpchar THEN ' '::text
                        WHEN '02'::bpchar THEN ((' '::text || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '03'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '04'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '05'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        ELSE NULL::text
                    END
               FROM caja.tbl_detmovpago dpm
                 JOIN common.tbl_formapago fp ON fp.id_formapago = dpm.id_formapago
                 JOIN caja.tbl_cuentabancaria cba ON cba.id_cuenta = dpm.id_cuenta
                 JOIN COMMON.TBL_BANCO ban ON ban.id_BANCO = dpm.id_BANCO
              WHERE dpm.id_movimcaja = 187 AND dpm.id_sucursal = 1

select *from caja.tbl_detmovpago dpm   where  id_movimcaja=187 and id_sucursal=1

select *from

select *from caja.tbl_cuentabancaria
select *from common.tbl_formapago
select * from caja.v_pagoscuota   where  id_movimcaja=187 and id_sucursal=1

select * from caja.v_pagoscuota   where  id_movimcaja=187 and id_sucursal=1

select * from caja.v_pagoscuota   where  id_movimcaja=3169 and id_sucursal=1

CREATE OR REPLACE  VIEW caja.v_pagoscuota
AS
 SELECT (mc.serie::text || '-'::text) || mc.numero::text AS comprobantemov,
    mc.fecha_mov AS fecha,
    cli.doc_persona AS doccliente,
    cli.nombre_razon AS cliente,
    dir.direccion,
    tv.descripcion_larga AS tipo_venta,
   replace((select replace(replace(t.telefono::text,'{"comprobante":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  fr.serie_facturacion || '-'|| fr.numdoc_facturacion ||'
' 	 AS comprobante
		from ventas.tbl_facturacion fr
		JOIN creditos.tbl_ventacredito vcr ON fr.id_sucursal = vcr.id_sucursal AND fr.id_facturacion = vcr.id_facturacion
		 JOIN creditos.tbl_detpagocuota dpr ON   vcr.id_credito = dpr.id_credito AND vcr.id_sucursal_credito = dpr.id_sucursal_credito
		where mc.id_movimcaja=dpr.id_movimcaja and mc.id_sucursal=dpr.id_sucursal
	      ) d
	    ) as telefono
	) t),'[Ninguno->]','') AS comprobanteventa,
    --(((cpf.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || ''::text) || f.numdoc_facturacion::text AS comprobanteventa,
    vend.nombre_razon AS vendedor,
    mf.simbolo AS monedaventa,
    c.nro_cuota,
    c.imp_total,
    dp.imp_pago AS imp_pagocuota,
    mc.imp_movimiento,
    c.fec_vencimiento,
    c.id_cuotas,
    c.id_credito,
    c.id_sucursal_credito,
    mc.id_movimcaja,
    mc.id_sucursal,
    ( SELECT sum(now()::date - cc.fec_vencimiento::date) AS sum
           FROM creditos.tbl_cuota cc
          WHERE cc.id_credito = cc.id_credito AND cc.id_sucursal_credito = cc.id_sucursal_credito AND cc.id_cuotas = c.id_cuotas) AS dias_atrazados,
    COALESCE(( SELECT sum(cc.imp_cuota) AS sum
           FROM creditos.tbl_cuota cc
          WHERE c.id_credito = cc.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito AND c.id_cuotas = cc.id_cuotas), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota cc
             JOIN creditos.tbl_detpagocuota cmov ON cc.id_cuotas = cmov.id_cuotas AND cc.id_credito = cmov.id_credito AND cc.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_credito = cc.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito AND c.id_cuotas = cc.id_cuotas), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND c.id_cuotas = nc.id_cuota), 0::numeric) AS saldo,
        CASE
            WHEN (( SELECT count(*) AS count
               FROM caja.tbl_detmovpago dpm
              WHERE dpm.id_movimcaja = mc.id_movimcaja AND dpm.id_sucursal = mc.id_sucursal)) > 1 THEN 'PAGOS VARIOS'::text
            ELSE ( SELECT ('F.P:'::text || COALESCE(fp.descripcion, ''::character varying)::text) ||
                    CASE fp.id_formapago
                        WHEN '01'::bpchar THEN ' '::text
                        WHEN '02'::bpchar THEN ((' '::text || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '03'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '04'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '05'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        ELSE NULL::text
                    END
               FROM caja.tbl_detmovpago dpm
                 JOIN common.tbl_formapago fp ON fp.id_formapago = dpm.id_formapago
                 JOIN caja.tbl_cuentabancaria cba ON cba.id_cuenta = dpm.id_cuenta
                 JOIN COMMON.TBL_BANCO ban ON ban.id_BANCO = dpm.id_BANCO
              WHERE dpm.id_movimcaja = mc.id_movimcaja AND dpm.id_sucursal = mc.id_sucursal
)
        END AS glosa,
   cpm.descripcion_larga as nom_comprobante,
  s.direccion as direccion_suc,
  s.telefono,
  s.celular,
  s.email,
  emp.ruc,
  emp.nombre as empresa,
  dp.imp_mora,
  C.fec_registro as fec_emision,
  uss.camp2 as usuario,
  cb.descripcion as caja,
  dp.total_mora,
  mc.doc_referencia,
   replace((select replace(replace(t.telefono::text,'{"nro_operacion":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  ban.nombre_ban || '->'|| nro_operacion	 AS nro_operacion
		from caja.tbl_detmovpago  tl
		inner join  common.tbl_banco ban on ban.id_banco=tl.id_banco
		where mc.id_movimcaja=tl.id_movimcaja and mc.id_sucursal=tl.id_sucursal
	      ) d
	    ) as telefono
	) t),'[Ninguno->]','') as nro_operacion,
   replace((select replace(replace(t.telefono::text,'{"comprobante":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  fr.serie_facturacion || '-'|| fr.numdoc_facturacion 	 AS comprobante
		from ventas.tbl_facturacion fr
		JOIN creditos.tbl_ventacredito vcr ON fr.id_sucursal = vcr.id_sucursal AND fr.id_facturacion = vcr.id_facturacion
		 JOIN creditos.tbl_detpagocuota dpr ON   vcr.id_credito = dpr.id_credito AND vcr.id_sucursal_credito = dpr.id_sucursal_credito
		where mc.id_movimcaja=dpr.id_movimcaja and mc.id_sucursal=dpr.id_sucursal
	      ) d
	    ) as telefono
	) t),'[Ninguno->]','') as comprobante_ref,
   f.serie_facturacion || '-'|| f.numdoc_facturacion as comprobante_fac
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_comprobante cpf ON cpf.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda mf ON mf.id_moneda = f.id_moneda
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_direccion dir ON dir.id_persona::text = f.id_cliente::text AND dir.id_direccion = f.id_direccion
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN creditos.tbl_ventacredito vc ON f.id_sucursal = vc.id_sucursal AND f.id_facturacion = vc.id_facturacion and vc.id_estado=1
     JOIN creditos.tbl_cuota c ON vc.id_credito = c.id_credito AND vc.id_sucursal_credito = c.id_sucursal_credito
     JOIN creditos.tbl_detpagocuota dp ON c.id_cuotas = dp.id_cuotas AND c.id_credito = dp.id_credito AND c.id_sucursal_credito = dp.id_sucursal_credito and dp.id_estado=1
     JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal and mc.id_estado=1
     JOIN common.tbl_comprobante cpm ON cpm.id_comprobante = mc.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = mc.id_moneda
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mc.id_tipocambio
     JOIN common.tbl_sucursal s on s.id_sucursal=f.id_sucursal
     JOIN common.tbl_empresa emp on emp.id_empresa=s.id_empresa
     JOIN seguridad.tbl_usuario uss on uss.id_usuario=mc.id_usuario
     inner join caja.tbl_cajabanco cb  on(cb.id_cajabanco=mc.id_caja_destino)
UNION ALL
 SELECT (mc.serie::text || '-'::text) || mc.numero::text AS comprobantemov,
    mc.fecha_mov AS fecha,
    cli.doc_persona AS doccliente,
    cli.nombre_razon AS cliente,
    '' direccion,
    'ANTICIPO'::varchar(20) AS tipo_venta,
    'ANTICIPO' AS comprobanteventa,
    vend.nombre_razon AS vendedor,
    m.simbolo AS monedaventa,
    c.nro_cuota,
    c.imp_total,
    dp.imp_pago AS imp_pagocuota,
    mc.imp_movimiento,
    c.fec_vencimiento,
    c.id_cuotas,
    c.id_credito,
    c.id_sucursal_credito,
    mc.id_movimcaja,
    mc.id_sucursal,
    ( SELECT sum(now()::date - cc.fec_vencimiento::date) AS sum
           FROM creditos.tbl_cuota cc
          WHERE cc.id_credito = cc.id_credito AND cc.id_sucursal_credito = cc.id_sucursal_credito AND cc.id_cuotas = c.id_cuotas) AS dias_atrazados,
    COALESCE(( SELECT sum(cc.imp_cuota) AS sum
           FROM creditos.tbl_cuota cc
          WHERE c.id_credito = cc.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito AND c.id_cuotas = cc.id_cuotas), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota cc
             JOIN creditos.tbl_detpagocuota cmov ON cc.id_cuotas = cmov.id_cuotas AND cc.id_credito = cmov.id_credito AND cc.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_credito = cc.id_credito AND c.id_sucursal_credito = cc.id_sucursal_credito AND c.id_cuotas = cc.id_cuotas), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND c.id_cuotas = nc.id_cuota), 0::numeric) AS saldo,
        CASE
            WHEN (( SELECT count(*) AS count
               FROM caja.tbl_detmovpago dpm
              WHERE dpm.id_movimcaja = mc.id_movimcaja AND dpm.id_sucursal = mc.id_sucursal)) > 1 THEN 'PAGOS VARIOS'::text
            ELSE ( SELECT ('F.P:'::text || COALESCE(fp.descripcion, ''::character varying)::text) ||
                    CASE fp.id_formapago
                        WHEN '01'::bpchar THEN ' '::text
                        WHEN '02'::bpchar THEN ((' '::text || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '03'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '04'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        WHEN '05'::bpchar THEN ((('EN BANCO '::text || ' '::text) || COALESCE(ban.Nombre_Ban, ''::character varying)::text) || ' '::text) || COALESCE(cba.nro_cuenta, ''::character varying)::text
                        ELSE NULL::text
                    END
               FROM caja.tbl_detmovpago dpm
                 JOIN common.tbl_formapago fp ON fp.id_formapago = dpm.id_formapago
                 JOIN caja.tbl_cuentabancaria cba ON cba.id_cuenta = dpm.id_cuenta
                 JOIN COMMON.TBL_BANCO ban ON ban.id_BANCO = dpm.id_BANCO
              WHERE dpm.id_movimcaja = mc.id_movimcaja AND dpm.id_sucursal = mc.id_sucursal)
        END AS glosa,
  cpf.descripcion_larga as nom_comprobante,
  s.direccion as direccion_suc,
  s.telefono,
  s.celular,
  s.email,
  emp.ruc,
  emp.nombre as empresa,
  dp.imp_mora,
  C.fec_registro as fec_emision,
  uss.camp2 as usuario,
  cb.descripcion as caja,
  dp.total_mora,
  mc.doc_referencia,
'' nro_operacion,
'' as comprobante_ref,
'' as comprobante_fac
   FROM caja.tbl_movcaja mc
JOIN creditos.tbl_detpagocuota dp ON  mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
JOIN common.tbl_comprobante cpf ON cpf.id_comprobante = mc.id_comprobante
JOIN planillas.tbl_persona vend ON vend.id_persona::text = mc.id_persona::text
JOIN planillas.tbl_persona cli ON cli.id_persona::text = mc.id_personaingdiv::text
JOIN creditos.tbl_cuota c ON dp.id_credito = c.id_credito AND dp.id_sucursal_credito = c.id_sucursal_credito and c.id_cuotas=dp.id_cuotas
JOIN common.tbl_moneda m ON m.id_moneda = mc.id_moneda
JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mc.id_tipocambio
JOIN common.tbl_sucursal s on s.id_sucursal=mc.id_sucursal
JOIN common.tbl_empresa emp on emp.id_empresa=s.id_empresa
JOIN seguridad.tbl_usuario uss on uss.id_usuario=mc.id_usuario
inner join caja.tbl_cajabanco cb  on(cb.id_cajabanco=mc.id_caja_destino);

SELECT *FROM CREDITOS.TBL_CUOTA
SELECT *FROM CAJA.TBL_MOVCAJA
select *from common.tbl_empresa

select *from common.tbl_comprobante

create or replace view almacen.v_salidas_almacen
as
select (cp.descripcion_corta || '/' || c.serie || '-' || c.numero) as NroComprobante ,c.fecha,per.nombre_razon as cliente,p.descripcion_larga as producto,d.desc_corta as unidad,dm.cantidad,
alor.descalmacen as AlmacenOrigen,alde.descAlmacen as almacendestino,tran.descripcion_larga as motivo ,
c.id_almorigen,
dm.id_producto

from almacen.tbl_cabmovalm c
inner join almacen.tbl_detmovalm dm on c.id_movimiento=dm.id_movimiento
inner join planillas.tbl_persona per on per.id_persona=c.id_clientprov
inner join almacen.tbl_detproducto dp on dp.id_producto=dm.id_producto and dm.id_unidadingreso=dp.id_unidadventa
inner join almacen.tbl_producto p on p.id_producto=dp.id_producto
inner join almacen.tbl_unidad d on d.id_unidadventa=dp.id_unidadventa
inner join common.tbl_tranzaccion tran on tran.id_tranzaccion=c.id_tranzaccion
inner join common.tbl_comprobante cp on cp.id_comprobante=c.id_comprobante
left join almacen.tbl_almacen alor on alor.id_almacen=c.id_almorigen
left join almacen.tbl_almacen alde on alde.id_almacen=c.id_almdestino
where c.salida=true
order by dm.id_producto,c.fecha

CREATE OR REPLACE VIEW creditos.v__posicion__de__cartera
AS
 SELECT
        CASE
            WHEN fac.id_unidad IS NULL THEN ((((tbl_comprobante.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || '-'::text) || fac.numdoc_facturacion::text)::character varying
            ELSE ( SELECT prod.descripcion_larga
               FROM almacen.tbl_producto prod
              WHERE prod.id_producto::text = fac.id_unidad::text)
        END::text AS documento,
    to_char(cred.fec_emision, 'dd/mm/yyyy'::text) AS fec_credito,
    cli.nombre_razon AS cliente,
    (dir.direccion || ', '::text) || btrim(dis.distrito::text) AS direccion,
    to_char(( SELECT c.fec_vencimiento
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          ORDER BY c.nro_cuota DESC
         LIMIT 1), 'dd/mm/yyyy'::text) AS fec_vencimiento,
    tbl_moneda.simbolo AS moneda,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS credito,
    COALESCE(( SELECT sum(mc.imp_movimiento) AS sum
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
          WHERE dp.id_credito = vc.id_credito AND dp.id_sucursal_credito = vc.id_sucursal_credito AND mc.id_estado = 1), 0::numeric) AS pagos,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota c
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito AND mov.id_estado = 1), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS saldo,
    fac.imp_total + COALESCE(( SELECT sum(c.imp_interes) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
    COALESCE(to_char(( SELECT mc.fecha_mov
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
          WHERE dp.id_credito = vc.id_credito AND dp.id_sucursal_credito = vc.id_sucursal_credito
          ORDER BY mc.fecha_mov DESC
         LIMIT 1), 'dd/mm/yyyy'::text), ''::text) AS ultimo_pago,
    ( SELECT sum(now()::date - cc.fec_vencimiento::date) AS sum
           FROM creditos.tbl_cuota cc
          WHERE cred.id_credito = cc.id_credito AND cred.id_sucursal_credito = cc.id_sucursal_credito) AS dias_atrazados,
    tbl_tipoventa.descripcion_larga::text AS tipo_venta,
    fac.id_facturacion,
    fac.id_sucursal,
    fac.id_cliente,
    fac.id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    tbl_comprobante.descripcion_corta AS comprobante,
    fac.serie_facturacion,
    fac.numdoc_facturacion,
    cli.doc_persona AS doc_cliente,
    suc.id_empresa,
    cli.id_vendtitular AS id_vendedor,
    (((( SELECT c.fec_vencimiento::date AS fec_vencimiento
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          ORDER BY c.nro_cuota DESC
         LIMIT 1)) - cred.fec_emision::date)::text) || ' DIAS'::text AS dias_credito,
    COALESCE((((vend.apell_paterno::text || ''::text) || vend.apell_materno::text) || ', '::text) || vend.nombres::text, vend.nombre_razon::text) AS vendedor,
    COALESCE(vend.dni, vend.doc_persona) AS doc_vendedor,
    dis.distrito
   FROM ventas.tbl_facturacion fac
     JOIN creditos.tbl_ventacredito vc ON fac.id_sucursal = fac.id_sucursal AND vc.id_facturacion = fac.id_facturacion AND fac.id_tipoventa = 2
     JOIN creditos.tbl_credito cred ON cred.id_credito = vc.id_credito AND cred.id_sucursal_credito = vc.id_sucursal_credito
     JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
     JOIN ventas.tbl_direccion dir ON dir.id_persona::text = fac.id_cliente::text AND dir.id_direccion = fac.id_direccion
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::bpchar = cli.id_vendtitular
     JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = fac.id_sucursal
  WHERE fac.id_estado = 1
  ORDER BY (( SELECT sum(now()::date - cc.fec_vencimiento::date) AS sum
           FROM creditos.tbl_cuota cc
          WHERE cred.id_credito = cc.id_credito AND cred.id_sucursal_credito = cc.id_sucursal_credito)) DESC;

ALTER TABLE creditos.v__posicion__de__cartera
  OWNER TO postgres;

CREATE OR REPLACE VIEW creditos.v_historico_cancelaciones_creditos
 AS
 SELECT f.fecha_venta,
    (((tc.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    cli.nombre_razon AS cliente,
    c.nro_cuota,
    c.fec_vencimiento,
    f.valor_venta,
    f.imp_igv,
    f.imp_percepcion,
    f.imp_neto,
    dpc.imp_pago,
    dpc.fec_pago,
    dpc.fec_pago::date - f.fecha_venta::date AS dias_transcurridoscancelacion,
    c.fec_vencimiento::date - f.fecha_venta::date AS dia_credito,
    dpc.fec_pago::date - c.fec_vencimiento::date AS dias_atrazados,
    f.id_sucursal,
    f.id_cliente
   FROM ventas.tbl_facturacion f
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = f.id_cliente::text
     JOIN common.tbl_comprobante tc ON tc.id_comprobante = f.id_comprobante
     JOIN creditos.tbl_ventacredito cr ON f.id_facturacion = cr.id_facturacion AND f.id_sucursal = cr.id_sucursal
     JOIN creditos.tbl_cuota c ON cr.id_credito = c.id_credito AND cr.id_sucursal_credito = c.id_sucursal_credito
     JOIN creditos.tbl_detpagocuota dpc ON c.id_cuotas = dpc.id_cuotas AND c.id_credito = dpc.id_credito AND c.id_sucursal_credito = dpc.id_sucursal_credito
     JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dpc.id_movimcaja AND mc.id_sucursal = dpc.id_sucursal
  WHERE f.id_estado = 1
  ORDER BY ((((tc.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text);

ALTER TABLE creditos.v_historico_cancelaciones_creditos
  OWNER TO postgres;

CREATE OR REPLACE VIEW common.v_empresa
AS
 SELECT est.id_empresa,
	est.nombre,
	est.ruc,
	est.rep_legal,
	est.direccion,
	e.id_estado,
	e.des_estado AS estado,
	s.id_sector,
	s.sector,
	d.id_distrito,
	trim(d.distrito) || '-' || trim(p.provincia) || ' ' || trim(dp.departamento) as Ubigeo,
	(case when est.id_empresa=1 then ' BCP: 305-1828065-010' else 'BCP: 305-36426007-0-33' end )::text AS cuentacba,
	Nro_resolucion::text AS nroresolucion,
	(case when est.id_empresa=1 then 'ASANCHEZ' else 'ISELA' end )::text AS usuario,
	COALESCE(afecto_percepcion,false) as afecto_percepcion,
	est.emisor_electronico,
	est.ZONA_EXONERADA,
	est.uss_services,
	est.pwd_services,
	est.uss_sunat ,
	est.pwd_sunat,
	est.email_facturacion,
	est.pwd_facturacion  ,
	est.smtp_facturacion ,
	est.port_facturacion ,
	endpoint_mobil,
	genera_mobil ,
	correo_ssl
   FROM common.tbl_empresa est
     JOIN common.tbl_estado e ON est.id_estado = e.id_estado
     INNER JOIN ventas.tbl_sector  s on s.id_sector=est.id_sector
     INNER JOIN ventas.tbl_zona Z ON Z.ID_ZONA=S.ID_ZONA
     INNER JOIN COMMON.tbl_distrito D ON D.id_distrito=Z.id_distrito
     INNER JOIN COMMON.tbl_provincia P ON P.id_provincia=D.id_provincia
     INNER JOIN common.tbl_dpto dp on dp.id_dpto=p.id_dpto;

CREATE OR REPLACE VIEW ventas.v_pre_orden_carga AS
 SELECT f.numdoc_facturacion,
    "right"(f.serie_facturacion::text, 3)::character(3) AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END AS cliente,
    (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS direccion,
    f.fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_neto) AS tot_letras,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    f.imp_dscto AS totaldscto,
    m.simbolo AS moneda,
    f.id_facturacion,
    f.id_estado,
    f.id_vendedor,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    tv.descripcion_larga AS tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS ubigeo,
        CASE
            WHEN f.id_tipoventa = 1 THEN f.fecha_venta
            ELSE COALESCE(( SELECT c_1.fec_vencimiento
               FROM creditos.tbl_credito cr
                 JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
                 JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
              WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
              ORDER BY c_1.nro_cuota DESC
             LIMIT 1), f.fecha_venta)
        END AS fec_vencimiento,
    f.valor_venta AS valorventa_percep,
    f.imp_igv AS impigv_percep,
    f.imp_total AS total_percep,
    f.imp_percepcion AS impprecep_percep,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
    suc.direccion AS direccion_suc,
    suc.telefono,
    suc.celular,
    emp.ruc,
        CASE f.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
    cp.codigosunat,
    btrim(din.codigo_sunat::text) AS tipo_docliente,
    to_char(f.fecha_venta, 'yyyy-mm-dd'::text) AS fechaemision,
    f.fecha_reg,
    f.status_sunat AS enviado,
    btrim(dep.departamento::text) AS departamento,
    btrim(prov.provincia::text) AS provincia,
    btrim(dis.distrito::text) AS distrito,
    COALESCE(f.imp_basepercepcion, 0::numeric)::numeric(14,2) AS imp_basepercepcion,
    COALESCE(f.imp_percepcion, 0::numeric) + COALESCE(f.imp_basepercepcion, 0::numeric) AS netopercepcion,
    COALESCE(f.digestvalue, ''::character varying)::character varying(500) AS digestvalue,
    COALESCE(f.signaturevalue, ''::character varying)::character varying(500) AS signaturevalue,
    COALESCE(c.email, ''::character varying) AS email,
    ventas.fn_ref_guia_ventas(f.id_facturacion::bigint, f.id_sucursal) AS guia_ref,
    suc.codigo_establecimiento,
    suc.id_ubigeo,
    suc.nom_ubigeo AS ubigeo_sucursal,
    suc.direccion AS direccion_sucursal,
    chofer.doc_persona AS doc_chofer,
    chofer.nombre_razon AS chofer,
    (cpv.serie::text || '-'::text) || cpv.numero::text AS preventa,
    (g.serie::text || '-'::text) || g.numero::text AS guia,
    ut.modelo,
    ut.marca,
    ut.color,
    ut.placa,
    tr.id_transportista,
    detd.id_despacho,
    vend.nombre_razon::text AS vendedor_full
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN planillas.tbl_tipdocidentidad din ON din.id_tipdocidentidad = c.id_tipdocidentidad
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN common.v_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp ON emp.id_empresa = suc.id_empresa
     JOIN ventas.tbl_transportista tr ON tr.id_transportista = f.id_transportista
     JOIN planillas.tbl_persona chofer ON chofer.id_persona::text = tr.id_persona::text
     JOIN ventas.tbl_unidadtransporte ut ON ut.id_unidadtransporte = tr.id_unidadtransporte
     JOIN ventas.tbl_cotizacionpreventa cpv ON cpv.id_cotizapreventa = f.id_cotizapreventa AND cpv.id_sucursal = f.id_sucursalpreventa
     JOIN almacen.tbl_detdespacho detd ON detd.id_facturacion = f.id_facturacion AND detd.id_sucursalfac = f.id_sucursal
     LEFT JOIN ventas.tbl_guiaremisionventa g ON f.id_facturacion = g.id_facturacion AND f.id_sucursal = g.id_sucursalfac
  WHERE f.id_estado = 1 AND f.nota_credito = false AND detd.id_estado = 1
  ORDER BY f.fecha_venta, f.id_comprobante, f.serie_facturacion, f.numdoc_facturacion;

select *from common.tbl_empresa

update common.tbl_empresa  set id_sector=1

select *d
select *from common.tbl_empresa
select *from common.tbl_dpto

select *from common.tbl_distrito

CREATE OR REPLACE VIEW common.v_moneda
AS
 SELECT tbl_moneda.id_moneda,
    tbl_moneda.descripcion_larga,
    tbl_moneda.simbolo,
    tbl_moneda.id_estado,
    predeterminado
   FROM common.tbl_moneda;

select *from common.tbl_moneda

select * from VENTAS.V_LINEACREDITO  where id_cliente='5' and id_estado=1 limit 1

CREATE OR REPLACE VIEW common.v_lista_moneda
AS
 SELECT est.id_moneda,
    est.descripcion_larga,
    est.simbolo,
    e.id_estado,
    e.des_estado AS estado,
    est.predeterminado
   FROM common.tbl_moneda est
     JOIN common.tbl_estado e ON est.id_estado = e.id_estado;

select * from common.v_lista_moneda  where descripcion_larga || simbolo || id_moneda ilike '%%' order by id_moneda

CREATE OR REPLACE VIEW almacen.v_progrmacionesinventario
AS
 SELECT inv.id_inventario,
    inv.descripcion,
    inv.fecha::date AS fecha,
    e.des_estado AS estado,
    inv.id_estado
   FROM almacen.tbl_programainventario inv
     JOIN common.tbl_estado e ON e.id_estado = inv.id_estado;

SELECT DISTINCT ID_INVENTARIO FROM ALMACEN.TBL_EXISTENCIA
SELECT *FROM  almacen.tbl_programainventario

 DELETE FROM almacen.tbl_programainventario WHERE ID_INVENTARIO=2

CREATE OR REPLACE    VIEW common.v_turno
AS
 SELECT t.id_turno,
    t.descripcion,
    t.horainicio,
    t.horatermino,
    e.id_estado,
    e.des_estado AS estado
   FROM common.tbl_turno t
    JOIN common.tbl_estado e ON e.id_estado = t.estado;

CREATE OR REPLACE VIEW ventas.v_turnos AS
 SELECT est.id_turno,
    est.descripcion,
    est.horainicio,
    est.horatermino,
    e.id_estado,
    e.des_estado AS estado
   FROM ventas.tbl_turno est
     JOIN common.tbl_estado e ON e.id_estado = est.estado;

select *from ventas.tbl_turno

create or replace view configuracion.v_parametro_sucursal
as
select
	c.idflagconfig,
	c.idtabla,
	cs.estado as operacion,
	true estado,
	c.fec_registro,
	c.fec_actualiza,
	c.nombre,
	c.value,
	cs.id_sucursal,
	id_configsucursal
from configuracion.config_sistema c
inner join configuracion.tbl_configsucursal cs on c.idflagconfig=cs.idflagconfig
inner join common.tbl_sucursal s on s.id_sucursal=cs.id_sucursal

select  from
caja.tbl_presupuesto p
inner join caja.tbl_movcaja m on (p.id_responsable=m.id_personaingdiv)
JOIN common.tbl_comprobante com ON com.id_comprobante = fac.id_comprobante

 SELECT commov.descripcion_corta AS comprobante,
            mov.glosa AS nro_facturacion,
            (cli.nombre_razon::text || '->'::text) || mov.glosa AS cliente,
            m.simbolo AS moneda,
            mov.id_persona AS id_vendedor,
            dmov.imp_pago AS imp_total,
                CASE
                    WHEN mov.signo = (-1) THEN 'Egresos'::character varying
                    ELSE fp.descripcion
                END AS formapago,
            COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_soles,
                CASE
                    WHEN m.id_moneda = 2 THEN
                    CASE
                        WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_dolares,
                CASE
                    WHEN mov.signo = (-1) THEN '99'::bpchar
                    ELSE dmov.id_formapago
                END AS id_formapago,
            mov.id_turno,
            mov.fecha_mov,
            mov.id_caja_destino AS id_caja,
            mov.id_movimcaja,
            mov.id_sucursal,
            (((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text AS comprobante_mov,
            cto.id_concepto,
            cto.descripcion_larga AS concepto,
                CASE
                    WHEN mov.id_comprobante = 4 THEN 0::numeric
                    ELSE
                    CASE
                        WHEN m.id_moneda = 1 THEN
                        CASE
                            WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                            ELSE dmov.imp_pago
                        END
                        ELSE 0.00
                    END
                END AS importe_contable,
            mov.id_comprobante,
            mov.serie,
            mov.numero,
            0 AS id_facturacion,
            2::integer op_fil,
             mov.serie::bigint as serie1,
            mov.numero::bigint numero1,
            CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_totalreporte

from caja.tbl_presupuesto p
inner join caja.tbl_movcaja mov on (p.id_responsable=mov.id_personaingdiv)
      JOIN planillas.tbl_persona cli ON cli.id_persona::text = mov.id_personaingdiv::text
   JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
   JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
   JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
   JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
   JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
   JOIN common.tbl_concepto cto ON cto.id_concepto::text = mov.id_concepto::text
  ORDER BY id_formapago, id_concepto,id_comprobante ,serie1, numero1;

select * from seguridad.v_menus where id_usuario='1    ' order by id_menu

SELECT *FROM compras.v_detcompras

CREATE OR REPLACE VIEW compras.v_detcompras
AS
 SELECT dc.item,
    dc.cantidad,
    dc.precio,
    p.id_producto,
    u.id_unidadventa,
    dc.id_almacen,
    dc.id_sucursalcompra,
    dc.id_inventario,
    dc.anio,
    dc.id_compra,
    dc.imp_dscto,
    dc.imp_igv,
    dc.imp_incluido,
    dc.imp_venta,
    dc.imp_flete,
    dc.imp_total,
    dc.imp_costofinal,
    dc.porcent_igv,
    dc.porcent_dscto,
    dc.peso,
    dc.id_mes,
    dc.lote,
    CASE WHEN p.codigo='TXT-01' then dc.descripcion_linea else  p.descripcion_larga end AS producto,
    u.desc_corta AS desc_unidad,
    e.id_estado,
    e.des_estado AS estado,
    (((((((((((dc.id_sucursalcompra || ','::text) || dc.anio) || ','::text) || dc.id_compra) || ','::text) || dc.id_mes) || ','::text) || dc.id_almacen) || ','::text) || p.id_producto::text) || ','::text) || u.desc_corta::text AS union_ids,
    p.servicio as ctrla_stock,
    id__compra,
    id__detcompra,
    p.gestiona_lotes,
    p.gestiona_series
   FROM compras.tbl_detcompra dc
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = dc.id_producto::text AND dp.id_unidadventa = dc.id_unidadventa
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dc.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN common.tbl_estado e ON dc.id_estado = e.id_estado;

select  *from almacen.v_detalle_compra_apllica_nota_Credito

CREATE OR REPLACE view almacen.v_detalle_compra_apllica_nota_Credito
as
 SELECT
                    g.codarti,
                    g.articulo,
                    g.grupo,
                    g.linea,
                    g.contenido,
                    g.unidadm,
                    g.almacen,

                    sum(g.cant) AS cant,
                    g.punit,
                     CASE
			    WHEN g.punit > 0::numeric THEN compras.fn_dscto_notacredito(g.id__compra, g.id_sucursalcompra)::numeric(20,4)::text
			    ELSE '-'::text
		    END imp_dscto,
                    g.punit -
                        CASE
                            WHEN g.punit > 0::numeric THEN COALESCE(compras.fn_dscto_notacredito(g.id__compra, g.id_sucursalcompra), 0::numeric)
                            ELSE 0::numeric
                        END AS costo,
		   (g.punit -
                        CASE
                            WHEN g.punit > 0::numeric THEN COALESCE(compras.fn_dscto_notacredito(g.id__compra, g.id_sucursalcompra), 0::numeric)
                            ELSE 0::numeric
                        END)*sum(g.cant) AS Imp_total,
                    g.idunimed,
                    g.serie,
                    g.numero,
                    g.id_producto,
                    g.codigo,
                     g.fecha,
                    g.tipodoc,
                    g.documento,
                    g.id__compra,
                    g.id_sucursalcompra

                   FROM ( SELECT 1::character(1) AS tipo,
                            btrim(prod.id_producto::text) AS codarti,
                            prod.descripcion_larga AS articulo,
                            g_1.descripcion_larga AS grupo,
                            f.descripcion_larga AS linea,
                            0::numeric AS contenido,
                            p.nombre_razon AS proveedor,
                            p.doc_persona AS ruc,
                            u.desc_corta AS unidadm,
                            d.id_almacen AS almacen,
                            'C'::text AS movi,
                            c.fec_ingalmacen::date AS fecha,
                            c.id_comprobante AS tipodoc,
                            (((comp.descripcion_corta::text || '/'::text) || c.serie::text) || '-'::text) || c.nro_doc_compra::text AS documento,
                            x.cantidad AS cant,
                            (d.imp_incluido /
                                CASE
                                    WHEN x.cantidad > 0::numeric THEN x.cantidad
                                    ELSE 1::numeric
                                END)::numeric(20,4) +
                                CASE
                                    WHEN COALESCE(d.imp_flete, 0::numeric) > 0::numeric THEN COALESCE(d.imp_flete, 0::numeric) / dp.val_unidad
                                    ELSE 0::numeric
                                END::numeric(20,4) AS punit,
                            x.unit_id AS idunimed,
                            c.serie,
                            c.nro_doc_compra::integer AS numero,
                            prod.id_producto,
                            d.id_almacen,
                            s.id_empresa,
                            f.id_familia,
                            date_part('hour'::text, c.fec_documento) AS hora,
                            prod.codigo,
                            c.id__compra,
                            c.id_sucursalcompra
                           FROM compras.tbl_compra c
                             JOIN ventas.tbl_direccion dir ON dir.id_direccion = c.id_dirproveedor AND dir.id_persona::text = c.id_proveedor::text
                             JOIN planillas.tbl_persona p ON p.id_persona::text = dir.id_persona::text
                             JOIN compras.tbl_detcompra d ON c.id_sucursalcompra = d.id_sucursalcompra AND c.id__compra = d.id__compra AND d.id_estado = 1
                             JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa AND dp.id_estado = 1
                             JOIN LATERAL almacen.fn_stock(d.id_producto, d.id_unidadventa, d.id_almacen, d.cantidad) x(product_id, unit_id, val_unit, stock, cantidad) ON x.product_id::text = dp.id_producto::text
                             JOIN almacen.tbl_producto prod ON prod.id_producto::text = dp.id_producto::text
                             JOIN almacen.tbl_familia f ON f.id_familia = prod.id_familia
                             JOIN almacen.tbl_grupo g_1 ON g_1.id_grupo = f.id_grupo
                             JOIN almacen.tbl_unidad u ON u.id_unidadventa = x.unit_id
                             JOIN common.tbl_sucursal s ON s.id_sucursal = c.id_sucursalcompra
                             JOIN common.tbl_comprobante comp ON comp.id_comprobante = c.id_comprobante
                          WHERE c.id_estado = 1 AND c.nota_credito = false) g
                  GROUP BY g.tipo, g.codarti, g.articulo, g.grupo, g.linea, g.contenido, g.proveedor, g.ruc, g.unidadm, g.almacen, g.movi, g.fecha, g.tipodoc, g.documento, g.cant, g.punit, g.idunimed, g.serie, g.numero, g.id_producto, g.id_almacen,
g.id_empresa, g.id_familia, g.hora, g.codigo, g.id__compra, g.id_sucursalcompra

select *from compras.tbl_compra

select *from compras.v_detcompras
DELETE from common.tbl_concepto WHERE ID_ESTADO<>1
SELECT *FROM COMMON.TBL_CONCEPTO WHERE ID=1102

select *from compras.tbl_detcompra

CREATE OR REPLACE VIEW contabilidad.v_conceptos
AS
 SELECT p.id_producto AS id,
    p.descripcion_larga AS nombrecompleto,
    'PRODUCTO'::text AS origen
   FROM almacen.tbl_producto p where p.id_producto<>'TXT-01'
UNION
 SELECT id::text AS id,
    tbl_concepto.descripcion_larga AS nombrecompleto,
    'CONCEPTO'::text AS origen
   FROM common.tbl_concepto
  ORDER BY 1 DESC;

CREATE OR REPLACE VIEW seguridad.v_menus
AS
 SELECT
    item.id_menu,
    item.menu,
    item.descripcion,
    item.menu_item,
    item.item_orden,
    item.fk_codmenu,
    item.evento,
    item.maximised,
    item.icono,
    tbl_permiso.estado AS rol,
    tbl_permiso.id_usuario
   FROM seguridad.tbl_menu item
     JOIN seguridad.tbl_permiso ON item.id_menu = tbl_permiso.item;

/*
CREATE OR REPLACE VIEW caja.v_liquidacion_ventas_contado
AS
        SELECT com.descripcion_corta AS comprobante,
            ((fac.serie_facturacion::text || '-'::text) || fac.numdoc_facturacion::text) ||
                CASE
                    WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                    ELSE ''::text
                END AS nro_facturacion,
                CASE
                    WHEN btrim(fac.id_cliente::text) = '000'::text THEN btrim(fac.nomape_cliente)
                    ELSE (btrim(cli.nombre_razon::text) || '->'::text) || mov.glosa
                END AS cliente,
            m.simbolo AS moneda,
            mov.id_persona AS id_vendedor,
                CASE
                    WHEN fac.id_estado = 1 THEN fac.imp_total
                    ELSE 0.00
                END AS imp_total,
            fp.descripcion AS formapago,
            COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN fac.id_estado = 1 THEN dmov.imp_pago
                        ELSE 0::numeric
                    END
                    ELSE 0.00
                END AS imp_soles,
                CASE
                    WHEN m.id_moneda = 2 THEN dmov.imp_pago
                    ELSE 0.00
                END AS imp_dolares,
            dmov.id_formapago,
            mov.id_turno,
            mov.fecha_mov,
            mov.id_caja_destino AS id_caja,
            mov.id_movimcaja,
            mov.id_sucursal,
            ((((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text) ||
                CASE
                    WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                    ELSE ''::text
                END AS comprobante_mov,
            '000'::character varying AS id_concepto,
            'Por documento'::character varying AS concepto,
                CASE
                    WHEN m.id_moneda = 1 THEN dmov.imp_pago
                    ELSE 0.00
                END AS importe_contable,
            fac.id_comprobante,
            fac.serie_facturacion AS serie,
            fac.numdoc_facturacion AS numero,
            fac.id_facturacion,
            1::integer op_fil,
            fac.serie_facturacion::bigint AS serie1,
            fac.numdoc_facturacion::bigint AS numero1,
              CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN fac.id_estado = 1 THEN dmov.imp_pago
                        ELSE 0::numeric
                    END
                    ELSE 0.00
                END AS imp_totalreporte
           FROM ventas.tbl_facturacion fac
      JOIN common.tbl_comprobante com ON com.id_comprobante = fac.id_comprobante
   JOIN ventas.tbl_direccion dir ON dir.id_direccion = fac.id_direccion AND dir.id_persona::text = fac.id_cliente::text
   JOIN caja.tbl_movcaja mov ON fac.id_sucursal = mov.id_sucursal_fac AND fac.id_facturacion = mov.id_facturacion
   JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
   JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
   JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
   JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
   JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
   JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
  WHERE dmov.Id_FORMAPAGO IN ('01','02')

  union
   SELECT com.descripcion_corta AS comprobante,
            ((fac.serie_facturacion::text || '-'::text) || fac.numdoc_facturacion::text) ||
                CASE
                    WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                    ELSE ''::text
                END AS nro_facturacion,
                CASE
                    WHEN btrim(fac.id_cliente::text) = '000'::text THEN btrim(fac.nomape_cliente)
                    ELSE (btrim(cli.nombre_razon::text) || '->'::text) || mov.glosa
                END AS cliente,
            m.simbolo AS moneda,
            mov.id_persona AS id_vendedor,
                CASE
                    WHEN fac.id_estado = 1 THEN fac.imp_total
                    ELSE 0.00
                END AS imp_total,
            fp.descripcion AS formapago,
            COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN fac.id_estado = 1 THEN dmov.imp_pago
                        ELSE 0::numeric
                    END
                    ELSE 0.00
                END AS imp_soles,
                CASE
                    WHEN m.id_moneda = 2 THEN dmov.imp_pago
                    ELSE 0.00
                END AS imp_dolares,
            dmov.id_formapago,
            mov.id_turno,
            mov.fecha_mov,
            mov.id_caja_destino AS id_caja,
            mov.id_movimcaja,
            mov.id_sucursal,
            ((((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text) ||
                CASE
                    WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                    ELSE ''::text
                END AS comprobante_mov,
            '000'::character varying AS id_concepto,
            'Por documento'::character varying AS concepto,
                CASE
                    WHEN m.id_moneda = 1 THEN dmov.imp_pago
                    ELSE 0.00
                END AS importe_contable,
            fac.id_comprobante,
            fac.serie_facturacion AS serie,
            fac.numdoc_facturacion AS numero,
            fac.id_facturacion,
            1::integer op_fil,
            fac.serie_facturacion::bigint AS serie1,
            fac.numdoc_facturacion::bigint AS numero1,
            0::NUMERIC(20,3) AS imp_totalreporte
           FROM ventas.tbl_facturacion fac
      JOIN common.tbl_comprobante com ON com.id_comprobante = fac.id_comprobante
   JOIN ventas.tbl_direccion dir ON dir.id_direccion = fac.id_direccion AND dir.id_persona::text = fac.id_cliente::text
   JOIN caja.tbl_movcaja mov ON fac.id_sucursal = mov.id_sucursal_fac AND fac.id_facturacion = mov.id_facturacion
   JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
   JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
   JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
   JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
   JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
   JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
  WHERE DMOV.Id_FORMAPAGO IN ('03','05','03')
UNION ALL
         SELECT commov.descripcion_corta AS comprobante,
            mov.glosa AS nro_facturacion,
            (cli.nombre_razon::text || '->'::text) || mov.glosa AS cliente,
            m.simbolo AS moneda,
            mov.id_persona AS id_vendedor,
            dmov.imp_pago AS imp_total,
                CASE
                    WHEN mov.signo = (-1) THEN 'Egresos'::character varying
                    ELSE fp.descripcion
                END AS formapago,
            COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_soles,
                CASE
                    WHEN m.id_moneda = 2 THEN
                    CASE
                        WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_dolares,
                CASE
                    WHEN mov.signo = (-1) THEN '99'::bpchar
                    ELSE dmov.id_formapago
                END AS id_formapago,
            mov.id_turno,
            mov.fecha_mov,
            mov.id_caja_destino AS id_caja,
            mov.id_movimcaja,
            mov.id_sucursal,
            (((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text AS comprobante_mov,
            cto.id_concepto,
            cto.descripcion_larga AS concepto,
                CASE
                    WHEN mov.id_comprobante = 4 THEN 0::numeric
                    ELSE
                    CASE
                        WHEN m.id_moneda = 1 THEN
                        CASE
                            WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                            ELSE dmov.imp_pago
                        END
                        ELSE 0.00
                    END
                END AS importe_contable,
            mov.id_comprobante,
            mov.serie,
            mov.numero,
            0 AS id_facturacion,
            2::integer op_fil,
             mov.serie::bigint as serie1,
            mov.numero::bigint numero1,
            CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN mov.signo = (-1) THEN dmov.imp_pago * (-1)::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_totalreporte
           FROM caja.tbl_movcaja mov
      JOIN planillas.tbl_persona cli ON cli.id_persona::text = mov.id_personaingdiv::text
   JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
   JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
   JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
   JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
   JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
   JOIN common.tbl_concepto cto ON cto.id_concepto::text = mov.id_concepto::text
  ORDER BY id_formapago, id_concepto,id_comprobante ,serie1, numero1;

*/

select imp_total ,imp_totalreporte, * from caja.v_liquidacion_ventas_contado   where fecha_mov>='01/09/2018' and fecha_mov::date<='01/09/2018' and id_caja=8 and id_turno=1

CREATE OR REPLACE  VIEW caja.v_liquidacion_ventas_contado
AS
(
        (
                 SELECT com.descripcion_corta AS comprobante,
                    ((fac.serie_facturacion::text || '-'::text) || fac.numdoc_facturacion::text) ||
                        CASE
                            WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                            ELSE ''::text
                        END AS nro_facturacion,
                        CASE
                            WHEN btrim(fac.id_cliente::text) = '000'::text THEN btrim(fac.nomape_cliente)
                            ELSE ((btrim(cli.nombre_razon::text) || '('::text) || mov.glosa) || ')'::text
                        END AS cliente,
                    m.simbolo AS moneda,
                    mov.id_persona AS id_vendedor,
                        CASE
                            WHEN fac.id_estado = 1 THEN fac.imp_total
                            ELSE 0.00
                        END AS imp_total,
                    fp.descripcion AS formapago,
                    COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                        CASE
                            WHEN m.id_moneda = 1 THEN
                            CASE
                                WHEN fac.id_estado = 1 THEN dmov.imp_pago
                                ELSE 0::numeric
                            END
                            ELSE 0.00
                        END AS imp_soles,
                        CASE
                            WHEN m.id_moneda = 2 THEN dmov.imp_pago
                            ELSE 0.00
                        END AS imp_dolares,
                    dmov.id_formapago,
                    mov.id_turno,
                    mov.fecha_mov,
                    mov.id_caja_destino AS id_caja,
                    mov.id_movimcaja,
                    mov.id_sucursal,
                    ((((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text) ||
                        CASE
                            WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                            ELSE ''::text
                        END AS comprobante_mov,
                    '000'::character varying AS id_concepto,
                    'Por documento'::character varying AS concepto,
                        CASE
                            WHEN m.id_moneda = 1 THEN dmov.imp_pago
                            ELSE 0.00
                        END AS importe_contable,
                    fac.id_comprobante,
                    fac.serie_facturacion AS serie,
                    fac.numdoc_facturacion AS numero,
                    fac.id_facturacion,
                    1 AS op_fil,
                    fac.serie_facturacion AS serie1,
                    fac.numdoc_facturacion::bigint AS numero1,
                        CASE
                            WHEN m.id_moneda = 1 THEN
                            CASE
                                WHEN fac.id_estado = 1 THEN dmov.imp_pago
                                ELSE 0::numeric
                            END
                            ELSE 0.00
                        END AS imp_totalreporte,
                    COALESCE(( SELECT sum(c.imp_cuota) AS sum
                           FROM creditos.tbl_ventacredito vc
                             JOIN creditos.tbl_cuota c ON vc.id_credito = c.id_credito AND vc.id_sucursal_credito = c.id_sucursal_credito
                          WHERE vc.id_facturacion = fac.id_facturacion AND vc.id_sucursal = fac.id_sucursal), 0::numeric) - COALESCE(( SELECT sum(mov_1.imp_movimiento) AS sum
                           FROM creditos.tbl_ventacredito vc
                             JOIN creditos.tbl_cuota c ON vc.id_credito = c.id_credito AND vc.id_sucursal_credito = c.id_sucursal_credito
                             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
                             JOIN caja.tbl_movcaja mov_1 ON mov_1.id_movimcaja = cmov.id_movimcaja AND mov_1.id_sucursal = cmov.id_sucursal
                          WHERE vc.id_facturacion = fac.id_facturacion AND vc.id_sucursal = fac.id_sucursal AND mov_1.id_estado = 1), 0::numeric) AS saldo,
                    ''::text AS referencia,
                    mov.fecha_liquidacion,
                    mov.liquidacion_id
                   FROM ventas.tbl_facturacion fac
                     JOIN common.tbl_comprobante com ON com.id_comprobante = fac.id_comprobante
                     JOIN ventas.tbl_direccion dir ON dir.id_direccion = fac.id_direccion AND dir.id_persona::text = fac.id_cliente::text
                     JOIN caja.tbl_movcaja mov ON fac.id_sucursal = mov.id_sucursal_fac AND fac.id_facturacion = mov.id_facturacion
                     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
                     JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
                     JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
                     JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
                     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
                     JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
                  WHERE dmov.id_formapago = ANY (ARRAY['01'::bpchar, '02'::bpchar])
                UNION
                 SELECT com.descripcion_corta AS comprobante,
                    ((fac.serie_facturacion::text || '-'::text) || fac.numdoc_facturacion::text) ||
                        CASE
                            WHEN fac.id_estado = ANY (ARRAY[0, 1]) THEN ''::text
                            ELSE '(Anulado)'::text
                        END AS nro_facturacion,
                        CASE
                            WHEN btrim(fac.id_cliente::text) = '000'::text THEN btrim(fac.nomape_cliente)
                            ELSE (((btrim(cli.nombre_razon::text) || '->'::text) || '('::text) || mov.glosa) || ')'::text
                        END AS cliente,
                    m.simbolo AS moneda,
                    mov.id_persona AS id_vendedor,
                        CASE
                            WHEN fac.id_estado = 1 THEN fac.imp_total
                            ELSE 0.00
                        END AS imp_total,
                    fp.descripcion AS formapago,
                    COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                        CASE
                            WHEN m.id_moneda = 1 THEN
                            CASE
                                WHEN fac.id_estado = 1 THEN dmov.imp_pago
                                ELSE 0::numeric
                            END
                            ELSE 0.00
                        END AS imp_soles,
                        CASE
                            WHEN m.id_moneda = 2 THEN dmov.imp_pago
                            ELSE 0.00
                        END AS imp_dolares,
                    dmov.id_formapago,
                    mov.id_turno,
                    mov.fecha_mov,
                    mov.id_caja_destino AS id_caja,
                    mov.id_movimcaja,
                    mov.id_sucursal,
                    ((((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text) ||
                        CASE
                            WHEN fac.id_estado <> 1 THEN 'Anulado'::text
                            ELSE ''::text
                        END AS comprobante_mov,
                    '000'::character varying AS id_concepto,
                    'Por documento'::character varying AS concepto,
                        CASE
                            WHEN m.id_moneda = 1 THEN dmov.imp_pago
                            ELSE 0.00
                        END AS importe_contable,
                    fac.id_comprobante,
                    fac.serie_facturacion AS serie,
                    fac.numdoc_facturacion AS numero,
                    fac.id_facturacion,
                    1 AS op_fil,
                    fac.serie_facturacion AS serie1,
                    fac.numdoc_facturacion::bigint AS numero1,
                    0::numeric(20,3) AS imp_totalreporte,
                    0 AS saldo,
                    ''::text AS referencia,
                     mov.fecha_liquidacion,
                     mov.liquidacion_id
                   FROM ventas.tbl_facturacion fac
                     JOIN common.tbl_comprobante com ON com.id_comprobante = fac.id_comprobante
                     JOIN ventas.tbl_direccion dir ON dir.id_direccion = fac.id_direccion AND dir.id_persona::text = fac.id_cliente::text
                     JOIN caja.tbl_movcaja mov ON fac.id_sucursal = mov.id_sucursal_fac AND fac.id_facturacion = mov.id_facturacion
                     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
                     JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
                     JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
                     JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
                     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
                     JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
                  WHERE dmov.id_formapago = ANY (ARRAY['03'::bpchar, '05'::bpchar])
                UNION
                 SELECT commov.descripcion_corta AS comprobante,
                    mov.glosa || '--'::text AS nro_facturacion,
                        CASE
                            WHEN btrim(mov.id_personaingdiv::text) = '000'::text THEN btrim(mov.nomape_cliente)
                            ELSE btrim(cli.nombre_razon::text) ||
                            CASE
                                WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN ('('::text || mov.glosa) || ')'::text
                                ELSE '(***Anulado**)'::text
                            END
                        END AS cliente,
                    m.simbolo AS moneda,
                    mov.id_persona AS id_vendedor,
                        CASE
                            WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                            ELSE 0::numeric
                        END AS imp_total,
                        CASE
                            WHEN mov.signo = '-1'::integer THEN 'Egresos'::character varying
                            ELSE fp.descripcion
                        END AS formapago,
                    COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                        CASE
                            WHEN m.id_moneda = 1 THEN
                            CASE
                                WHEN mov.signo = '-1'::integer THEN
                                CASE
                                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago * '-1'::integer::numeric
                                    ELSE 0::numeric
                                END
                                ELSE
                                CASE
                                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                                    ELSE 0::numeric
                                END
                            END
                            ELSE 0.00
                        END AS imp_soles,
                        CASE
                            WHEN m.id_moneda = 2 THEN
                            CASE
                                WHEN mov.signo = '-1'::integer THEN dmov.imp_pago * '-1'::integer::numeric
                                ELSE dmov.imp_pago
                            END
                            ELSE 0.00
                        END AS imp_dolares,
                        CASE
                            WHEN mov.signo = '-1'::integer THEN '99'::bpchar
                            ELSE dmov.id_formapago
                        END AS id_formapago,
                    mov.id_turno,
                    mov.fecha_mov,
                    mov.id_caja_destino AS id_caja,
                    mov.id_movimcaja,
                    mov.id_sucursal,
                    (((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text AS comprobante_mov,
                    cto.id_concepto,
                    cto.descripcion_larga AS concepto,
                        CASE
                            WHEN mov.id_comprobante = 4 THEN 0::numeric
                            ELSE
                            CASE
                                WHEN m.id_moneda = 1 THEN
                                CASE
                                    WHEN mov.signo = '-1'::integer THEN
                                    CASE WHEN mov.id_estado = 1 THEN dmov.imp_pago * '-1'::integer::numeric
					ELSE 0::numeric
                                    END
                                    ELSE
                                    CASE
				WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
				ELSE 0::numeric
                                    END
                                END
                                ELSE 0.00
                            END
                        END AS importe_contable,
                    mov.id_comprobante,
                    mov.serie,
                    mov.numero,
                    0 AS id_facturacion,
                    2 AS op_fil,
                    mov.serie AS serie1,
                    mov.numero::bigint AS numero1,
                        CASE
                            WHEN m.id_moneda = 1 THEN
                            CASE
                                WHEN mov.signo = '-1'::integer THEN
                                CASE
                                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago * '-1'::integer::numeric
                                    ELSE 0::numeric
                                END
                                ELSE
                                CASE
                                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                                    ELSE 0::numeric
                                END
                            END
                            ELSE 0.00
                        END AS imp_totalreporte,
                    0 AS saldo,
                    mov.doc_referencia AS referencia,
                    mov.fecha_liquidacion,
                    mov.liquidacion_id
                   FROM caja.tbl_movcaja mov
                     JOIN planillas.tbl_persona cli ON cli.id_persona::text = mov.id_personaingdiv::text
                     JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
                     JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
                     JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
                     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
                     JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
                     JOIN common.tbl_concepto cto ON cto.id_concepto::text = mov.id_concepto::text
                  WHERE mov.id_facturacion IS NULL AND (dmov.id_formapago = ANY (ARRAY['01'::bpchar, '02'::bpchar]))
        ) UNION ALL
         SELECT commov.descripcion_corta AS comprobante,
            mov.glosa || '--'::text AS nro_facturacion,
                CASE
                    WHEN btrim(mov.id_personaingdiv::text) = '000'::text THEN btrim(mov.nomape_cliente)
                    ELSE btrim(cli.nombre_razon::text) ||
                    CASE
                        WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN ('('::text || mov.glosa) || ')'::text
                        ELSE '(***Anulado**)'::text
                    END
                END AS cliente,
            m.simbolo AS moneda,
            mov.id_persona AS id_vendedor,
                CASE
                    WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                    ELSE 0::numeric
                END AS imp_total,
                CASE
                    WHEN mov.signo = '-1'::integer THEN 'Egresos'::character varying
                    ELSE fp.descripcion
                END AS formapago,
            COALESCE(dmov.nro_operacion, ''::text) AS nro_operacion,
                CASE
                    WHEN m.id_moneda = 1 THEN
                    CASE
                        WHEN mov.signo = '-1'::integer THEN
                        CASE
                            WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago * '-1'::integer::numeric
                            ELSE 0::numeric
                        END
                        ELSE
                        CASE
                            WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                            ELSE 0::numeric
                        END
                    END
                    ELSE 0.00
                END AS imp_soles,
                CASE
                    WHEN m.id_moneda = 2 THEN
                    CASE
                        WHEN mov.signo = '-1'::integer THEN dmov.imp_pago * '-1'::integer::numeric
                        ELSE dmov.imp_pago
                    END
                    ELSE 0.00
                END AS imp_dolares,
                CASE
                    WHEN mov.signo = '-1'::integer THEN '99'::bpchar
                    ELSE dmov.id_formapago
                END AS id_formapago,
            mov.id_turno,
            mov.fecha_mov,
            mov.id_caja_destino AS id_caja,
            mov.id_movimcaja,
            mov.id_sucursal,
            (((commov.descripcion_corta::text || '/'::text) || mov.serie::text) || '-'::text) || mov.numero::text AS comprobante_mov,
            cto.id_concepto,
            cto.descripcion_larga AS concepto,
                CASE
                    WHEN mov.id_comprobante = 4 THEN 0::numeric
                    ELSE
                    CASE
                        WHEN m.id_moneda = 1 THEN
                        CASE
                            WHEN mov.signo = '-1'::integer THEN
                            CASE
                                WHEN mov.id_estado = 1 THEN dmov.imp_pago * '-1'::integer::numeric
                                ELSE 0::numeric
                            END
                            ELSE
                            CASE
                                WHEN mov.id_estado = ANY (ARRAY[0, 1]) THEN dmov.imp_pago
                                ELSE 0::numeric
                            END
                        END
                        ELSE 0.00
                    END
                END AS importe_contable,
            mov.id_comprobante,
            mov.serie,
            mov.numero,
            0 AS id_facturacion,
            2 AS op_fil,
            mov.serie AS serie1,
            mov.numero::bigint AS numero1,
            0 AS imp_totalreporte,
            0 AS saldo,
            mov.doc_referencia AS referencia,
             mov.fecha_liquidacion,
             mov.liquidacion_id
           FROM caja.tbl_movcaja mov
             JOIN planillas.tbl_persona cli ON cli.id_persona::text = mov.id_personaingdiv::text
             JOIN caja.tbl_detmovpago dmov ON mov.id_movimcaja = dmov.id_movimcaja AND mov.id_sucursal = dmov.id_sucursal
             JOIN common.tbl_moneda m ON m.id_moneda = dmov.id_moneda
             JOIN common.tbl_formapago fp ON fp.id_formapago = dmov.id_formapago
             JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = mov.id_tipocambio
             JOIN common.tbl_comprobante commov ON commov.id_comprobante = mov.id_comprobante
             JOIN common.tbl_concepto cto ON cto.id_concepto::text = mov.id_concepto::text
          WHERE mov.id_facturacion IS NULL AND (dmov.id_formapago = ANY (ARRAY['03'::bpchar, '05'::bpchar]))
) UNION
 SELECT c.descripcion_corta AS comprobante,
    (v.serie_vale::text || ''::text) || v.nro_vale AS nro_facturacion,
    cli.nombre_razon AS cliente,
    m.simbolo AS moneda,
    v.id_autoriza AS id_vendedor,
    v.imp_vale AS imp_total,
    'VALES'::character varying AS formapago,
    ''::text AS nro_operacion,
    v.imp_vale AS imp_soles,
    0.00 AS imp_dolares,
    '999'::bpchar AS id_formapago,
    1 AS id_turno,
    v.fec_emision AS fecha_mov,
    8 AS id_caja,
    v.id_vale AS id_movimcaja,
    v.id_sucrusal_vale AS id_sucursal,
    (v.serie_vale::text || ''::text) || v.nro_vale AS comprobante_mov,
    '99999'::character varying AS id_concepto,
    'Por Vales de Consumo'::text AS concepto,
    v.imp_vale AS importe_contable,
    c.id_comprobante,
    v.serie_vale AS serie,
    v.nro_vale AS numero,
    0 AS id_facturacion,
    3 AS op_fil,
    v.serie_vale AS serie1,
    v.nro_vale::bigint AS numero1,
    v.imp_vale AS imp_totalreporte,
    v.imp_vale AS saldo,
    ''::text AS referencia,
    v.fec_emision,
    0 as liquidacion_id
   FROM ventas.tbl_valesconsumo v
     JOIN common.tbl_comprobante c ON c.id_comprobante = v.id_comprobante
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = v.id_cliente::text
     JOIN common.tbl_moneda m ON m.id_moneda = v.id_moneda
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = v.id_autoriza::text
  ORDER BY 11, 18, 21, 26, 27;

select *from ventas.tbl_valesconsumo v
select *from common.tbl_moneda

select * from caja.v_liquidacion_ventas_contado   where fecha_mov::date='07/05/2017' and id_caja=8 and id_turno=1  order by comprobante, serie, numero, formapago

CREATE OR REPLACE VIEW common.v_listacomprobante
AS
 SELECT est.id_comprobante,
    est.descripcion_larga,
    est.descripcion_corta,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(est.codigosunat,'') as codigosunat,
    est.prefix
   FROM common.tbl_comprobante est
     JOIN common.tbl_estado e ON e.id_estado = est.id_estado;

select *from common.v_listacomprobante

select *from common.v_listaconfigseries

select *from seguridad.v__documento__usuario

CREATE OR REPLACE VIEW common.v_listaconfigseries
AS
 SELECT est.id_configserie,
    est.serie,
    est.numero,
    est.impresora,
    est.plantilla,
    est.desde,
    est.hasta,
    COALESCE(est.serie_impresora, ''::text) AS serie_impresora,
    s.id_sucursal,
    s.nombre AS sucursal,
    ep.id_empresa,
    ep.nombre AS empresa,
    t.id_tranzaccion,
    t.descripcion_larga AS transaccion,
    c.id_comprobante,
    c.descripcion_larga AS comprobante,
    e.id_estado,
    e.des_estado AS estado,
    est.serie_electronica,
    est.imp_directa,
    est.plantilla_generica,
    est.plantilla_a4
   FROM common.tbl_configserie est
   JOIN common.tbl_estado e ON e.id_estado = est.id_estado
   JOIN common.tbl_comprobante c ON c.id_comprobante = est.id_comprobante
   JOIN common.tbl_tranzaccion t ON t.id_tranzaccion = est.id_tranzaccion
   JOIN common.tbl_sucursal s ON s.id_sucursal = est.id_sucursal
   JOIN common.tbl_empresa ep ON ep.id_empresa = s.id_empresa;

select * from common.v_listaconfigseries   where id_empresa=1

select *from planillas.v_persona

select *from almacen.tbl_familia
select distinct id_estadocivil from planillas.tbl_persona

select * from planillas.v_persona  where cliente_proveedor is true and id_persona || doc_persona || nombre_razon ilike '%%' order by TRIM(nombre_razon) ASC LIMIT 100

select *from planillas.tbl_persona

CREATE OR REPLACE VIEW planillas.v_persona
AS
 SELECT p.id_persona,
    p.doc_persona,
    case when length(COALESCE(replace(p.nombre_razon,'"','')))=0 then (p.apell_paterno || ' ' || p.apell_materno || ' ' || p.nombres )::varchar(100) else p.nombre_razon end  as nombre_razon,
    --COALESCE(replace(p.nombre_razon,'"',''),p.apell_paterno || ' ' || p.apell_materno || ' ' || p.nombres )::varchar(100) as nombre_razon,
    COALESCE(p.razon_comercial,'') as razon_comercial,
    p.sexo,
    COALESCE(p.email, ''::character varying) AS email,
    COALESCE(p.paginaweb, ''::text) AS paginaweb,
    p.fecha_nac,
    p.tipo_persona,
    p.cliente_proveedor,
    p.deuda_confidencial,
    p.no_apto_credito,
    p.concientizado,
    p.copropietario,
    COALESCE(p.observaciones, ''::text) AS observaciones,
    est.id_estadocivil,
    est.descripcion AS estado_civil,
    e.id_estado,
    e.des_estado AS estado,
    p.cliente,
    p.proveedor,
    p.ID_VENDTITULAR,
    p.ID_VENDSUPLENTE,
    p.ID_COBRADOR,
    p.IMP_MINIMOVENTA,
    p.PERCEP_CLIENTE,
    p.AGENTE_PERCEPTOR,
    COALESCE(p.id_tipdocidentidad,4) as id_tipdocidentidad,
    p.porcent_percepcion,
    COALESCE(pref.nombre_razon,'') as cliente_ref,
    COALESCE(pref.doc_persona,'')  AS doc_persona_ref,
    COALESCE(pref.id_persona,'') AS id_persona_ref,
    COALESCE(p.id_direccion_ref,0) AS id_direccion_ref,
    p.facturar_a_clienteref,
    COALESCE(dir.direccion,'') as direccion_ref,
    p.dni,
    p.gestiona_lineacredito
   FROM planillas.tbl_persona p
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
   LEFT JOIN planillas.tbl_estadocivil est ON est.id_estadocivil = p.id_estadocivil
   LEFT JOIN planillas.tbl_persona pref on pref.id_persona=p.id_persona_ref
   LEFT JOIN ventas.tbl_direccion dir on dir.id_direccion=p.id_direccion_ref

select * from ventas.v_detcotizaprevente   where id_cotizapreventa=3353 and  id_sucursal=1
select *from creditos.v_estado_cuenta_proveedor

select *from planillas.v_persona_serach

CREATE OR REPLACE VIEW planillas.v_persona_serach
AS
 SELECT p.id_persona,
    p.doc_persona,
    replace(p.nombre_razon,'"','')::varchar(100) as nombre_razon,
    p.razon_comercial,
    COALESCE(p.deuda_confidencial,false) as deuda_confidencial,
    COALESCE(p.no_apto_credito,false) as no_apto_credito,
   COALESCE(creditos.list_saldo_credito(p.id_persona,1),0) as saldo,
    e.des_estado AS estado,
     e.id_estado,
    COALESCE(p.concientizado,false) as concientizado,
    COALESCE(p.copropietario, false)  as copropietario,
    ID_VENDTITULAR,
    ID_VENDSUPLENTE,
    ID_COBRADOR,
    IMP_MINIMOVENTA,
    PERCEP_CLIENTE,
    AGENTE_PERCEPTOR,
    porcent_percepcion,
    p.gestiona_lineacredito
   FROM planillas.tbl_persona p
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
   LEFT JOIN planillas.tbl_estadocivil est ON est.id_estadocivil = p.id_estadocivil;

select *from almacen.v_precios

select *from seguridad.item where menu ilike '%terminal%'

CREATE OR REPLACE VIEW planillas.v_persona_serach_address
AS
 SELECT p.id_persona,
    p.doc_persona,
    replace(p.nombre_razon,'"','')::varchar(100) as nombre_razon,
    p.razon_comercial,
    COALESCE(p.deuda_confidencial,false) as deuda_confidencial,
    COALESCE(p.no_apto_credito,false) as no_apto_credito,
   COALESCE(creditos.list_saldo_credito(p.id_persona,1),0) as saldo,
    e.des_estado AS estado,
     e.id_estado,
    COALESCE(p.concientizado,false) as concientizado,
    COALESCE(p.copropietario, false)  as copropietario,
    ID_VENDTITULAR,
    ID_VENDSUPLENTE,
    ID_COBRADOR,
    IMP_MINIMOVENTA,
    PERCEP_CLIENTE,
    AGENTE_PERCEPTOR,
    porcent_percepcion,
    dir.direccion || ' - ' || trim(ubi.distrito) || ' - ' || trim(prv.provincia) as direccion,
    dir.id_direccion
   FROM planillas.tbl_persona p
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
   INNER JOIN ventas.tbl_direccion dir on dir.id_persona=p.id_persona
   INNER JOIN ventas.tbl_sector sec on sec.id_sector=dir.id_sector
   INNER JOIN ventas.tbl_zona z on z.id_zona=sec.id_zona
   INNER JOIN COMMON.TBL_DISTRITO UBI ON UBI.ID_DISTRITO=Z.ID_DISTRITO
   INNER JOIN COMMON.TBL_PROVINCIA PRV ON prv.id_provincia=ubi.id_provincia
   LEFT JOIN planillas.tbl_estadocivil est ON est.id_estadocivil = p.id_estadocivil;

select *from ventas.tbl_direccion
select * from planillas.v_persona  where cliente_proveedor is false and id_persona || doc_persona || nombre_razon ilike '%%' ORDER BY nombre_razon

select distinct length(nombre_razon) from planillas.tbl_persona order by 1

select *from planillas.tbl_persona

select 'declare
  resultado number;
  multiplicador number:=0;
begin
  for 1..to 50
    resultado:=4*multiplicador;
    exit when resultado>=50;
    dbms_output.put_line(''4x''||to_char(multiplicador)||'='||to_char(resultado));
    multiplicador:=multiplicador+1;
  end loop;
end;' from common.tbl_telefono

select * from almacen.v_producto_stock_detallado

CREATE OR REPLACE  VIEW almacen.v_producto_stock_detallado
 AS
 SELECT
    a.id_almacen,
    a.descalmacen AS almacen,
    p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    m.descripcion_larga AS marca,
    u.id_unidadventa AS id_unidad,
    u.desc_corta AS unidad,
    COALESCE(ex.stock_fisico,0) AS stock_fisico,
    COALESCE(ex.stock_reserva,0) AS stock_reserva,
    COALESCE(ex.stocktransito,0) AS stock_transito,
    COALESCE(ex.stock_reparto,0) AS stock_reparto,
    ex.id_inventario,
    ex.id_estado,
    s.id_empresa,
    s.id_sucursal
   FROM almacen.tbl_detproducto dp
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_marca m ON m.id_marca = p.id_marca
   JOIN almacen.tbl_existencia ex ON p.id_producto::text = ex.id_producto::text AND ex.id_unidadventa = u.id_unidadventa
   JOIN almacen.tbl_almacen a ON a.id_almacen = ex.id_almacen
   INNER JOIN common.tbl_sucursal S ON (s.id_sucursal=a.id_sucursal)
   where dp.id_estado=1
   order by a.id_almacen;

select *from seguridad.tbl_usuario

select * from almacen.v_producto_stock_detallado   WHERE id_almacen=1 and id_producto='1521' and id_unidad=6

select *from common.tbl_sucursal

update  almacen.tbl_existencia set id_estado=1
select *from almacen.tbl_almacen

CREATE OR REPLACE VIEW v_estacion
 AS
 SELECT i.id_isla,
    i.nom_isla,
    i.num_mangueras,
    i.num_lados,
    l.id_lado,
    l.descripcion_lado,
    m.id_manguera,
    m.id_orden,
    m.id_producto,
    p.descripcion_corta,
    p.descripcion_larga,
    p.imagen,
    m.id_almacen,
    p.servicio,
    p.impuesto,
    dp.id_unidadventa,
    m.id_cajabanco,
    cb.descripcion as caja
   FROM tbl_isla i
   JOIN tbl_manguera m ON i.id_isla = m.id_isla
  left JOIN tbl_lado l ON m.id_lado = l.id_lado
 left  JOIN almacen.tbl_detproducto dp ON dp.id_producto::bpchar = m.id_producto::bpchar AND dp.id_unidadventa = m.id_unidadventa
 INNER  JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   left JOIN CAJA.TBL_CAJABANCO CB ON CB.id_cajabanco=M.id_cajabanco
  ORDER BY i.id_isla, l.id_lado, m.id_orden;

SELECT *FROM  tbl_manguera

select * from CAJA.TBL_CAJABANCO  ;
-- Creacion de la vista de la tabla tbl_grupo
create or replace view almacen.v_grupo
as
SELECT id_grupo ,
  descripcion_larga,
  descripcion_corta,
  e.id_estado,
  e.des_estado as estado,
  to_char(g.fecha_registro,'DD/MM/YYYY HH24:MI:SS.MS')fecha_registro,
  to_char(g.fecha_update,'DD/MM/YYYY HH24:MI:SS.MS') fecha_update
FROM almacen.tbl_grupo g
inner join common.tbl_estado e on g.id_estado=e.id_estado
order by g.id_grupo::integer;

select *from  almacen.tbl_grupo g

-- Creacion de la vista de la tabla tbl_estado
create or replace view common.v_estado
as
SELECT id_estado ,
  des_estado,
  est_estado
FROM common.tbl_estado;

select *from common.v_estado

-- Creacion de la vista de la tabla tbl_marca
create or replace view almacen.v_marca
as
SELECT id_marca ,
  descripcion_larga,
  descripcion_corta,
  e.id_estado,
  e.des_estado as estado
FROM almacen.tbl_marca m
inner join common.tbl_estado e on m.id_estado=e.id_estado;

-- Creacion de la vista de la tabla tbl_grupo
create or replace view almacen.v_familia
as
SELECT id_familia ,
  f.descripcion_larga,
  f.descripcion_corta,
  e.id_estado,
  e.des_estado as estado,
  g.id_grupo,
  g.descripcion_corta as grupo
FROM almacen.tbl_familia f
inner join common.tbl_estado e on f.id_estado=e.id_estado
inner join almacen.tbl_grupo g on f.id_grupo = g.id_grupo;

-- Creacion de la vista de familia con marca
CREATE OR REPLACE VIEW almacen.v_familiamarca AS
 SELECT m.id_marca, m.descripcion_larga AS marca, fm.id_familia
   FROM almacen.tbl_familiamarca fm
   JOIN almacen.tbl_marca m ON m.id_marca = fm.id_marca;

--
CREATE OR REPLACE VIEW almacen.v_marcafamilia AS
 SELECT m.id_familia, m.descripcion_larga AS familia, fm.id_marca
   FROM almacen.tbl_familiamarca fm
   JOIN almacen.tbl_familia m ON m.id_familia = fm.id_familia;

create or replace view almacen.v_listaprecios
as
select
id_listaprecio,
descripcion,
fecha,
id_estado
from almacen.tbl_listaprecio;

CREATE OR REPLACE view ALMACEN.V_UNIDAD
AS
SELECT
id_unidadventa,
desc_larga AS unidad,
desc_corta as abrev,
contenido,
id_estado
FROM ALMACEN.TBL_UNIDAD;

CREATE OR REPLACE VIEW common.v_tipoimpuesto
as
select id_tipoimpuesto as id,descripcion as name,id_estado as status_id,typecode from common.tbl_tipoimpuesto order by 1;

--almacen.v_preciosproducto

CREATE OR REPLACE   VIEW almacen.v_producto
 AS
 SELECT p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    p.descripcion_corta AS nombrecorto,
    f.descripcion_larga AS familia,
    m.descripcion_larga AS marca,
    p.id_familia,
    p.id_marca,
    p.id_estado,
        CASE
            WHEN p.servicio = true THEN 'Servicio'::text
            ELSE 'Producto'::text
        END AS tipo_producto,
    p.dev_envases,
    p.perecible,
    p.sujet_percepcion,
    p.vende_pack,
    p.caracteristicas,
   p.cod_barra,
    p.impuesto,
    p.servicio,
    g.descripcion_larga AS grupo,
    COALESCE(p.image,'011')::bytea  as image,
    trim(p.codigo) as codigo,
    p.id_color,
    p.id_impuesto,
    p.inventariado,
    p.imagen,
    p.activo_fijo,
    p.gestiona_lotes,
    p.gestiona_series,
    p.id_modelo,
    p.venta_retaceo,
    est.des_estado as estado,
    p.cantidad_fraccionada,
    p.afecto_icbper,
    p.solicitadatosadicionales
   FROM almacen.tbl_producto p
     JOIN almacen.tbl_familiamarca fm ON fm.id_familia = p.id_familia AND fm.id_marca = p.id_marca
     JOIN almacen.tbl_familia f ON f.id_familia = fm.id_familia
     JOIN almacen.tbl_grupo g ON g.id_grupo = f.id_grupo
     JOIN almacen.tbl_marca m ON m.id_marca = fm.id_marca
     inner join common.tbl_estado est on est.id_estado=p.id_estado
  ORDER BY isnumeric(trim(p.id_producto::text)) asc;

select *from common.tbl_estado
select *from almacen.tbl_inventario
delete from almacen.tbl_inventario where id_almacen=5

update almacen.tbl_producto set id_estado=2 where id_estado<>1

select *from  almacen.v_lotes_proximo_vencer

CREATE OR REPLACE   VIEW almacen.v_producto_report
 AS
 SELECT p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    p.descripcion_corta AS nombrecorto,
    f.descripcion_larga AS familia,
    m.descripcion_larga AS marca,
    p.id_familia,
    p.id_marca,
    p.id_estado,
        CASE
            WHEN p.servicio = true THEN 'Servicio'::text
            ELSE 'Producto'::text
        END AS tipo_producto,
    p.dev_envases,
    p.perecible,
    p.sujet_percepcion,
    p.vende_pack,
    p.caracteristicas,
   p.cod_barra,
    p.impuesto,
    p.servicio,
    g.descripcion_larga AS grupo,
    COALESCE(p.image,'011')::bytea  as image,
    p.codigo,
    p.id_color,
    p.id_impuesto,
    p.inventariado,
    p.imagen,
    p.activo_fijo,
    p.gestiona_lotes,
    p.gestiona_series,
    p.id_modelo,
    dp.id_unidadventa,
    und.desc_corta as unidad

   FROM almacen.tbl_producto p
     JOIN almacen.tbl_familiamarca fm ON fm.id_familia = p.id_familia AND fm.id_marca = p.id_marca
     JOIN almacen.tbl_familia f ON f.id_familia = fm.id_familia
     JOIN almacen.tbl_grupo g ON g.id_grupo = f.id_grupo
     JOIN almacen.tbl_marca m ON m.id_marca = fm.id_marca
     inner join almacen.tbl_detproducto dp on (dp.id_producto=p.id_producto)
     inner join almacen.tbl_unidad und on  (und.id_unidadventa=dp.id_unidadventa)
  ORDER BY g.id_grupo,f.id_familia,isnumeric(btrim(p.id_producto::text)) asc;

select *from almacen.tbl_unidad

select image from almacen.v_producto where image is not null

select *
from almacen.tbl_producto p
--inner join almacen.tbl_familiamarca fm on (fm.id_familia=p.id_familia and fm.id_marca=p.id_marca)
--inner join almacen.tbl_familia f on (f.id_familia=fm.id_familia)
--inner join almacen.tbl_grupo g on (g.id_grupo=f.id_grupo)
--inner join almacen.tbl_marca m on (m.id_marca=fm.id_marca)
order by isnumeric(trim(p.id_producto)) desc;

CREATE OR REPLACE VIEW ALMACEN.V_CBOPRODUCTO
AS
SELECT ID_PRODUCTO AS VALUE,DESCRIPCION_LARGA AS LABEL FROM ALMACEN.TBL_PRODUCTO

select *from almacen.tbl_grupo
select *from  almacen.tbl_producto p
select *from ALMACEN.v_precios

select *from almacen.tbl_precio

CREATE OR REPLACE VIEW almacen.v_precios
AS
 SELECT p.id_listaprecio,
	p.id_unidadventa,
	u.desc_corta AS unidad,
	p.val_unidad,
	p.costo,
	p.flete,
	p.coste,
	p.precio1,
	p.precio2,
	p.precio3,
	p.predeterminado,
	p.id_producto,
	p.val_minimo_venta,
	dp.unidad_inventario,
	p.id_estado,
	p.undpred_compra,
	p.id_tipoventa,
	p.precio4,
	p.precio5,
	dp.ctl_stock,
	dp.codigo_barra,
	COALESCE(p.peso,0.00) as peso,
	COALESCE(porcent1,0) as porcent1,
	COALESCE(porcent2,0) as porcent2,
	COALESCE(porcent3,0) as porcent3,
	COALESCE(porcent4,0) as porcent4,
	COALESCE(porcent5,0) as porcent5
   FROM almacen.tbl_precio p
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = p.id_producto::text AND dp.id_unidadventa = p.id_unidadventa
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN almacen.tbl_listaprecio lp ON lp.id_listaprecio = p.id_listaprecio
     --where dp.id_estado=1;

select *from planillas.tbl_persona

DELETE FROM almacen.tbl_detproducto where id_producto='4447';
DELETE FROM almacen.tbl_precio where id_producto='4447';

update almacen.tbl_producto set id_producto='TXT-01' where id_producto='4447';
select * from common.v_formapago

CREATE OR REPLACE VIEW planillas.v_estadocivil AS
 SELECT
 id_estadocivil,
 descripcion,
  e.id_estado,
  e.des_estado as estado
  FROM planillas.tbl_estadocivil est
  inner join common.tbl_estado e on est.id_estado=e.id_estado;

CREATE OR REPLACE VIEW common.v_moneda
  as
  select id_moneda,descripcion_larga,simbolo,id_estado from common.tbl_moneda;

select *from common.v_tipoventa

CREATE OR REPLACE VIEW common.v_tipoventa
AS
 SELECT est.id_tipoventa,
    est.descripcion_larga,
    est.descripcion_corta,
    e.id_estado,
    e.des_estado AS estado
   FROM common.tbl_tipoventa est
   JOIN common.tbl_estado e ON est.id_estado = e.id_estado
order by id_tipoventa;

CREATE OR REPLACE VIEW common.v_operacion
as
select id_operacion,descripcion_larga,descripcion_corta,id_estado from common.tbl_operacion;

CREATE OR REPLACE view common.v_comprobante
as
select id_comprobante,descripcion_larga,descripcion_corta,id_estado from common.tbl_comprobante

CREATE OR REPLACE VIEW VENTAS.V_CLIENTE
AS
select
id_persona as id_cliente,
nombre_razon as cliente,
razon_comercial,
doc_persona,
id_vendtitular,
id_vendsuplente,
id_cobrador
from planillas.tbl_persona

select *from planillas.tbl_persona

CREATE OR REPLACE VIEW ventas.v_direccion
AS
 SELECT d.id_direccion,
    d.direccion,
    d.id_sector,
    d.id_persona,
    d.referencia,
    e.id_estado,
    e.des_estado AS estado,
    P.PROVINCIA,
    DIS.DISTRITO,
    S.SECTOR,
    dis.id_distrito,
    dep.departamento,
    p.id_provincia,
    dep.id_dpto as id_departamento
   FROM ventas.tbl_direccion d
   INNER JOIN VENTAS.TBL_SECTOR S ON (S.ID_SECTOR=D.ID_SECTOR)
   INNER JOIN VENTAS.TBL_ZONA Z ON (Z.ID_ZONA=S.ID_ZONA)
   INNER JOIN COMMON.tbl_distrito DIS ON (DIS.ID_DISTRITO=Z.ID_DISTRITO)
   INNER JOIN COMMON.TBL_PROVINCIA P ON (P.id_provincia=DIS.id_provincia)
   INNER JOIN COMMON.tbl_dpto DEP ON (DEP.id_dpto=P.id_dpto)
   JOIN common.tbl_estado e ON d.id_estado = e.id_estado;

select *from COMMON.tbl_dpto

SELECT *FROM VENTAS.TBL_SECTOR

CREATE OR REPLACE VIEW COMMON.V_IGV
AS
SELECT
ID_IGV,
IMP_IGV,
ID_ESTADO ,
IS_PERCEPCION,
descripcion,
id_tipoimpuesto
FROM common.tbl_igv
ORDER BY id_igv desc

GO
CREATE OR REPLACE VIEW COMMON.V_TIPOCAMBIO
AS
SELECT
ID_TIPOCAMBIO,
COMPRA,
VENTA,
MERCADO,
FECHA,
ID_ESTADO,
predeterminado
FROM common.tbl_tipocambio
ORDER BY id_tipocambio desc

CREATE OR REPLACE VIEW common.v_tipoventa
AS
 SELECT
    est.idtipventa id_tipoventa,
    est.nombre descripcion_larga,
    ''::text descripcion_corta,
    estado id_estado,
    ''::text AS estado
   FROM tipventa est;

select *from select *from common.v_formapago

select *from common.v_operacion

select *from tipventa
select * from common.v_tipoventa   where id_estado =1  order by fecha desc limit 1

select fu_numero_letras1(9099000900)

select *from COMMON.V_CONFIGSERIES

CREATE OR REPLACE VIEW COMMON.V_CONFIGSERIES
AS
SELECT
	c.id_configserie,
	c.serie,
	c.numero,
        c.impresora,
        c.plantilla,
        c.desde,
        c.hasta,
        c.serie_impresora,
        c.id_comprobante,
        c.id_estado,
        c.id_tranzaccion,
        c.id_terminal,
        c.id_sucursal,
        s.id_empresa,
        c.imp_directa,
        c.plantilla_generica,
        c.plantilla_a4
  FROM common.tbl_configserie C
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=c.ID_SUCURSAL)

select *from common.V_CONFIGSERIES
select * from common.V_CONFIGSERIES  where id_tranzaccion='20' and id_comprobante ='1' and id_estado =1
select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='11'

select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='4781'

SELECT *FROM common.tbl_comprobante

select *from caja.tbl_movcaja
"SERVICIO DE LABADO
TRANSFERENCIA GRATUITA"
alter table caja.tbl_movcaja add column puntos_canjeados boolean default false;
alter table caja.tbl_movcaja add column puntos NUMERIC(20,4) DEFAULT 0.00;

select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='72001'

select *from ventas.tbl_facturacion where numdoc_facturacion ilike '%0005450%'
select *from common.tbl_comprobante order by 1

ventas.tbl_detpreventacotiza dp
inner join almacen.tbl_precio pre on (pre.id_producto=dp.id_producto and  pre.id_unidadventa=dp.id_unidadventa and  pre.id_listaprecio=dp.id_listaprecio)
inner join almacen.tbl_detproducto dprod on (dprod.id_producto=pre.id_producto and dp.id_unidadventa=pre.id_unidadventa and dprod.unidad_inventario=true)
inner join  almacen.tbl_producto p on (p.id_producto=dprod.id_producto)
inner join  almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unimedventa)
inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=dp.id_unimedventa)

alter table ventas.tbl_detfacturacion add column   descripcion_linea text default '';
""
select *from ventas.tbl_detfacturacion
"TXT-01"
select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='77661'

select *from ventas.v_listar_cabecera_facturacion where id_facturacion::text ||  id_sucursal::text='77661'

select *from ventas.tbl_detfacturacion where id_facturacion=4677

""
select * from ventas.v_impdocventas LIMIT 1
select *from common.tbl_tipoventa

select *from planilla.bl_persona

select split_part(NOMBRE_RAZON,' ',1)  from planillas.tbl_persona

select *from  ventas.v_impdocventas  where id_factiu

CREATE OR REPLACE VIEW ventas.v_impdocventas
AS
 SELECT f.numdoc_facturacion,
    "right"(f.serie_facturacion::text, 3)::character(3) AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END AS cliente,
    (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS direccion,
    f.fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_neto) AS tot_letras,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
        CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE split_part(p.descripcion_larga::text, ','::text, 1) || E'\n' || COALESCE(almacen.FN_GETSERIESVENTAS(f.id_facturacion,f.id_sucursal,df.id_producto,df.id_unidadventa),'') || COALESCE(
            CASE
                WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN '
TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    mc.id_caja_destino AS id_caja,
    mc.imp_recibido,
    mc.imp_vuelto,
    f.id_vendedor,
    NULL::text AS vale,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    mc.puntos,
    pto.puntos AS tot_puntos,
    mc.id_turno,
    tv.descripcion_larga AS tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
    df.ancho,
    df.largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS ubigeo,
        CASE
            WHEN f.id_tipoventa = 1 THEN f.fecha_venta
            ELSE COALESCE(( SELECT c_1.fec_vencimiento
               FROM creditos.tbl_credito cr
                 JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
                 JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
              WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
              ORDER BY c_1.nro_cuota DESC
             LIMIT 1), f.fecha_venta)
        END AS fec_vencimiento,
    df.imp_percepcion,
    df.precio - df.imp_percepcion /
        CASE
            WHEN df.cantidad > 0::numeric THEN df.cantidad
            ELSE 1::numeric
        END AS precio_percep_l,
    (df.precio - df.imp_percepcion /
        CASE
            WHEN df.cantidad > 0::numeric THEN df.cantidad
            ELSE 1::numeric
        END) * df.cantidad AS total_percep_l,
    f.valor_venta AS valorventa_percep,
    f.imp_igv AS impigv_percep,
    f.imp_total AS total_percep,
    f.imp_percepcion AS impprecep_percep,
    split_part(vfv.nombre_razon::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
    suc.direccion AS direccion_suc,
    suc.telefono,
    suc.celular,
    emp.ruc,
        CASE f.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
    cp.codigosunat,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE
            CASE
                WHEN f.id_comprobante = 3 THEN 6
                ELSE 1
            END
        END AS tipo_docliente,
    to_char(f.fecha_venta, 'yyyy-mm-dd'::text) AS fechaemision,
    df.precio / 1.02 / 1.18 AS valor_unitario,
    df.precio / 1.02 / 1.18 * df.cantidad AS valor_venta_item,
        CASE
            WHEN df.precio = 0::numeric THEN '02'::text
            ELSE '01'::text
        END AS tipoprecio,
    df.precio / 1.02 / 1.18 * df.cantidad * 0.18 AS imp_detiten,
    f.fecha_reg,
    caja.getformaspago(mc.id_movimcaja, mc.id_sucursal) AS formapago,
        CASE
            WHEN c.porcent_percepcion > 0::numeric THEN '0.5%'::text
            ELSE '2.00%'::text
        END AS porcentpercep
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND df.id_estado = 1
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp ON emp.id_empresa = suc.id_empresa
     LEFT JOIN caja.tbl_movcaja mc ON f.id_sucursal = mc.id_sucursal_fac AND f.id_facturacion = mc.id_facturacion
     LEFT JOIN ventas.tbl_puntos pto ON pto.id_persona::text = f.id_cliente::text
     LEFT JOIN planillas.tbl_persona vfv ON vfv.id_persona::bpchar = c.id_vendtitular
UNION ALL
 SELECT f.serie_vale AS numdoc_facturacion,
    f.nro_vale AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    mc.id_sucursal,
    c.doc_persona AS documento,
    c.nombre_razon AS cliente,
    dc.direccion,
    mc.fecha_mov AS fecha_venta,
    (mc.serie::text || '-'::text) || mc.numero::text AS nro_documento,
    'SON :'::text || fu_numero_letras(mc.imp_movimiento) AS tot_letras,
    mc.imp_movimiento AS valor_venta,
    0.00 AS imp_igv,
    mc.imp_movimiento AS imp_total,
    df.cantidad,
    df.precio,
    p.descripcion_larga AS producto,
    df.total AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    mc.id_movimcaja AS id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dsct AS imp_dscto,
    0.00 AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    mc.id_caja_destino AS id_caja,
    mc.imp_recibido,
    mc.imp_vuelto,
    mc.id_persona AS id_vendedor,
    (((cp.descripcion_corta::text || '/'::text) || f.serie_vale::text) || '-'::text) || f.nro_vale AS vale,
    cp.descripcion_larga AS nom_comprobante,
    'VENTA POR CANJE DE VALE'::text AS mensaje,
    mc.puntos,
    pto.puntos AS tot_puntos,
    mc.id_turno,
    ''::text AS tipoventa,
    ''::text AS vendedor,
    0.00 AS ancho,
    0.00 AS largo,
    to_char(mc.fecha_mov, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    ''::text AS ubigeo,
    mc.fecha_mov AS fec_vencimiento,
    0 AS imp_percepcion,
    0 AS precio_percep_l,
    0 AS total_percep_l,
    0 AS valorventa_percep,
    0 AS impigv_percep,
    0 AS total_percep,
    0 AS impprecep_percep,
    ''::text AS vend_fuerzaventas,
    0 AS imp_neto,
    ''::character varying AS direccion_suc,
    ''::character varying AS telefono,
    ''::character varying AS celular,
    ''::bpchar AS ruc,
    ''::text AS prefix,
    ''::text AS codigosunat,
    0 AS tipo_docliente,
    ''::text AS fechaemision,
    0 AS valor_unitario,
    0 AS valor_venta_item,
    '01'::text AS tipoprecio,
    0 AS imp_detiten,
    now() AS fecha_reg,
    ''::text AS formapago,
    ''::text AS porcentpercep
   FROM ventas.tbl_valesconsumo f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN ventas.tbl_detvale df ON f.id_vale = df.id_vale AND f.id_sucrusal_vale = df.id_sucrusal_vale
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN caja.tbl_movvaleconsumo mvc ON f.id_vale = mvc.id_vale AND f.id_sucrusal_vale = mvc.id_sucrusal_vale
     JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = mvc.id_movimcaja AND mc.id_sucursal = mvc.id_sucursalmov
     JOIN common.tbl_comprobante compm ON compm.id_comprobante = mc.id_comprobante
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucrusal_vale
     LEFT JOIN ventas.tbl_puntos pto ON pto.id_persona::text = f.id_cliente::text
  WHERE df.cantidad > 0::numeric
  ORDER BY 23;

ALTER TABLE ventas.v_impdocventas
  OWNER TO postgres;

/*
create or replace  view ventas.v_impdocventas
as
select
f.numdoc_facturacion,
f.serie_facturacion,
f.id_comprobante,
f.id_direccion,
f.id_cliente,
f.id_sucursal,
--c.doc_persona as documento,
--c.nombre_razon as cliente,
case when trim(f.id_cliente)='000' then f.DNI_CLIENTE else  trim(c.DOC_PERSONA) end as documento ,
CASE WHEN trim(f.id_cliente)='000' then trim(f.NOMAPE_CLIENTE) else  trim(c.NOMBRE_RAZON)  end AS cliente,
(dc.direccion || ', ' || TRIM(dep.DEPARTAMENTO) || ',' ||TRIM(PROV.PROVINCIA) ||', '|| trim(dis.distrito))::text as direccion,
f.fecha_venta,
f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
'SON :' || fu_numero_letras(f.imp_total) as tot_letras,
f.valor_venta,
f.imp_igv,
f.imp_total,
df.cantidad,
df.precio,
case when TRIM(df.id_producto)='TXT-01' then df.descripcion_linea else
(split_part(p.descripcion_larga,',',1) || COALESCE((CASE WHEN Df.ANCHO>0 AND df.LARGO>0 THEN split_part(df.descripcion_linea,',',2) END),'') )

 end || case when df.precio=0 then E'\nTRANSFERENCIA GRATUITA' else '' end as producto,
df.importe as tot_detalle,
u.desc_corta as unidad,
m.simbolo as moneda,
f.id_facturacion,
df.id_producto as id_producto,
df.id_almacen,
df.id_unidadventa,
df.id_listaprecio,
df.id_manguera,
df.id_lado,
df.id_isla,
f.id_estado,
df.imp_dscto,
df.imp_igv as imp_igvdetalle,
df.item,
p.impuesto,
p.servicio,
tp.coste,
tp.val_unidad,
tp.val_minimo_venta,
mc.id_caja_destino as id_caja,
mc.imp_recibido,
mc.imp_vuelto,
f.id_vendedor,
NULL AS VALE,
cp.descripcion_larga as nom_comprobante,
case when f.imp_igv>0 then null  else 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO' end as mensaje,
mc.puntos,
pto.puntos as tot_puntos,
mc.id_turno,
tv.descripcion_larga as tipoventa,
split_part(vend.NOMBRE_RAZON,' ',1) as vendedor,
df.ancho,
df.largo,
to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY') as fec_larga,
SUC.NOMBRE AS TIENDA,
dc.direccion as dir_cliente,
(TRIM(dep.DEPARTAMENTO) || ',' ||TRIM(PROV.PROVINCIA) ||', '|| trim(dis.distrito))::text as ubigeo,
COALESCE((select c.fec_vencimiento
	from  creditos.tbl_credito cr
	inner join creditos.tbl_ventacredito vc on (cr.id_credito=vc.id_credito and  cr.id_sucursal_credito=vc.id_sucursal_credito)
	inner join creditos.tbl_cuota c  on (cr.id_credito=c.id_credito and cr.id_sucursal_credito=c.id_sucursal_credito)
	where  f.id_Facturacion=vc.id_facturacion and  f.id_sucursal=vc.id_sucursal
		ORDER BY c.nro_cuota DESC
                 LIMIT 1),f.fecha_venta) as fec_vencimiento ,
df.imp_percepcion ,
 (DF.PRECIO/1.02)  AS PRECIO_PERCEP_L,
 (DF.PRECIO/1.02)*DF.CANTIDAD AS TOTAL_PERCEP_L,
F.VALOR_VENTA AS  VALORVENTA_PERCEP,
--case when cp.descripcion_corta='FAC' then (f.imp_total/1.18)/1.02 else f.imp_total/1.02 end  as VALORVENTA_PERCEP,
f.imp_igv AS IMPIGV_PERCEP,
--(case when cp.descripcion_corta='FAC' then ((f.imp_total/1.18)/1.02)*0.18  else 0 end) as IMPIGV_PERCEP,
(case when cp.descripcion_corta='FAC' then ((f.imp_total/1.18)/1.02)*1.18 else f.imp_total/1.02 end)  as TOTAL_PERCEP,
f.imp_percepcion AS IMPPRECEP_PERCEP,
--((case when cp.descripcion_corta='FAC' then (f.imp_total/1.18)/1.02 else f.imp_total/1.02 end)*1.18)*0.02 AS IMPPRECEP_PERCEP,
split_part(vfv.NOMBRE_RAZON,' ',1) as vend_fuerzaventas
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_tipoventa tv on (tv.id_tipoventa=f.id_tipoventa)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join planillas.tbl_persona vend on  (vend.id_persona=f.id_vendedor)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
INNER JOIN ventas.tbl_sector sec ON (dc.id_sector = sec.id_sector)
INNER JOIN ventas.tbl_zona z ON (sec.id_zona = z.id_zona)
INNER JOIN common.tbl_distrito dis ON (z.id_distrito = dis.id_distrito)
INNER JOIN common.tbl_provincia prov ON (dis.id_provincia = prov.id_provincia)
INNER JOIN common.tbl_dpto dep ON (prov.id_dpto = dep.id_dpto)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join  ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion  and f.id_sucursal=df.id_sucursal and df.id_estado=1)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=df.id_unimedventa)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=F.ID_SUCURSAL)
left join caja.tbl_movcaja mc on (f.id_sucursal=mc.id_sucursal_fac and  f.id_facturacion=mc.id_facturacion)
left join VENTAS.TBL_PUNTOS  pto on (pto.id_persona=f.id_cliente)
inner join planillas.tbl_persona vfv on (vfv.id_persona=c.id_vendtitular)
union all
select
f.serie_vale as numdoc_facturacion,
f.nro_vale as serie_facturacion,
f.id_comprobante,
f.id_direccion,
f.id_cliente,
mc.id_sucursal as id_sucursal,
c.doc_persona as documento,
c.nombre_razon as cliente,
dc.direccion,
mc.fecha_mov as fecha_venta,
mc.serie ||'-'||mc.numero as nro_documento,
'SON :' || fu_numero_letras(mc.imp_movimiento) as tot_letras,
mc.imp_movimiento as valor_venta,
0.00 as imp_igv,
mc.imp_movimiento as imp_total,
df.cantidad,
df.precio,
p.descripcion_larga as producto,
df.total as tot_detalle,
u.desc_corta as unidad,
m.simbolo as moneda,
mc.id_movimcaja as id_facturacion,
df.id_producto as id_producto,
df.id_almacen,
df.id_unidadventa,
df.id_listaprecio,
df.id_manguera,
df.id_lado,
df.id_isla,
f.id_estado,
df.imp_dsct as imp_dscto,
0.00 as imp_igvdetalle,
df.item,
p.impuesto,
p.servicio,
tp.coste,
tp.val_unidad,
tp.val_minimo_venta,
mc.id_caja_destino as id_caja,
mc.imp_recibido,
mc.imp_vuelto,
mc.id_persona as id_vendedor,
cp.descripcion_corta || '/'||f.serie_vale ||'-'||f.nro_vale as nro_documento,
cp.descripcion_larga as nom_comprobante,
'VENTA POR CANJE DE VALE' as mensaje,
mc.puntos,
pto.puntos as tot_puntos,
mc.id_turno,
''::text as tipoventa,
''::text as vendedor,
0.00 as ancho,
0.00 as largo,
to_char(mc.fecha_mov, 'DD "de" TMMonth "del" YYYY') as fec_larga,
SUC.NOMBRE AS TIENDA,
dc.direccion as dir_cliente,
''::text as ubigeo,
mc.fecha_mov as fec_vencimiento,
0 as imp_percepcion,
0 AS PRECIO_PERCEP_L,
0 AS TOTAL_PERCEP_L,
0 AS VALORVENTA_PERCEP,
0 AS IMPIGV_PERCEP,
0 AS TOTAL_PERCEP,
0 AS IMPPRECEP_PERCEP,
''::text as vend_fuerzaventas
from ventas.tbl_valesconsumo f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join  ventas.tbl_detvale df on (f.id_vale=df.id_vale  and f.id_sucrusal_vale=df.id_sucrusal_vale)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
inner join caja.tbl_movvaleconsumo mvc on (f.id_vale=mvc.id_vale and f.id_sucrusal_vale=mvc.id_sucrusal_vale)
inner join caja.tbl_movcaja mc on (mc.id_movimcaja=mvc.id_movimcaja and  mc.id_sucursal=mvc.id_sucursalmov)
inner join common.tbl_comprobante compm on(compm.id_comprobante=mc.id_comprobante)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=F.ID_SUCRUSAL_VALE)
left join VENTAS.TBL_PUNTOS  pto on (pto.id_persona=f.id_cliente)
where df.cantidad>0 order by id_producto

*/

SELECT *FROM ventas.tbl_valesconsumo

select * from common.V_CONFIGSERIES  where serie='0001' and  id_empresa=1 and id_tranzaccion='20' and id_comprobante ='3' and id_estado =1

select *from ventas.v_ventasxvendedor

create or replace  view ventas.v_ventasxvendedor
as
select
case when trim(f.id_cliente)='000' then f.DNI_CLIENTE else  trim(c.DOC_PERSONA) end as documento ,
CASE WHEN trim(f.id_cliente)='000' then trim(f.NOMAPE_CLIENTE) else  trim(c.NOMBRE_RAZON)  end AS cliente,
f.fecha_venta::date as fecha_venta,
cp.descripcion_corta ||'/'|| f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
f.imp_total,
df.cantidad as unidades_vendidas,
df.precio,
df.importe,
m.simbolo as moneda,
f.id_vendedor,
cp.descripcion_larga as nom_comprobante,
COALESCE((vend.apell_paterno || ' ' || vend.apell_materno || ' ' || vend.nombres ),vend.NOMBRE_RAZON)as vendedor,
suc.id_empresa,
TV.DESCRIPCION_LARGA AS TIPOVENTA,
fa.descripcion_larga as familia,
fa.id_familia,
p.descripcion_larga as producto,
u.desc_corta as unidad
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
INNER JOIN COMMON.TBL_TIPOVENTA TV ON (TV.ID_TIPOVENTA=F.ID_TIPOVENTA)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join planillas.tbl_persona vend on  (vend.id_persona=f.id_vendedor)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join  ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion  and f.id_sucursal=df.id_sucursal and df.id_estado=1)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_familia fa on fa.id_familia=p.id_familia
inner join almacen.tbl_unidad u on (u.id_unidadventa=df.id_unidadventa)
inner join common.tbl_sucursal suc on (suc.id_sucursal=f.id_sucursal)
where f.id_estado=1
/*group by f.id_cliente,f.fecha_venta::date,f.DNI_CLIENTE,c.DOC_PERSONA,f.NOMAPE_CLIENTE,c.NOMBRE_RAZON,
f.serie_facturacion,f.numdoc_facturacion ,f.imp_total,m.simbolo,f.id_vendedor,cp.descripcion_larga,
vend.apell_paterno,vend.apell_materno,vend.nombres,cp.descripcion_corta,suc.id_empresa,TV.DESCRIPCION_LARGA,vend.NOMBRE_RAZON,fa.descripcion_larga, fa.id_familia
*/
order by id_vendedor, fa.id_familia,fecha_venta::date,serie_facturacion,numdoc_facturacion

select *from almacen.tbl_unidad u

select *from ventas.v_ventasxvendedor_resumido

create or replace  view ventas.v_ventasxvendedor_resumido
as
select
sum(df.cantidad) as unidades_vendidas,
sum(df.importe) as importe,
m.simbolo as moneda,
f.id_vendedor,
COALESCE((vend.apell_paterno || ' ' || vend.apell_materno || ' ' || vend.nombres ),vend.NOMBRE_RAZON)as vendedor,
suc.id_empresa,
TV.DESCRIPCION_LARGA AS TIPOVENTA,
fa.descripcion_larga as familia,
fa.id_familia,
p.descripcion_larga as producto
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
INNER JOIN COMMON.TBL_TIPOVENTA TV ON (TV.ID_TIPOVENTA=F.ID_TIPOVENTA)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join planillas.tbl_persona vend on  (vend.id_persona=f.id_vendedor)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join  ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion  and f.id_sucursal=df.id_sucursal and df.id_estado=1)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_familia fa on fa.id_familia=p.id_familia
inner join almacen.tbl_unidad u on (u.id_unidadventa=df.id_unimedventa)
inner join common.tbl_sucursal suc on (suc.id_sucursal=f.id_sucursal)
where f.id_estado=1
group by m.simbolo,
f.id_vendedor,
COALESCE((vend.apell_paterno || ' ' || vend.apell_materno || ' ' || vend.nombres ),vend.NOMBRE_RAZON),
suc.id_empresa,
TV.DESCRIPCION_LARGA ,
fa.descripcion_larga,
fa.id_familia,
p.descripcion_larga

select *from ventas.tbl_detfacturacion

select *from almacen.tbl_producto

explain select *from ventas.v_ventasxvendedor_detallado

create or replace  view ventas.v_ventasxvendedor_detallado
as
select
case when trim(f.id_cliente)='000' then f.DNI_CLIENTE else  trim(c.DOC_PERSONA) end as documento ,
CASE WHEN trim(f.id_cliente)='000' then trim(f.NOMAPE_CLIENTE) else  trim(c.NOMBRE_RAZON)  end AS cliente,
f.fecha_venta::date as fecha_venta,
cp.descripcion_corta ||'/'|| f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
f.imp_total,
sum(df.cantidad) as unidades_vendidas,
m.simbolo as moneda,
f.id_vendedor,
cp.descripcion_larga as nom_comprobante,
(vend.apell_paterno || ' ' || vend.apell_materno || ' ' || vend.nombres )as vendedor,
suc.id_empresa,
TV.DESCRIPCION_LARGA AS TIPOVENTA,
fa.descripcion_larga as familia
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
INNER JOIN COMMON.TBL_TIPOVENTA TV ON (TV.ID_TIPOVENTA=F.ID_TIPOVENTA)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join planillas.tbl_persona vend on  (vend.id_persona=f.id_vendedor)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join  ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion  and f.id_sucursal=df.id_sucursal and df.id_estado=1)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_familia fa on fa.id_familia=p.id_familia
inner join almacen.tbl_unidad u on (u.id_unidadventa=df.id_unimedventa)
inner join common.tbl_sucursal suc on (suc.id_sucursal=f.id_sucursal)
where f.id_estado=1
group by f.id_cliente,f.fecha_venta::date,f.DNI_CLIENTE,c.DOC_PERSONA,f.NOMAPE_CLIENTE,c.NOMBRE_RAZON,
f.serie_facturacion,f.numdoc_facturacion ,f.imp_total,m.simbolo,f.id_vendedor,cp.descripcion_larga,
vend.apell_paterno,vend.apell_materno,vend.nombres,cp.descripcion_corta,suc.id_empresa,TV.DESCRIPCION_LARGA,fa.descripcion_larga
order by id_vendedor,fecha_venta::date,serie_facturacion,numdoc_facturacion

select * from ventas.v_ventasxvendedor   where id_vendedor in ('161','1','179','187') and id_empresa=1

select *from ventas.tbl_Facturacion where  id_vendedor is null

select *from almacen.tbl_familia

SELECT *FROM COMMON.TBL_TIPOVENTA
select * from ventas.v_vendedores

create or replace view ventas.v_vendedores
as
select  trim(p.id_persona) as id_vendedor,p.doc_persona as dni,p.nombre_razon as vendedor,e.des_estado as estado
from planillas.tbl_persona p
inner join common.tbl_estado e on (e.id_estado=p.id_estado)
where empleado is true and p.id_estado=1
order by trim(p.id_persona)::bigint asc

select *from planillas.tbl_turnocolaborador order by liquidacion_id asc

delete from planillas.tbl_turnocolaborador

select *from planillas.tbl_persona
select *from ventas.v_vendedores

DELETE from planillas.tbl_persona WHERE ISNUMERIC(ID_PERSONA)=FALSE
DELETE FROM VENTAS.TBL_DIRECCION  WHERE ISNUMERIC(ID_PERSONA)=FALSE

SELECT *FROM ALMACEN.TBL_PRODUCTO

UPDATE ALMACEN.TBL_PRODUCTO SET DESCRIPCION_CORTA=DESCRIPCION_LARGA
select *from caja.tbl_movcaja

CREATE OR REPLACE  VIEW COMMON.V_EQUIPO
AS
SELECT id_equipo,nombre,ip,id_estado,impresora,serie,mac FROM COMMON.TBL_EQUIPO
select * from ventas.V_CABPREVENTA   where serie_prev::text || '-' || numero_prev::integer='1-54'

select * from ventas.V_CABPREVENTA   where COALESCE(documento,'') || COALESCE(doc_persona,'') || COALESCE(cliente,'') ilike '%ka%' and cantidad_pendiente>0

select *from  ventas.tbl_valesconsumo f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join  ventas.tbl_detvale df on (f.id_vale=df.id_vale  and f.id_sucrusal_vale=df.id_sucrusal_vale)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
inner join caja.tbl_movvaleconsumo mvc on (f.id_vale=mvc.id_vale and f.id_sucrusal_vale=mvc.id_sucrusal_vale)
inner join caja.tbl_movcaja mc on (mc.id_movimcaja=mvc.id_movimcaja and  mc.id_sucursal=mvc.id_sucursalmov)

select *from ventas.tbl_movvaleconsumo

select *from ventas.tbl_valesconsumo
select *from caja.tbl_movcaja
select *from almacen.tbl_precio
select *from almacen.tbl_producto
select *from ventas.tbl_detfacturacion

select * from ventas.v_detdocventas   where id_sucursal=1 and id_facturacion=33422

create or replace view ventas.v_detdocventas
as
select
df.id_almacen,
df.id_producto,
case when p.codigo='TXT-01' then df.descripcion_linea else p.descripcion_larga end as producto,
df.cantidad,
df.precio,
df.imp_dscto,
df.importe as tot_detalle,
u.desc_corta as unidad,
df.id_facturacion,
df.id_sucursal,df.id_estado
from   ventas.tbl_detfacturacion df
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)

create or replace view ventas.v_detdoccompras
as
select
df.id_almacen,
df.id_producto,
p.descripcion_larga as producto,
df.cantidad,
df.precio,
df.imp_dscto,
df.importe as tot_detalle,
u.desc_corta as unidad,
df.id_facturacion,
df.id_sucursal
from   compras.tbl_detcompras df
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)

select * from ventas.v_detdocventas   where  id_facturacion::text ||  id_sucursal::text='332291'

select *from ventas.v_cabfacturacion

create or replace view ventas.v_cabfacturacion
as
select
f.numdoc_facturacion,
f.serie_facturacion,
f.id_comprobante,
f.id_direccion,
f.id_cliente,
f.id_sucursal,
c.doc_persona as documento,
c.nombre_razon as cliente,
dc.direccion,
f.fecha_venta,
cp.descripcion_corta || '/'||f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
'SON :' || fu_numero_letras(f.imp_total) as tot_letras,
f.valor_venta,
f.imp_igv,
f.imp_total,
m.simbolo as moneda,
tv.descripcion_larga as tipo_venta,
e.des_estado as estado,
(f.id_facturacion::text  ||f.id_sucursal::text) as codigo_venta,
m.id_moneda,
f.id_operacion,
f.id_tipoventa,
f.id_facturacion,
f.nota_credito,
s.id_empresa
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join common.tbl_tipoventa tv on (tv.id_tipoventa=f.id_tipoventa)
inner join common.tbl_estado e on (e.id_estado=f.id_estado)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join common.tbl_sucursal s on s.id_sucursal=f.id_sucursal

create or replace view ventas.v_facturacion_sin_notacredito
as
select
f.numdoc_facturacion,
f.serie_facturacion,
f.id_comprobante,
f.id_direccion,
f.id_cliente,
f.id_sucursal,
c.doc_persona as documento,
c.nombre_razon as cliente,
dc.direccion,
f.fecha_venta,
cp.descripcion_corta || '/'||f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
'SON :' || fu_numero_letras(f.imp_total) as tot_letras,
f.valor_venta,
f.imp_igv,
f.imp_total,
m.simbolo as moneda,
tv.descripcion_larga as tipo_venta,
e.des_estado as estado,
(f.id_facturacion::text  ||f.id_sucursal::text) as codigo_venta,
m.id_moneda,
f.id_operacion,
f.id_tipoventa,
f.id_facturacion,
f.nota_credito,
s.id_empresa
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join common.tbl_tipoventa tv on (tv.id_tipoventa=f.id_tipoventa)
inner join common.tbl_estado e on (e.id_estado=f.id_estado)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join common.tbl_sucursal s on s.id_sucursal=f.id_sucursal
left join (
	select id_facturacionref as id_facturacion,id_sucursalref as id_sucursal from ventas.tbl_facturacion f where nota_credito is true and f.id_estado=1
) x on x.id_facturacion=f.id_facturacion and x.id_sucursal=f.id_sucursal
where x is null

select *from ventas.tbl_facturacion f

CREATE OR REPLACE VIEW v_estacion
AS
 SELECT
 i.id_isla,
 i.nom_isla,
 i.num_mangueras,
 i.num_lados,
 l.id_lado,
 l.descripcion_lado,
 m.id_manguera,
 m.id_orden,
 m.id_producto,
 p.descripcion_corta,
 p.descripcion_larga,
 p.imagen,
 M.id_almacen
   FROM tbl_isla i
   JOIN tbl_manguera m ON i.id_isla = m.id_isla
   JOIN tbl_lado l ON m.id_lado = l.id_lado
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::bpchar = m.id_producto::bpchar AND dp.id_unidadventa = m.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
  ORDER BY i.id_isla, l.id_lado, m.id_orden;

select *from  seguridad.v_item

create or replace view seguridad.v_item
as
SELECT
i.item,
i.fk_codmenu,
COALESCE(i.descripcion,'') as descripcion,
i.item_orden,
COALESCE(i.evento,'') as evento,
i.estado,
i.menu_item,
i.orden,
i.menu,
i.tooltip,
i.icono,
i.maximised,
i.toolbar,
i.url,
ir.menu as MenuRef
  FROM seguridad.item i
  left join seguridad.item ir on ir.item=i.fk_codmenu
  order by i.menu_item desc,item;

select *from seguridad.v_item

alter table seguridad.item add column url varchar(1000) default '/webresort/public/almacen/producto/listproducto';

CREATE OR REPLACE VIEW ventas.v_listar_cabecera_facturacion_ventas AS
 SELECT
 facturacion.idfacturacion,
 facturacion.fecha_emision,
    facturacion.date_act,
    ((tipcomprobante.abreviatura::text || '/'::text) || facturacion.nro_serie::text) || facturacion.nro_comprobante::text AS comprobante,
    divisa.nom_abrevia AS moneda,
    (facturacion.total + COALESCE(( SELECT sum(ccc.monto_interes) AS sum
           FROM creditos.ctas_xcobrar ccxcc
      JOIN creditos.cuota ccc ON ccxcc.idcuenta_xcobrar = ccc.idcuenta_xcobrar
     WHERE ccxcc.idfacturacion = facturacion.idfacturacion), 0::numeric))::numeric(14,6) AS total,
    tipocambio.venta, formapago.descripcion, facturacion.idcliente,
    facturacion.iddircliente, facturacion.idruta, facturacion.anulado,
    facturacion.impreso, cliente.nro_documento, cliente.nombre,
    facturacion.idtipcomprobante,
        CASE
            WHEN facturacion.estado_credito = 'S'::bpchar THEN 'CREDITO'::text
            ELSE tipventa.nombre::text
        END AS tip_venta,
    usuario.camp2 AS usuario,
    facturacion.nro_serie,
    facturacion.nro_comprobante,
    facturacion.eliminado,
    cliente.estadocivil
   FROM ventas.facturacion
   JOIN tipcomprobante ON facturacion.idtipcomprobante = tipcomprobante.idtipcomprobante
   JOIN divisa ON facturacion.iddivisa = divisa.iddivisa
   JOIN formapago ON facturacion.idformapago = formapago.idformapago
   JOIN operaciones.tipocambio ON facturacion.idtipocambio = tipocambio.idtipocambio
   JOIN ventas.dircli ON facturacion.idruta = dircli.idruta AND facturacion.idcliente::text = dircli.idcliente::text AND facturacion.iddircliente::bpchar = dircli.iddircliente::bpchar
   JOIN ventas.cliente ON dircli.idcliente::text = cliente.idcliente::text
   JOIN seguridad.usuario ON usuario.idusuario = facturacion.idusuario
   JOIN tipventa ON tipventa.idtipventa = facturacion.idtipventa
  ORDER BY facturacion.nro_serie, facturacion.nro_comprobante, facturacion.fecha_emision;

select *from ventas.v_listar_cabecera_facturacion

select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='731'

select *from ventas.v_listar_cabecera_facturacion

CREATE INDEX idxfacturacionventas ON ventas.tbl_facturacion ((serie_facturacion || numdoc_facturacion));

select * from ventas.v_listar_cabecera_facturacion   where id_empresa=1 and cliente||COMPROBANTE ilike '%%' limit 100

select  *from almacen.tbl_existencia

update almacen.tbl_existencia set stock_fisico=,stock_inicial=,consto_inicial from almacen.tbl_import_producto imp
where imp.id_producto=tbl_existencia.id_producto and imp.id_unidad=tbl_existencia.id_unidad

EXPLAIN  ANALYZE  select * from ventas.v_listar_cabecera_facturacion

create or replace   view   ventas.v_listar_cabecera_facturacion
as
select
 tbl_facturacion.id_facturacion,
 tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total::numeric(20,2) as imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_facturacion.serie_facturacion,4,'0')::character(4)  as serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto::numeric(20,2) as imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta::numeric(20,2) as valor_venta,
    tbl_facturacion.imp_neto::numeric(20,2) as imp_neto,
    tbl_facturacion.imp_igv::numeric(20,2) as imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    COALESCE(tbl_facturacion.glosa,'')::text as glosa,
    suc.nombre as sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text as documento_canjeado,
    COALESCE((select cp.serie ||'-'|| cp.numero from ventas.tbl_cotizacionpreventa cp  where cp.id_cotizapreventa=tbl_facturacion.id_cotizapreventa),'Sin Pre-Venta') as nro_preventa,
    COALESCE(tbl_facturacion.imp_percepcion,0) as imp_percepcion,
    COALESCE(tbl_facturacion.STATUS_SUNAT,false) as status,
    tbl_comprobante.codigosunat as CodigoCpe,
    CASE tbl_facturacion.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
        "right"(tbl_facturacion.serie_facturacion::text, 3)::character(3) as serie,
        tbl_facturacion.numdoc_facturacion as numero,
        COALESCE(tbl_facturacion.message_sunat,'') message_sunat,
        COALESCE(to_char(tbl_facturacion.fecha_envio,'dd/MM/yyyy'),'') as fecha_envio,
   COALESCE(tbl_facturacion.imp_icbper,0) as imp_icbper,
   COALESCE(tbl_facturacion.orden_compra,'') as orden_compra,
   COALESCE(tbl_facturacion.anticipo,false) as anticipo,
    COALESCE(tbl_facturacion.con_anticipo,false) as con_anticipo,
   to_char(tbl_facturacion.fecha_reg,'hh24:mm:ss') as hora,
  tbl_facturacion.enviado_status,
   COALESCE(ecp.nombre,'') as estado_comprobante,
   COALESCE(ect.nombre,'') as estado_contribuyente,
   COALESCE(cct.nombre,'') as condicion_contribuyente
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   left join common.tbl_estadocomprobante ecp on ecp.codigo=tbl_facturacion.estado_comprobante
   left join common.tbl_estadocontribuyente ect on ect.codigo=tbl_facturacion.estado_contribuyente
   left join common.tbl_condicioncontribuyente cct on cct.codigo=tbl_facturacion.condicion_contribuyente
   where tbl_facturacion.nota_credito=false and tbl_facturacion.nota_debito=false
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion;

select *from ventas.tbl_detfacturacion

select to_char(fecha_reg,'hh24:mm:ss') from ventas.tbl_facturacion
select * from common.V_CONFIGSERIES  where id_tranzaccion='20' and id_comprobante ='19' and serie='FN01' and id_estado =1 and id_empresa=1  and id_sucursal=1

select * from planillas.v_persona_serach   where id_persona=

select *from planillas.v_persona_serach

create or replace  view  ventas.v_pendientesenvioFacelecronica
as
select
 tbl_facturacion.id_facturacion,
 tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_facturacion.serie_facturacion,4,'0')::character(4)  as serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre as sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text as documento_canjeado,
    COALESCE((select cp.serie ||'-'|| cp.numero from ventas.tbl_cotizacionpreventa cp  where cp.id_cotizapreventa=tbl_facturacion.id_cotizapreventa),'Sin Pre-Venta') as nro_preventa,
    COALESCE(tbl_facturacion.imp_percepcion,0) as imp_percepcion,
    COALESCE(tbl_facturacion.STATUS_SUNAT,false) as status,
    cpnc.codigosunat,
    tbl_comprobante.codigosunat as CodigoCpe
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   LEFT JOIN VENTAS.TBL_FACTURACION CPOR ON CPOR.ID_FACTURACION=tbl_facturacion.id_facturacionref and cpor.id_sucursal=tbl_facturacion.id_sucursalref
   LEFT JOIN common.tbl_comprobante cpnc ON cpor.id_comprobante = cpnc.id_comprobante
  -- where tbl_facturacion.nota_credito=false and tbl_facturacion.nota_debito=false
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion;

--  SELECT *FROM common.tbl_comprobante  LIMIT 10

select *from ventas.v_reporteventas where date_part('year',fecha_venta::date)=2015

/*
create or replace  view  ventas.v_reporteventas
as
select
 tbl_facturacion.id_facturacion,
 to_char(tbl_facturacion.fecha_venta, 'dd/mm/yyyy'::text) as fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_facturacion.serie_facturacion,4,'0')::character(4)  as serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto-,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre as sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text as documento_canjeado,
    COALESCE((select cp.serie ||'-'|| cp.numero from ventas.tbl_cotizacionpreventa cp
	where cp.id_cotizapreventa=tbl_facturacion.id_cotizapreventa),'Sin Pre-Venta') as nro_preventa,
    COALESCE(tbl_facturacion.imp_percepcion,0) as imp_percepcion,
    dir.direccion,
    dis.distrito,
    COALESCE((select sum(mc.imp_movimiento)from creditos.tbl_ventacredito vc inner join
	creditos.tbl_detpagocuota dp on (dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito) inner join
	caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
	where tbl_facturacion.id_facturacion=vc.id_facturacion and tbl_facturacion.id_sucursal=vc.id_sucursal ),0) as pagos,

COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on (cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	where  tbl_facturacion.id_facturacion=cred.id_facturacion and tbl_facturacion.id_sucursal=cred.id_sucursal and tbl_facturacion.id_tipoventa=2),0)-

COALESCE((select sum(mov.imp_movimiento)
	from   creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on ( cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   tbl_facturacion.id_facturacion=cred.id_facturacion and tbl_facturacion.id_sucursal=cred.id_sucursal and tbl_facturacion.id_tipoventa=2),0)-
COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota_notacredito NC on(Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
where (tbl_facturacion.id_facturacion=cred.id_facturacion and tbl_facturacion.id_sucursal=cred.id_sucursal and tbl_facturacion.id_tipoventa=2)),0) as saldo

   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion  dir ON tbl_facturacion.id_direccion = dir.id_direccion  AND tbl_facturacion.id_cliente = dir.id_persona
   inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
   inner join ventas.tbl_zona z on (z.id_zona=sec.id_zona)
   inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= dir.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_persona.id_vendtitular)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
   where exists(select *from ventas.tbl_detfacturacion  dfac where dfac.id_facturacion=tbl_facturacion.id_facturacion and dfac.id_sucursal=tbl_facturacion.id_sucursal)
	and tbl_facturacion.id_estado=1 AND tbl_facturacion.nota_credito=false
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion;

*/

CREATE OR REPLACE VIEW ventas.v_reporteventas
AS
 SELECT tbl_facturacion.id_facturacion,
    to_char(tbl_facturacion.fecha_venta, 'dd/mm/yyyy'::text) AS fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
        CASE
            WHEN btrim(tbl_facturacion.id_cliente::text) = '000'::text THEN tbl_facturacion.dni_cliente::text
            ELSE btrim(tbl_persona.doc_persona::text)
        END AS doc_persona,
        CASE
            WHEN btrim(tbl_facturacion.id_cliente::text) = '000'::text THEN btrim(tbl_facturacion.nomape_cliente)
            ELSE btrim(tbl_persona.nombre_razon::text)
        END AS cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga AS tipoventa,
    lpad(tbl_facturacion.serie_facturacion::text, 4, '0'::text)::character(4) AS serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado AS estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text AS id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    vend.doc_persona AS doc_vendedor,
    vend.nombre_razon AS vendedor,
    vend.id_persona AS id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    (tbl_facturacion.imp_neto-COALESCE((select imp_total from ventas.tbl_facturacion tf
				where tf.id_facturacionref=tbl_facturacion.id_facturacion and tf.id_sucursalref=tbl_facturacion.id_sucursal and tf.nota_credito=true and tf.id_estado=1),0))::numeric(20,4) as imp_neto ,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta AS tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre AS sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text AS documento_canjeado,
    COALESCE(( SELECT (cp.serie::text || '-'::text) || cp.numero::text
           FROM ventas.tbl_cotizacionpreventa cp
          WHERE cp.id_cotizapreventa = tbl_facturacion.id_cotizapreventa), 'Sin Pre-Venta'::text) AS nro_preventa,
    COALESCE(tbl_facturacion.imp_percepcion, 0::numeric) AS imp_percepcion,
    dir.direccion,
    dis.distrito,
    COALESCE(( SELECT sum(mc.imp_movimiento) AS sum
           FROM creditos.tbl_ventacredito vc
             JOIN creditos.tbl_detpagocuota dp ON dp.id_credito = vc.id_credito AND dp.id_sucursal_credito = vc.id_sucursal_credito
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
          WHERE tbl_facturacion.id_facturacion = vc.id_facturacion AND tbl_facturacion.id_sucursal = vc.id_sucursal), 0::numeric) AS pagos,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_ventacredito cred
             JOIN creditos.tbl_cuota c ON cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          WHERE tbl_facturacion.id_facturacion = cred.id_facturacion AND tbl_facturacion.id_sucursal = cred.id_sucursal AND tbl_facturacion.id_tipoventa = 2), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_ventacredito cred
             JOIN creditos.tbl_cuota c ON cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE tbl_facturacion.id_facturacion = cred.id_facturacion AND tbl_facturacion.id_sucursal = cred.id_sucursal AND tbl_facturacion.id_tipoventa = 2), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_ventacredito cred
             JOIN creditos.tbl_cuota_notacredito nc ON cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred
          WHERE tbl_facturacion.id_facturacion = cred.id_facturacion AND tbl_facturacion.id_sucursal = cred.id_sucursal AND tbl_facturacion.id_tipoventa = 2), 0::numeric) AS saldo
   FROM ventas.tbl_facturacion
     JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
     JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
     JOIN ventas.tbl_direccion dir ON tbl_facturacion.id_direccion = dir.id_direccion AND tbl_facturacion.id_cliente::text = dir.id_persona::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona ON tbl_persona.id_persona::text = dir.id_persona::text
     JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
     JOIN common.tbl_estado ON tbl_estado.id_estado = tbl_facturacion.id_estado
     JOIN planillas.tbl_persona vend ON vend.id_persona::bpchar = tbl_persona.id_vendtitular
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = tbl_facturacion.id_sucursal
  WHERE (EXISTS ( SELECT dfac.item,
            dfac.cantidad,
            dfac.id_almacen,
            dfac.id_producto,
            dfac.id_unidadventa,
            dfac.id_listaprecio,
            dfac.precio,
            dfac.importe,
            dfac.imp_dscto,
            dfac.imp_igv,
            dfac.puntos,
            dfac.id_manguera,
            dfac.id_isla,
            dfac.id_lado,
            dfac.id_sucursal,
            dfac.id_facturacion,
            dfac.lista,
            dfac.id_estado,
            dfac.id_unimedventa,
            dfac.descripcion_linea,
            dfac.ancho,
            dfac.largo,
            dfac.val_unimedventa,
            dfac.id_usuario,
            dfac.inv_inicial,
            dfac.imp_percepcion,
            dfac.porcent_percepcion
           FROM ventas.tbl_detfacturacion dfac
          WHERE dfac.id_facturacion = tbl_facturacion.id_facturacion AND dfac.id_sucursal = tbl_facturacion.id_sucursal)) AND tbl_facturacion.id_estado = 1 AND tbl_facturacion.nota_credito = false
  ORDER BY tbl_facturacion.fecha_venta::date, tbl_facturacion.id_comprobante, tbl_facturacion.serie_facturacion, tbl_facturacion.numdoc_facturacion;

SELECT *FROM VENTAS.tbl_facturacion

,
    COALESCE((select sum(mc.imp_movimiento)from creditos.tbl_ventacredito vc
inner join  creditos.tbl_detpagocuota dp on (dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito)
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where tbl_facturacion.id_facturacion=vc.id_facturacion and tbl_facturacion.id_sucursal=vc.id_sucursal ),0) as pagos

COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on (cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-

COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_cuota_notacredito NC
where (Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)),0) as saldo,

select *from ventas.tbl_facturacion
select *from  ventas.tbl_cotizacionpreventa

select *from common.tbl_distrito

select *from ventas.tbl_facturacion where nota_credito=true
select *from ventas.v_listar_cabecera_nota_credito

create or replace  view  ventas.v_listar_cabecera_nota_credito
as
select
 tbl_facturacion.id_facturacion,
 tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_facturacion.serie_facturacion,4,'0')::character(4)  as serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre as sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text as documento_canjeado,
    COALESCE((select cp.serie ||'-'|| cp.numero from ventas.tbl_cotizacionpreventa cp  where cp.id_cotizapreventa=tbl_facturacion.id_cotizapreventa),'Sin Pre-Venta') as nro_preventa,
    COALESCE(tbl_facturacion.imp_percepcion,0) as imp_percepcion,
    COALESCE(((cpn.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || fac.numdoc_facturacion::text,'') AS comprobante_ref,
    COALESCE(fac.id_facturacion,0) as id_facturacionref,
    COALESCE(fac.id_sucursal,0) as id_sucursalref,
    tbl_facturacion.id_estado as id_estadofac,
    tbl_facturacion.id_motivonotacredito,
    mn.descripcion_larga as motivonotacredito
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   inner join common.tbl_motivonotacredito mn on mn.id_motivonotacredito=tbl_facturacion.id_motivonotacredito
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   left  join ventas.tbl_facturacion fac on (fac.id_facturacion=tbl_facturacion.id_facturacionref and fac.id_sucursal=tbl_facturacion.id_sucursalref)
   left join common.tbl_comprobante cpn on (cpn.id_comprobante=fac.id_comprobante)
   where   tbl_facturacion.nota_credito=true
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion;

select * from almacen.v_producto_modelo  where producto||codigo||modelo ilike '%%'
select * from ventas.v_listar_cabecera_facturacion   where id_empresa=1 and  nota_credito=false and nro_documento||cliente||documento ilike '%%' limit 100

create or replace  view  ventas.v_listar_cabecera_nota_debito
as
select
 tbl_facturacion.id_facturacion,
 tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_facturacion.serie_facturacion,4,'0')::character(4)  as serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre as sucursal,
    tbl_facturacion.nota_debito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text as documento_canjeado,
    COALESCE((select cp.serie ||'-'|| cp.numero from ventas.tbl_cotizacionpreventa cp  where cp.id_cotizapreventa=tbl_facturacion.id_cotizapreventa),'Sin Pre-Venta') as nro_preventa,
    COALESCE(tbl_facturacion.imp_percepcion,0) as imp_percepcion,
    COALESCE(((cpn.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || fac.numdoc_facturacion::text,'') AS comprobante_ref,
    fac.id_facturacion as id_facturacionref,
    fac.id_sucursal as id_sucursalref,
    tbl_facturacion.id_estado as id_estadofac,
    MND.ID_MOTIVONOTADEBITO,
    mnd.descripcion_larga as MotivoNotadebito
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   INNER JOIN common.tbl_motivoNotaDebito MND ON MND.ID_MOTIVONOTADEBITO=tbl_facturacion.ID_MOTIVONOTADEBITO
   left  join ventas.tbl_facturacion fac on (fac.id_facturacion=tbl_facturacion.id_facturacionref and fac.id_sucursal=tbl_facturacion.id_sucursalref)
   left join common.tbl_comprobante cpn on (cpn.id_comprobante=fac.id_comprobante)
   where   tbl_facturacion.nota_debito=true
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion;

select *from ventas.tbl_facturacion

create or replace  view  ventas.v_listar_cabecera_unidadvehicular
as
select
 tbl_facturacion.id_facturacion,
 tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_facturacion.serie_facturacion,4,'0')::character(4)  as serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
    suc.id_empresa,
    tbl_facturacion.id_operacion,
    tbl_facturacion.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    tbl_facturacion.glosa,
    suc.nombre as sucursal,
    tbl_facturacion.nota_credito,
    tbl_facturacion.ingresado_porcanje,
    tbl_facturacion.id_facturacionref::text || tbl_facturacion.id_sucursalref::text as documento_canjeado,
    tbl_facturacion.PLACA,
    tbl_facturacion.MODELO,
    tbl_facturacion.MARCA,
    tbl_facturacion.COLOR,
    prod.descripcion_larga AS UNIDAD,
    prod.id_producto,
    tbl_facturacion.imp_xdia,
    (tbl_facturacion.imp_total/(case when tbl_facturacion.imp_xdia>0 then tbl_facturacion.imp_xdia else 1 end)) as nro_dias
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
  INNER JOIN ALMACEN.TBL_PRODUCTO PROD ON (PROD.ID_PRODUCTO=tbl_facturacion.ID_UNIDAD)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion;

SELECT *FROM ALMACEN.TBL_PRODUCTO

select *from compras.tbl_compra

create or replace  view  compras.v_listar_cabecera_compras
as
select
 tbl_compra.id_compra,
 tbl_compra.fec_documento,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_compra.serie::text) || tbl_compra.nro_doc_compra::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_tipocambio.venta,
    tbl_compra.id_proveedor,
    tbl_compra.id_dirproveedor,
    tbl_compra.id_estado,
    case when trim(tbl_compra.id_proveedor)='000' then tbl_compra.DNI_PROVEEDOR else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_compra.id_proveedor)='000' then trim(tbl_compra.NOMAPE_PROVEEDOR) else  trim(tbl_persona.NOMBRE_RAZON)  end AS PROVEEDOR,
    --tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_compra.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     lpad(tbl_compra.serie,4,'0')::character(4)  as serie,
    tbl_compra.nro_doc_compra,
    tbl_estado.des_estado as estado,
    tbl_compra.id_sucursalcompra,
    tbl_compra.id_tranzaccion,
    tbl_compra.id_cotizaorden,
    (tbl_compra.id_sucursalcompra::text || tbl_compra.anio::text || tbl_compra.id_compra::text ||  tbl_compra.id_mes::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_compra.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_compra.imp_bruto,
    tbl_compra.imp_dcsto,
    tbl_compra.imp_venta,
    tbl_compra.imp_total,
    tbl_compra.imp_igv,
    tbl_compra.imp_redondeo,
    suc.id_empresa,
    tbl_compra.id_operacion,
    tbl_compra.id_tipocambio,
    tbl_tipocambio.venta as tipo_cambio,
    tbl_compra.glosa,
    suc.nombre as sucursal,
    tbl_compra.nota_credito
   from  compras.tbl_compra
   JOIN common.tbl_comprobante ON tbl_compra.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_compra.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_compra.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_compra.id_dirproveedor = tbl_direccion.id_direccion  AND tbl_compra.id_proveedor = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_compra.id_tipocompra
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_compra.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_compra.id_comprador)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_compra.id_sucursalcompra)
   where tbl_compra.id_estado=1
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_compra.fec_documento::date,tbl_compra.id_comprobante ,tbl_compra.serie,tbl_compra.nro_doc_compra;

select *from compras.tbl_compra

select *from common.tbl_comprobante
SELECT *FROM VENTAS.TBL_FACTURACION

select *from creditos.v_creditos_x_cobrar

select * from CREDITOS.V_CUENTACORRIENTECLIENTE  where id_creditocuenta='1031'

CREATE OR REPLACE VIEW CREDITOS.V_CUENTACORRIENTECLIENTE
AS
select
fac.id_cliente,
cred.id_credito,
(ct.descripcion_corta ||'/' || fac.serie_facturacion || '-' ||fac.numdoc_facturacion) as documento,
ct.id_comprobante,
ct.descripcion_corta as tip_comprobante,
fac.serie_facturacion ,
fac.numdoc_facturacion,
fac.fecha_venta,
m.simbolo as moneda,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0) as credito,
COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal and mov.id_estado=1)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0) as amortizacion,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-
COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal and mov.id_estado=1)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE  cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) as saldo,
fac.imp_total+COALESCE((select sum(c.imp_interes)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)   , 0.00)  as total_venta,
	( SELECT cc.fec_vencimiento
           FROM creditos.tbl_cuota cc
          WHERE cc.id_credito = cred.id_credito
          ORDER BY cc.nro_cuota DESC
         LIMIT 1) AS fec_vencimiento,
         cli.doc_persona as doc_cliente,
	 cli.nombre_razon as cliente,
	 dir.direccion as dir_cliente,
	  'Vendedor : '::text || (vend.nombre_razon) AS vendedor,
	  dis.distrito,
	  (fac.id_facturacion::text || fac.id_sucursal::text) as id_venta,
	 (cred.id_credito::text ||  cred.id_sucursal_credito::text) as id_creditocuenta,
	 --0::numeric ncr
	COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE  cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) as ncr
from ventas.tbl_facturacion fac
inner join creditos.tbl_ventacredito vcred on  (fac.id_facturacion=vcred.id_facturacion and fac.id_sucursal=fac.id_sucursal)
inner join creditos.tbl_credito cred on (cred.id_credito=vcred.id_credito and cred.id_sucursal_credito=vcred.id_sucursal_credito)
inner join common.tbl_comprobante ct on (ct.id_comprobante=fac.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=fac.id_moneda)
inner join ventas.tbl_direccion dir on (dir.id_direccion=fac.id_direccion and dir.id_persona=fac.id_cliente)
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join planillas.tbl_persona vend on (vend.id_persona=fac.id_vendedor)
inner join ventas.tbl_sector r on (r.id_sector=dir.id_sector)
inner join ventas.tbl_zona z on (z.id_zona=r.id_zona)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)

select *from creditos.tbl_credito
select * from creditos.v_cuotas_x_cobra

select
c.id_cuotas,
c.id_credito,
c.id_sucursal_credito ,
c.nro_cuota,
c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
0 as ncr,
0 as dscto,
0 as mora,
COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	--inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)),0) as monto_cancelado,

	 c.imp_cuota + c.imp_mora  - COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)),0) AS saldo_debito,
tbl_estado.des_estado as estado,
c.fec_vencimiento,
c.dias_gracia	,
c.nro_letra,
c.fec_registro,
(cp.descripcion_corta || '/' || mov.serie || '-' || mov.numero) as doc_movimiento,
CASE mov.id_estado
    WHEN 1 THEN COALESCE(mov.imp_movimiento, 0.00)
    WHEN 7 THEN 0.00
    ELSE NULL::numeric
END AS tot_movimiento
from creditos.tbl_cuota c
inner join common.tbl_estado on (tbl_estado.id_estado=c.id_estado)
left join creditos.tbl_detpagocuota dpc on (c.id_cuotas=dpc.id_cuotas and  c.id_credito=dpc.id_credito and  c.id_sucursal_credito=dpc.id_sucursal_credito)
left join caja.tbl_movcaja mov on (mov.id_movimcaja=dpc.id_movimcaja and  mov.id_sucursal=dpc.id_sucursal)
left join common.tbl_comprobante cp on (cp.id_comprobante=mov.id_comprobante)
order by c.nro_cuota;

select *from caja.tbl_movcaja mov

select *from common.tbl_comprobante

select *from creditos.tbl_cuota

select * from creditos.v_cuotas_x_cobrar   where id_credito=107 and  id_sucursal_credito=1

select *from ventas.tbl_sector
select *from planillas.tbl_persona
select *from creditos.tbl_cuota
select *from common.tbl_moneda
select *from creditos.tbl_credito

select *from ventas.tbl_facturacion

select * from ventas.v_listar_cabecera_facturacion   where id_empresa=1  and (fecha_Venta::date>= '04/08/2013' and fecha_Venta::date<= '04/08/2014') limit 100

 select *from ventas.tbl_detfacturacion where id_facturacion::text ||  id_sucursal::text='371'

 select *from ventas.v_detdocventas where tot_detalle<=0

select *from ventas.tbl_detfacturacion where id_facturacion=4150

select * from ventas.v_editfacturacion  where (id_facturacion::text || id_sucursal::text)='19181'

"POLICARB. ALV.  CRISTAL (MIYASATO - ECON ) 6MM - 20.00-4.0000 X 3.0000
70.00-50.0000 X 5.0000"
"POLICARB. ALV.  CRISTAL (MIYASATO - ECON ) 6MM - 20.00-4.0000 X 3.0000
70.00-50.0000 X 5.0000"

create or replace view ventas.v_editfacturacion
as
select
df.item,
df.id_producto,
df.id_almacen,
case when TRIM(p.codigo)='TXT-01' then df.descripcion_linea else
(split_part(p.descripcion_larga,',',1) || ',' || COALESCE((CASE WHEN Df.ANCHO>0 AND df.LARGO>0 THEN split_part(df.descripcion_linea,',',2) END),'') )
 end || case when df.precio=0 then E'\n' else '' end as producto,
'0.00'::numeric(20,4) as stock,
u.desc_corta as unidad,
df.cantidad,
df.lista,
df.precio,
df.imp_dscto,
df.importe as tot_detalle,
'+'::text agregar,
dp.id_unidadventa,
df.id_listaprecio,
(df.precio*df.cantidad-df.imp_igv)::numeric(20,4) as subtotal,
case when f.id_operacion=1 then igv.imp_igv else 0 end  as porcent_igv,
df.precio*df.cantidad as imp_bruto,
df.cantidad as cantidad_editada,
p.servicio as ctrl_sctok,
tp.coste,
df.id_estado,
dp.val_unidad,
dp.val_minimo,
df.imp_igv,
2::integer as op,
df.item::text || ',' || df.id_producto::text || ',' || df.id_unidadventa::text || ','|| df.id_almacen::text || ',' || df.id_listaprecio::text as id_old,
df.id_facturacion,
df.id_sucursal,
dp.id_unidadventa as idunimedcontrolventa,
dp.val_unidad as val_controlventa,
df.ancho,
df.largo,
p.codigo,
p.sujet_percepcion,
COALESCE(df.porcent_percepcion,0) as porcent_percepcion,
COALESCE(df.imp_percepcion,0) as imp_percepcion,
case when df.porcent_percepcion>0 then df.precio/(1+df.porcent_percepcion/100) else df.precio end  as presinprecep,
((case when df.porcent_percepcion>0 then df.precio/(1+df.porcent_percepcion/100) else df.precio end) * df.cantidad)  as totsinpercep,
p.gestiona_series,
dp.ctl_stock,
cod_barra,
df.tg,
COALESCE(df.icbper,false) as icbper,
COALESCE(df.imp_icbper,0) as  imp_icbper,
COALESCE(df.anticipo,false) as anticipo,
COALESCE(df.anticipo,false) as cantidad_fraccionada
from   ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa and df.id_estado=1)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
--inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=df.id_unimedventa)
inner join common.tbl_igv igv on (igv.id_igv=f.id_igv)
where df.id_estado=1
order by df.item

select *from almacen.tbl_producto

select *from  ventas.tbl_detfacturacion  where anticipo is true

select *from ventas.tbl_detfacturacion
select *from common.tbl_igv
select * from ventas.v_editfacturacion  where (id_facturacion::text || id_sucursal::text)='25911'

select *from ventas.tbl_detfacturacion
select *from almacen.tbl_producto

select * from   ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=df.id_unimedventa)
inner join common.tbl_igv igv on (igv.id_igv=f.id_igv) where f.id_facturacion=4150

select *from ventas.tbl_detfacturacion

select *from common.tbl_operacion
select *from common.tbl_igv
alter table ventas.tbl_detfacturacion add column id_estado integer default 1;

select *from  almacen.tbl_detproducto
select *from almacen.tbl_precio
select *from almacen.tbl_producto
select * from ventas.tbl_detfacturacion df
select *from common.tbl_sucursal

select *from common.tbl_tipocambio

  select* from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante

select *
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_comprobante.id_comprobante=tbl_facturacion.id_comprobante
   JOIN common.tbl_moneda ON  tbl_moneda.id_moneda=tbl_facturacion.id_moneda
   JOIN common.tbl_tipocambio ON tbl_tipocambio.id_tipocambio=tbl_facturacion.id_tipocambio
   JOIN ventas.tbl_direccion ON  tbl_direccion.id_direccion=tbl_facturacion.id_direccion  AND tbl_direccion.id_persona=tbl_facturacion.id_cliente
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   --INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion::numeric,tbl_facturacion.numdoc_facturacion::NUMERIC;

alter table ventas.tbl_facturacion add column glosa text default '';

select * from ventas.v_detalledocventas   where id_documentoventa= '141'

select *from ventas.tbl_facturacion

select *from ventas.v_impdocventas
select *from  ventas.tbl_facturacion

select *from almacen.tbl_producto

CREATE OR REPLACE VIEW almacen.v_producto_stock
AS
 SELECT
 p.id_producto,
 p.descripcion_larga AS nombrecompleto,
 p.descripcion_corta AS nombrecorto,
 m.descripcion_larga AS marca,
 COALESCE(trunc(sum(ex.stock_fisico * pre.val_unidad), 6), 0.0) AS stock,
 e.id_estado,
 e.des_estado AS estado,
 p.servicio,
 p.impuesto,
 p.codigo,
 p.id_familia,
p.cod_barra
   FROM almacen.tbl_detproducto dp
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_marca m ON m.id_marca = p.id_marca
   JOIN almacen.tbl_precio pre ON pre.id_producto::text = p.id_producto::text AND pre.id_unidadventa = u.id_unidadventa
   JOIN almacen.tbl_listaprecio lp ON lp.id_listaprecio = pre.id_listaprecio
   JOIN almacen.tbl_existencia ex ON p.id_producto::text = ex.id_producto::text AND ex.id_unidadventa = u.id_unidadventa
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
  WHERE lp.id_estado = 1
  GROUP BY p.id_producto, m.descripcion_larga, e.id_estado
  ORDER BY p.descripcion_larga asc;-- isnumeric(btrim(p.id_producto::text)) DESC;

select *from almacen.tbl_producto

CREATE OR REPLACE VIEW planillas.v_persona
AS
 SELECT p.id_persona,
    p.doc_persona,
    case when length(COALESCE(replace(p.nombre_razon,'"','')))=0 then (p.apell_paterno || ' ' || p.apell_materno || ' ' || p.nombres )::varchar(100) else p.nombre_razon end  as nombre_razon,
    --COALESCE(replace(p.nombre_razon,'"',''),p.apell_paterno || ' ' || p.apell_materno || ' ' || p.nombres )::varchar(100) as nombre_razon,
    COALESCE(p.razon_comercial,'') as razon_comercial,
    p.sexo,
    COALESCE(p.email, ''::character varying) AS email,
    COALESCE(p.paginaweb, ''::text) AS paginaweb,
    p.fecha_nac,
    p.tipo_persona,
    p.cliente_proveedor,
    p.deuda_confidencial,
    p.no_apto_credito,
    p.concientizado,
    p.copropietario,
    COALESCE(p.observaciones, ''::text) AS observaciones,
    est.id_estadocivil,
    est.descripcion AS estado_civil,
    e.id_estado,
    e.des_estado AS estado,
    p.cliente,
    p.proveedor,
    ID_VENDTITULAR,
    ID_VENDSUPLENTE,
    ID_COBRADOR,
    IMP_MINIMOVENTA,
    PERCEP_CLIENTE,
    AGENTE_PERCEPTOR,
    COALESCE(id_tipdocidentidad,4) as id_tipdocidentidad,
    porcent_percepcion
   FROM planillas.tbl_persona p
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
   LEFT JOIN planillas.tbl_estadocivil est ON est.id_estadocivil = p.id_estadocivil;

select *from almacen.v_producto_stock

select *from almacen.v_listproducto

create or replace view almacen.v_listproducto
as
 SELECT
 p.id_producto,
 p.descripcion_larga AS nombrecompleto,
 p.descripcion_corta AS nombrecorto,
 m.descripcion_larga AS marca,
stockh AS stock,
 e.id_estado,
 e.des_estado AS estado,
 p.servicio,
 p.impuesto
   FROM almacen.tbl_detproducto dp
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_marca m ON m.id_marca = p.id_marca
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
  GROUP BY p.id_producto, m.descripcion_larga, e.id_estado
  ORDER BY p.id_producto::NUMERIC;-- isnumeric(btrim(p.id_producto::text)) DESC;

select *from almacen.tbl_producto

CREATE OR REPLACE VIEW almacen.v_listar_stk_producto
AS
 SELECT

    dap.id_almacen,
    dap.id_producto,
    dap.stock_fisico AS stock,
    dap.stocktransito as stocktransito
   FROM almacen.tbl_existencia dap
   I
   JOIN almacen.tbl_precio du ON du.id_producto = dap.id_producto AND du.id_unidadventa = dap.id_unidadventa
   inner join almacen.tbl_listaprecio lp on (lp.id_listaprecio=du.id_listaprecio)
   where lp.id_estado=1 ;
  --GROUP BY dap.id_almacen, dap.id_producto;

select *from almacen.tbl_detproducto where id_producto='1130'

select *from ALMACEN.FN_STOCK('1130',54,1,2)
select * from ALMACEN.FN_STOCK('4418',1,1,'2')
988

CREATE OR REPLACE FUNCTION ALMACEN.fn_convert_unit_venta(
	_id_producto varchar(20),
	_id_unidad integer,
	_id_almacen integer,
	_cantidad numeric(20,4)
) returns table(product_id varchar(20),unit_id integer,val_unit integer, stock numeric(20,4)) as  $$
declare
	_stock numeric(20,4);
	_val_unidad integer;
	_id_unidad_inventario integer;
	_val_unidad_inventario integer;
	_val_unidad_venta integer;
	_descuento numeric(20,4);
	_stock_saldo numeric(20,4);

begin
_descuento:=0;
stock:=0;
_val_unidad:=0;
_val_unidad_venta:=0;
_stock_saldo:=0;
	select dp.id_unidadventa,dp.val_unidad into _id_unidad_inventario,_val_unidad_inventario from almacen.tbl_producto p
	inner join almacen.tbl_detproducto dp on p.id_producto=p.id_producto
	inner join almacen.tbl_existencia ex on ex.id_producto=dp.id_producto and ex.id_unidadventa=dp.id_unidadventa
	where ex.id_producto=_id_producto and ex.id_almacen=_id_almacen and dp.unidad_inventario=true;

	select dp.val_unidad into _val_unidad_venta from almacen.tbl_producto p
	inner join almacen.tbl_detproducto dp on p.id_producto=p.id_producto
	where dp.id_producto=_id_producto and dp.id_unidadventa=_id_unidad and dp.id_estado=1 ;

	RAISE NOTICE '_val_unidad_venta %', _val_unidad_venta;
	RAISE NOTICE '_id_unidad_inventario %', _id_unidad_inventario;
	RAISE NOTICE '_val_unidad_inventario %', _val_unidad_inventario;
	select stock_fisico into _stock from almacen.tbl_existencia where id_producto=_id_producto and id_almacen=_id_almacen and id_unidadventa=_id_unidad_inventario;
	RAISE NOTICE 'stock  %', _stock ;
	_descuento:=(_cantidad*_val_unidad_venta)/_val_unidad_inventario;
	_stock_saldo :=_stock-_descuento;
return query select _id_producto, _id_unidad_inventario, _val_unidad_inventario,_stock_saldo,_descuento;
end;$$
language 'plpgsql';

select *from almacen.tbl_detproducto

SELECT *FROM ALMACEN.V_LISTPRODUCTOANALISI

CREATE OR REPLACE VIEW ALMACEN.V_LISTPRODUCTOANALISI
AS
select
	dap.id_producto,
	p.descripcion_larga as producto	,
	dap.stock_fisico,
	dap.stocktransito
from
almacen.tbl_existencia dap
inner join almacen.tbl_detproducto dp on (dp.id_producto=dap.id_producto and dp.id_unidadventa=dap.id_unidadventa and unidad_inventario=true)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto) where p.id_producto<>'TXT-01' and p.id_familia not in('3')
order by dap.stock_fisico

create or replace view almacen.v_productos_rotacion
as
select
	p.id_producto,
	p.descripcion_larga as producto	,
	dap.stock_fisico,
	dap.stocktransito,
	sum(df.cantidad) as cantidad
from
almacen.tbl_existencia dap
inner join almacen.tbl_detproducto dp on (dp.id_producto=dap.id_producto and dp.id_unidadventa=dap.id_unidadventa and unidad_inventario=true)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join ventas.tbl_detfacturacion df on (dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa)
where p.id_producto<>'TXT-01' and p.id_familia not in('3')
group by p.id_producto,
	p.descripcion_larga ,
	dap.stock_fisico,
	dap.stocktransito
order by sum(df.cantidad) desc;

order by dap.stock_fisico

select *from almacen.tbl_grupo
select *from almacen.tbl_familia

select *from almacen.tbl_producto
select * from almacen.tbl_detproducto

select *from almacen.tbl_existencia

select *from seguridad.v_usuariosucursal

select *from common.v_sucursal

CREATE OR REPLACE VIEW common.v_sucursal
AS
 SELECT est.id_sucursal,
    est.nombre,
    est.email,
    est.observacion,
    est.direccion,
    em.id_empresa,
    em.nombre AS empresa,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(p.nombre_razon,'') as cliente,
    COALESCE(p.doc_persona,'') as doc_persona,
    COALESCE(dir.id_direccion,0) as id_direccion,
    COALESCE(dir.id_persona,'') as id_persona,
    EST.telefono,
    est.celular,
    COALESCE(est.id_ubigeo,'') as id_ubigeo,
    COALESCE(est.codigo_establecimiento,'')::varchar(30) as codigo_establecimiento,
    COALESCE(trim(dis.distrito) || '-' || trim(prov.provincia) || '-' ||  trim(dpto.departamento),'') as nom_ubigeo
   FROM common.tbl_sucursal est
   JOIN common.tbl_empresa em ON est.id_empresa = em.id_empresa
   JOIN common.tbl_estado e ON est.id_estado = e.id_estado
   left join common.tbl_distrito dis on dis.id_distrito=est.id_ubigeo
   left join common.tbl_provincia prov on prov.id_provincia=dis.id_provincia
   left join common.tbl_dpto dpto on dpto.id_dpto=prov.id_dpto
   left  join VENTAS.TBL_DIRECCION DIR ON (DIR.id_direccion=est.id__direccion and dir.id_persona=est.id__cliente)
   left join planillas.tbl_persona p on (p.id_persona=dir.id_persona);

select *from planillas.tbl_persona
select *from common.tbl_dpto
create or replace view common.v_formapago
as
SELECT id_formapago, descripcion, predeterminado, id_estado
  FROM common.tbl_formapago;

CREATE OR REPLACE VIEW CAJA.V_CAJABANCO
AS
SELECT id_cajabanco, descripcion, id_estado, venta_contado, cobranzas,
       pagos, venta_credito, nro_cuenta, id_sucursal, caja_banco, id_moneda
  FROM caja.tbl_cajabanco;

create or replace view common.v_tarjeta
as
SELECT id_tarjeta, denominacion, id_estado
  FROM common.tbl_tarjeta;

CREATE OR REPLACE VIEW ventas.v_detfacturacion
as
SELECT item, id_almacen,id_producto, id_unidadventa,cantidad, id_listaprecio,
       precio, importe, imp_dscto, imp_igv, puntos, id_manguera, id_isla,
       id_lado, id_sucursal, id_facturacion
  FROM ventas.tbl_detfacturacion;

select *from ventas.v_detfacturacion

select * from ventas.v_valesconsumo  where vale || concepto || fec_emision || cliente || doc_persona ilike '%fernandez%deme%' order by id_vale

CREATE OR REPLACE VIEW ventas.v_valesconsumo
 AS
 SELECT v.id_vale,
        CASE
            WHEN v.fec_emision IS NOT NULL THEN to_char(v.fec_emision, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_emision,
    v.concepto,
        CASE
            WHEN v.fec_vencimiento IS NOT NULL THEN to_char(v.fec_vencimiento, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_vencimiento,
    v.imp_vale,
    v.id_direccion,
    v.id_moneda,
    COALESCE(v.nro_vale, ''::text) AS nro_vale,
    v.imp_pendiente,
    v.id_cliente,
    p.doc_persona,
    p.nombre_razon AS cliente,
    v.id_autoriza,
    v.vehiculo,
    v.placa,
    v.conductor,
    v.id_sucrusal_vale,
    v.serie_vale,
    v.id_comprobante,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(v.kilometraje, ''::character varying) AS kilometraje,
    v.fec_emision AS fecha,
    (LPAD(v.serie_vale::text,4,'0') || '.'::text) || LPAD(v.nro_vale::text,7,'0') AS vale_id,
    (((c.descripcion_corta::text || '/'::text) || LPAD(v.serie_vale::text,4,'0')) || '-'::text) || LPAD(v.nro_vale::text,7,'0') AS vale,
        CASE date_part('month'::text, v.fec_emision)
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
    date_part('year'::text, v.fec_emision)::text AS anio,
    COALESCE(v.id_clientefactura, '') as id_clientefactura,
    COALESCE(v.id_direccionfactura,0) as id_direccionfactura,
    COALESCE(cf.doc_persona,'') as doc_clientefactura,
    COALESCE(cf.nombre_razon,'') AS clienefactura
   FROM ventas.tbl_valesconsumo v
   JOIN planillas.tbl_persona p ON p.id_persona::text = v.id_cliente::text
   JOIN common.tbl_estado e ON e.id_estado = v.id_estado
   JOIN common.tbl_comprobante c ON c.id_comprobante = v.id_comprobante
   left join planillas.tbl_persona cf ON cf.id_persona::text = v.id_clientefactura::text

select *from ventas.tbl_valesconsumo where nro_vale ilike '%179%'

select * from ventas.v_valesconsumo  where vale || concepto || fec_emision || cliente || doc_persona ilike '%%' order by id_vale
select *from ventas.tbl_valesconsumo
update ventas.tbl_valesconsumo set id_clientefactura=id_cliente, id_direccionfactura=id_direccion

CREATE OR REPLACE VIEW ventas.v_detvalesconsumo
AS
 SELECT d.id_vale,
    d.cantidad,
    d.lista,
    d.precio,
    d.imp_dsct,
    d.total,
    p.id_producto,
    p.descripcion_larga AS producto,
    dp.id_unidadventa,
    d.id_listaprecio,
    d.item,
    d.id_sucrusal_vale,
    e.id_estado,
    e.des_estado AS estado,

   FROM ventas.tbl_detvale d
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN common.tbl_estado e ON d.id_estado = e.id_estado;

create or replace view ventas.v_impvaleconsumo
as
select
d.id_vale,
d.id_sucrusal_vale,
(v.imp_vale-COALESCE((select sum(imp_consumo)from CAJA.TBL_MOVVALECONSUMO  mv where mv.id_vale=v.id_vale and  mv.id_sucrusal_vale=v.id_sucrusal_vale),0)) as imp_vale,
d.id_producto,
d.id_unidadventa,
id_listaprecio,
cast(v.serie_vale::integer as text) || '.' || cast(v.nro_vale::integer as text) as vale_id,
d.item,
v.canjeado
 FROM ventas.tbl_valesconsumo v
 inner join ventas.tbl_detvale d on (v.id_vale=d.id_vale and v.id_sucrusal_vale=d.id_sucrusal_vale)
where v.canjeado=false;

CREATE OR REPLACE VIEW almacen.v_transportista
as
select
id_transportista,
nro_documento,
datos_personales as transportista
from almacen.tbl_transportista

select * from caja.v_editamovdiversos   where id_movimcaja::text || id_sucursal::text='61181'

select *from caja.tbl_movcaja

update caja.tbl_movcaja set imp_movimiento=2000  where id_movimcaja::text || id_sucursal::text='61181'

caja.tbl_detmovpago set imp_pago=2000 where id_movimcaja::text || id_sucursal::text='61181'

CREATE OR REPLACE VIEW COMMON.V_SERIESLIST
AS
SELECT cs.id_configserie,
    c.descripcion_corta AS documento,
    cs.serie,
    cs.numero,
    cs.id_tranzaccion,
    s.nombre AS sucursal,
    cs.id_sucursal,
    cs.id_estado,
    cs.id_comprobante,
    EM.ID_EMPRESA,
    cs.plantilla
   FROM common.tbl_configserie cs
   JOIN common.tbl_comprobante c ON c.id_comprobante = cs.id_comprobante
   JOIN common.tbl_sucursal s ON s.id_sucursal = cs.id_sucursal
   JOIN COMMON.TBL_EMPRESA EM ON (EM.ID_EMPRESA=S.ID_EMPRESA);

select *from common.tbl_configserie

select *from almacen.tbl_producto p
inner join almacen.tbl_detproducto dp on (dp.id_producto=p.id_producto and dp.id_unidadventa=dp.id_unidadventa)

select *from almacen.tbl_detproducto
select *from almacen.v_guiaremventa

create or replace view almacen.v_guiaremventa
as
select( c.descripcion_corta || '/'|| cab.serie || '-' || cab.numero) documento,
cab.fecha ,
p.nombre_razon as distinatario,
cab.direc_partidad,
dir.direccion as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
p.doc_persona as doc_dictinatario,
t.datos_personales as transportista,
t.nro_documento as doc_transportista,
cab.id_movimiento,
cab.id_sucursal,
cab.id_comprobante,
cab.id_almorigen,
cab.id_almdestino,
cab.id_tranzaccion,
cab.hora,
cab.doc_referencia,
cab.id_motivo,
cab.fec_llegada,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.valor_venta,
cab.imp_neto,
cab.glosa,
cab.id_dirclientprov,
cab.id_clientprov,
cab.id_transportista,
cab.id_igv,
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
cab.id_comprasventa,
cab.serie,
cab.numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placatransporte,
cab.nrocostinscrip
from
almacen.tbl_cabmovalm cab
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_dirclientprov and  dir.id_persona=cab.id_clientprov)
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join almacen.tbl_transportista t on (t.id_transportista=cab.id_transportista)
inner join common.tbl_concepto m on (m.id_concepto=cab.id_motivo)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)

create or replace view almacen.v_guiaremtraslado
as
select( c.descripcion_corta || '/'|| cab.serie || '-' || cab.numero) documento,
cab.fecha ,
p.nombre_razon as distinatario,
cab.direc_partidad,
dir.direccion as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
COALESCE(p.doc_persona,'') as doc_dictinatario,
COALESCE(t.nombre_razon,COALESCE(t.nombres,'') || ' ' || COALESCE(t.apell_paterno,'') || ' ' || COALESCE(t.apell_materno,'')) as transportista,
COALESCE(t.doc_persona,t.dni) as doc_transportista,
cab.id_movimiento,
cab.id_sucursal,
cab.id_comprobante,
cab.id_almorigen,
cab.id_almdestino,
cab.id_tranzaccion,
''::text hora,
cab.doc_referencia,
cab.id_motivo,
cab.fec_llegada,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.valor_venta,
cab.imp_neto,
cab.glosa,
cab.id_dirclientprov,
cab.id_clientprov,
cab.id_transportista,
cab.id_igv,
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
codigorefk,
cab.serie,
cab.numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placatransporte,
cab.nrocostinscrip,
almo .descalmacen as alm_origen,
almd .descalmacen as alm_destino,
s.id_empresa
from
almacen.tbl_cabmovalm cab
inner join common.tbl_sucursal s on (s.id_sucursal=cab.id_sucursal)
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_dirclientprov and  dir.id_persona=cab.id_clientprov)
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=(cab.id_transportista)::INTEGER)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_concepto m on (m.id_concepto=cab.id_motivo)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join almacen.tbl_almacen almo on (almo.id_almacen=cab.id_almorigen)
inner join almacen.tbl_almacen almd on (almd.id_almacen=cab.id_almdestino)

select * from almacen.V_DETMOVALMACEN  where id_movimiento::text ='280001000017031'
select *from  almacen.tbl_transportista

select  id_almorigen,id_almdestino from almacen.tbl_cabmovalm where id_movimiento=28000100001712

select *from almacen.tbl_producto where id_producto='1016'
select id_transportista, *from almacen.tbl_cabmovalm

select *from ventas.tbl_transportista

select * from  ALMACEN.V_DETMOVALMACEN cab

select * from planillas.v_persona   where id_persona='33' order by id_persona

CREATE OR REPLACE VIEW ALMACEN.V_DETMOVALMACEN
AS
SELECT
dm.item,
dm.id_producto,
dm.id_almacen,
p.descripcion_larga as procducto,
u.id_unidadventa,
dm.cantidad,
dm.lp,
dm.precio,
dm.imp_dscto,
dm.total,
'+'::text as agregar,
dm.id_unidadkardex,
1::integer as id_lista,
dm.id_estado,
2::integer as op,
dm.item::text ||',' || dm.id_producto ||','||dm.id_unidadkardex::text ||','|| dm.id_almacen::text as id_old,
dm.id_movimiento
 FROM  almacen.tbl_detmovalm dm
inner join almacen.tbl_detproducto dp on (dp.id_producto=dm.id_producto and  dp.id_unidadventa=dm.id_unidadkardex)
inner join almacen.tbl_producto p  on(p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad  u on (u.id_unidadventa=dp.id_unidadventa)
order by dm.item

select 1
 FROM  almacen.tbl_detmovalm dm
inner join almacen.tbl_detproducto dp on (dp.id_producto=dm.id_producto and  dp.id_unidadventa=dm.id_unidadkardex)
inner join almacen.tbl_producto p  on(p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad  u on (u.id_unidadventa=dp.id_unidadventa)
 where id_movimiento::text ='28000100001703'
order by dm.item

select *from almacen.tbl_precio
select * FROM  almacen.tbl_detmovalm
select *from  creditos.v_listar_recibos_pagos_creditos

select id_facturacion,*from ventas.tbl_facturacion

select *from creditos.v_cuenta_corriente_clientes

select * from ventas.v_listar_cabecera_facturacion   where id_empresa=1 and cliente||COMPROBANTE ilike '%x%' limit 100

CREATE OR REPLACE VIEW creditos.v_cuenta_corriente_clientes
AS
 SELECT
  cli.doc_persona AS dni,
  cli.nombre_razon AS cliente,
  dir.direccion,
  zon.zona,
  r.sector,
        CASE
            WHEN fac.id_unidad IS NULL THEN ((((tbl_comprobante.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || '-'::text) || fac.numdoc_facturacion::text)::character varying
            ELSE ( SELECT prod.descripcion_larga
               FROM almacen.tbl_producto prod
              WHERE prod.id_producto::text = fac.id_unidad::text)
        END::text AS documento,
    to_char(fac.fecha_venta,'dd/MM/yyyy') AS fec_credito,
    to_char(ven.fec_vencimiento::date::timestamp with time zone, 'dd/MM/yyyy'::text) AS fecha_vencimiento,
    COALESCE(z.imp_credito, 0::numeric) AS credito,
    COALESCE(nc.imp_nc,0.00) as imp_nc,
    COALESCE(pcr.imp_pago, 0::numeric) AS pagos,
    ((COALESCE(z.imp_credito, 0::numeric)-COALESCE(nc.imp_nc,0.00) -COALESCE(pcr.imp_pago, 0::numeric)))::numeric(20,2) as saldo,
    fac.imp_neto + COALESCE(( SELECT sum(c.imp_interes) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
    tbl_tipoventa.descripcion_larga::text AS tipo_venta,
    tbl_moneda.simbolo AS moneda,
    fac.id_facturacion,
    fac.id_sucursal,
    fac.id_cliente,
    fac.id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    tbl_comprobante.descripcion_corta AS comprobante,
    fac.serie_facturacion,
    fac.numdoc_facturacion,
    suc.id_empresa,
    r.id_sector,
    r.id_zona,
    fac.id_vendedor,
    vend.nombre_razon as vendedor,
    now()::Date-fac.fecha_venta::date as dias,
    COALESCE((select replace(replace(t.telefono::text,'{"telefono":"',''),'"}','') from (
	select
		(
	      select array_to_json(array_agg(row_to_json(d)))
	      from (
		select  telefono
		from COMMON.tbl_telefono  tl
		where cli.id_persona=tl.id_persona
	      ) d
	    ) as telefono
	) t),'') as tlf_cliente,
     COALESCE(to_char(pagf.fecha_mov,'dd/MM/yyyy'),'') as ultimo_pago,
    trim(dist.distrito) ||'-'|| trim(prov.provincia) as ubigeo,
    '' as garante,
    zon.id_distrito,
    emp.ruc as ruc_empresa,
    emp.nombre as empresa,
    suc.direccion as dir_sucursal
   FROM ventas.tbl_facturacion fac
     JOIN creditos.tbl_ventacredito vc ON fac.id_sucursal = vc.id_sucursal AND vc.id_facturacion = fac.id_facturacion AND fac.id_tipoventa = 2 AND vc.id_estado = 1
     JOIN creditos.tbl_credito cred ON cred.id_credito = vc.id_credito AND cred.id_sucursal_credito = vc.id_sucursal_credito
     JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
     JOIN ventas.tbl_direccion dir ON dir.id_persona::text = fac.id_cliente::text AND dir.id_direccion = fac.id_direccion
     INNER JOIN ventas.tbl_sector r on r.id_sector=dir.id_sector
     INNER JOIN ventas.tbl_zona zon ON zon.id_zona=r.id_zona
     INNER JOIN common.tbl_distrito dist on dist.id_distrito=zon.id_distrito
     INNER JOIN common.tbl_provincia prov on prov.id_provincia=dist.id_provincia
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = fac.id_sucursal
     JOIN common.tbl_empresa emp on emp.id_empresa=suc.id_empresa
     JOIN planillas.tbl_persona vend on vend.id_persona=fac.id_vendedor
     INNER JOIN ( SELECT tbl_cuota.id_credito,
            tbl_cuota.id_sucursal_credito,
            max(tbl_cuota.fec_vencimiento::date) AS fec_vencimiento
           FROM creditos.tbl_cuota
          GROUP BY tbl_cuota.id_credito, tbl_cuota.id_sucursal_credito
     ) ven ON ven.id_credito = cred.id_credito AND ven.id_sucursal_credito = cred.id_sucursal_credito
     INNER JOIN (
		SELECT c.id_credito,c.id_sucursal_credito as id_sucursal, sum(c.imp_cuota) AS imp_credito
		FROM creditos.tbl_cuota c
		group by c.id_credito,c.id_sucursal_credito
	) Z on z.id_credito=cred.id_credito and z.id_sucursal=cred.id_sucursal_credito
    LEFT JOIN (
	SELECT ccc.id_credito,
            ccc.id_sucursal_credito,
            sum(dpc.imp_pago) AS imp_pago
           FROM creditos.tbl_cuota ccc
             JOIN creditos.tbl_detpagocuota dpc ON ccc.id_cuotas = dpc.id_cuotas AND ccc.id_credito = dpc.id_credito AND ccc.id_sucursal_credito = dpc.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = dpc.id_movimcaja AND mov.id_sucursal = dpc.id_sucursal
          WHERE ccc.nro_cuota <> 0 AND mov.id_estado = 1
          GROUP BY ccc.id_credito, ccc.id_sucursal_credito
	) pcr ON pcr.id_credito = cred.id_credito AND pcr.id_sucursal_credito = cred.id_sucursal_credito
   LEFT JOIN (
	select sum(COALESCE(NC.imp_dscto,0)) as imp_nc,id_credito,id_sucursal_cred as id_sucursal  from creditos.tbl_cuota_notacredito NC
	where nc.id_estado=1
	group by id_credito,id_sucursal_cred
	) nc ON nc.id_credito = cred.id_credito AND nc.id_sucursal = cred.id_sucursal_credito
LEFT JOIN  (SELECT max(mc.fecha_mov) as fecha_mov,dp.id_credito,dp.id_sucursal_credito
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
	     where mc.id_estado=1 and dp.id_estado=1
	     group by dp.id_credito,dp.id_sucursal_credito
         -- ORDER BY mc.fecha_mov DESC
         ) pagf on pagf.id_credito = cred.id_credito AND pagf.id_sucursal_credito = cred.id_sucursal_credito
  WHERE fac.id_estado = 1 and fac.nota_credito=false

select *from common.tbl_empresa
select *from ventas.tbl_zona
select *from common.tbl_sucursal

select * from creditos.v_cuenta_corriente_clientes  where id_empresa=1 and fec_credito::date>='01/03/2019' and fec_credito::Date<='15/12/2019' and cliente ilike '%%'

select *from creditos.tbl_cuota_notacredito
select *from creditos.v_creditos_x_cobrar

CREATE OR REPLACE VIEW creditos.v_creditos_x_cobrar
AS
 SELECT
        CASE
            WHEN fac.id_unidad IS NULL THEN ((((tbl_comprobante.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || '-'::text) || fac.numdoc_facturacion::text)::character varying
            ELSE ( SELECT prod.descripcion_larga
               FROM almacen.tbl_producto prod
              WHERE prod.id_producto::text = fac.id_unidad::text)
        END::text AS documento,
    cred.fec_emision AS fec_credito,
    cli.nombre_razon AS cliente,
    ( SELECT c.fec_vencimiento
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          ORDER BY c.nro_cuota DESC
         LIMIT 1) AS fec_vencimiento,
    tbl_moneda.simbolo AS moneda,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS credito,
    COALESCE(( SELECT sum(dp.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
          WHERE dp.id_credito = vc.id_credito AND dp.id_sucursal_credito = vc.id_sucursal_credito AND mc.id_estado = 1), 0::numeric) AS pagos,
    /*COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) -
          COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_cuota c
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito AND mov.id_estado = 1 and cmov.id_estado=1), 0::numeric)-
          COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE  cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred and nc.id_estado=1), 0::numeric) AS saldo,*/
          (cc.imp_cuota-COALESCE(nc.imp_nc,0)-COALESCE(z.imp_dscto,0)-COALESCE(pc.imp_pago_cuota,0))+COALESCE(cc.imp_mora,0)  AS saldo,
	  fac.imp_neto + COALESCE(( SELECT sum(c.imp_interes) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
    tbl_tipoventa.descripcion_larga::text AS tipo_venta,
    fac.id_facturacion,
    fac.id_sucursal,
    fac.id_cliente,
    fac.id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    tbl_comprobante.descripcion_corta AS comprobante,
    fac.serie_facturacion,
    fac.numdoc_facturacion,
    cli.doc_persona AS dni,
    suc.id_empresa,
   COALESCE(nc.imp_nc,0) as importe_nc
FROM ventas.tbl_facturacion fac
JOIN creditos.tbl_ventacredito vc ON fac.id_sucursal = vc.id_sucursal AND vc.id_facturacion = fac.id_facturacion AND fac.id_tipoventa <> 1 AND vc.id_estado = 1
JOIN creditos.tbl_credito cred ON cred.id_credito = vc.id_credito AND cred.id_sucursal_credito = vc.id_sucursal_credito
JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
JOIN ventas.tbl_direccion dir ON dir.id_persona::text = fac.id_cliente::text AND dir.id_direccion = fac.id_direccion
JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
JOIN common.tbl_sucursal suc ON suc.id_sucursal = fac.id_sucursal
left join (
	SELECT sum(c.imp_cuota) as imp_cuota,
		sum(COALESCE(creditos.getfunccalmora(c.id_cuotas)::numeric(20,4),0))  as imp_mora,
		c.id_credito,
		c.id_sucursal_credito
           FROM creditos.tbl_cuota c
       group by c.id_credito ,c.id_sucursal_credito
) cc on cred.id_credito = cc.id_credito AND cred.id_sucursal_credito = cc.id_sucursal_credito
LEFT JOIN (
	select
		sum(COALESCE(NC.imp_dscto,0)) as imp_nc,
		nc.id_credito,
		nc.id_sucursal_cred as id_sucursal
		from creditos.tbl_cuota_notacredito NC
		inner join creditos.tbl_cuota cc on nc.id_credito = cc.id_credito AND nc.id_sucursal_cred = cc.id_sucursal_credito  and cc.id_cuotas=nc.id_cuota
	where nc.id_estado=1
	group by nc.id_credito,nc.id_sucursal_cred
) nc ON nc.id_credito = cred.id_credito AND nc.id_sucursal = cred.id_sucursal_credito
LEFT JOIN ( SELECT
	    sum(dp.imp_pago_cuota) AS imp_pago_cuota,
	    sum(dp.imp_mora) as imp_mora,
	    dp.id_credito,
	    dp.id_sucursal_credito AS id_sucursal
	   FROM caja.tbl_movcaja m
	     JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
	  WHERE dp.id_estado = 1
	  group by
	    dp.id_credito,
	    dp.id_sucursal_credito
) pc ON  cred.id_credito = pc.id_credito AND cred.id_sucursal_credito = pc.id_sucursal
LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
	    dp.id_credito,
	    dp.id_sucursal_credito AS id_sucursal
	   FROM caja.tbl_movcaja m
	     JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
	  WHERE m.pronto_pago = true AND m.id_estado = 1
) z ON cred.id_credito = z.id_credito AND cred.id_sucursal_credito = z.id_sucursal

  WHERE fac.id_estado = 1
UNION ALL
 SELECT (((tbl_comprobante.descripcion_corta::text || '/'::text) || ha.serie::text) || '-'::text) || ha.numero::text AS documento,
    ha.fec_habilitacion AS fec_credito,
    cli.nombre_razon AS cliente,
    COALESCE((( SELECT c.fec_vencimiento
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          ORDER BY c.nro_cuota DESC
         LIMIT 1))::timestamp with time zone, now()) AS fec_vencimiento,
    'S/.'::character varying AS moneda,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS credito,
    0 AS pagos,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota c
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS saldo,
    ha.imp_habilitacion + COALESCE(( SELECT sum(c.imp_interes) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
    'Habilitacion'::text AS tipo_venta,
    ha.id_habilitacion AS id_facturacion,
    ha.id_sucursal,
    ha.id_proveedor AS id_cliente,
    ha.id_dirproveedor AS id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    tbl_comprobante.descripcion_corta AS comprobante,
    ha.serie AS serie_facturacion,
    ha.numero AS numdoc_facturacion,
    cli.doc_persona AS dni,
    suc.id_empresa,
    0.00 as importe_nc
   FROM molino.tbl_habilitacion ha
     JOIN molino.tbl_hbtcredito htc ON ha.id_habilitacion = htc.id_habilitacion AND ha.id_sucursal = htc.id_sucursal
     JOIN creditos.tbl_credito cred ON cred.id_credito = htc.id_credito AND cred.id_sucursal_credito = htc.id_sucursal_credito
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = ha.id_dirproveedor AND dir.id_persona::text = ha.id_proveedor::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN common.tbl_comprobante ON ha.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = ha.id_sucursal
UNION ALL
 SELECT (((c.descripcion_corta::text || '/'::text) || mv.serie::text) || '-'::text) || mv.numero::text AS documento,
    mv.fecha_mov AS fec_credito,
    pr.nombre_razon AS cliente,
    mv.fecha_mov AS fec_vencimiento,
    mn.simbolo AS moneda,
    COALESCE(( SELECT sum(c_1.imp_cuota) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0::numeric) AS credito,
    0 AS pagos,
    COALESCE(( SELECT sum(c_1.imp_cuota) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota c_1
             JOIN creditos.tbl_detpagocuota cmov ON c_1.id_cuotas = cmov.id_cuotas AND c_1.id_credito = cmov.id_credito AND c_1.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito AND mov.id_estado = 1), 0::numeric) AS saldo,
    mv.imp_movimiento + COALESCE(( SELECT sum(c_1.imp_interes) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0.00) AS total_venta,
    'Anticipo'::text AS tipo_venta,
    mv.id_movimcaja AS id_facturacion,
    mv.id_sucursal,
    mv.id_personaingdiv AS id_cliente,
    0 AS id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    c.descripcion_corta AS comprobante,
    mv.serie AS serie_facturacion,
    mv.numero AS numdoc_facturacion,
    pr.doc_persona AS dni,
    suc.id_empresa,
    0.00 as importe_nc
   FROM caja.tbl_movcaja mv
     JOIN creditos.tbl_credito cred ON cred.id_credito = mv.id_credito AND cred.id_sucursal_credito = mv.id_sucursal_credito
     JOIN common.tbl_comprobante c ON c.id_comprobante = mv.id_comprobante
     JOIN planillas.tbl_persona pr ON pr.id_persona::text = mv.id_personaingdiv::text
     JOIN common.tbl_moneda mn ON mn.id_moneda = mv.id_moneda
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = mv.id_sucursal
  WHERE mv.anticipo_base IS TRUE
  ORDER BY 2;

 /*
CREATE OR REPLACE VIEW creditos.v_creditos_x_cobrar
AS
 SELECT
        CASE
            WHEN fac.id_unidad IS NULL THEN ((((tbl_comprobante.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || '-'::text) || fac.numdoc_facturacion::text)::character varying
            ELSE ( SELECT prod.descripcion_larga
               FROM almacen.tbl_producto prod
              WHERE prod.id_producto::text = fac.id_unidad::text)
        END::text AS documento,
    cred.fec_emision AS fec_credito,
    cli.nombre_razon AS cliente,
    ( SELECT c.fec_vencimiento
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          ORDER BY c.nro_cuota DESC
         LIMIT 1) AS fec_vencimiento,
    tbl_moneda.simbolo AS moneda,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS credito,
    COALESCE(( SELECT sum(mc.imp_movimiento) AS sum
           FROM creditos.tbl_detpagocuota dp
             JOIN caja.tbl_movcaja mc ON mc.id_movimcaja = dp.id_movimcaja AND mc.id_sucursal = dp.id_sucursal
          WHERE dp.id_credito = vc.id_credito AND dp.id_sucursal_credito = vc.id_sucursal_credito AND mc.id_estado = 1), 0::numeric) AS pagos,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota c
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito AND mov.id_estado = 1), 0::numeric) AS saldo,
    fac.imp_neto + COALESCE(( SELECT sum(c.imp_interes) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
    tbl_tipoventa.descripcion_larga::text AS tipo_venta,
    fac.id_facturacion,
    fac.id_sucursal,
    fac.id_cliente,
    fac.id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    tbl_comprobante.descripcion_corta AS comprobante,
    fac.serie_facturacion,
    fac.numdoc_facturacion,
    cli.doc_persona AS dni,
    suc.id_empresa
   FROM ventas.tbl_facturacion fac
     JOIN creditos.tbl_ventacredito vc ON fac.id_sucursal = vc.id_sucursal AND vc.id_facturacion = fac.id_facturacion AND fac.id_tipoventa = 2 AND vc.id_estado = 1
     JOIN creditos.tbl_credito cred ON cred.id_credito = vc.id_credito AND cred.id_sucursal_credito = vc.id_sucursal_credito
     JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
     JOIN ventas.tbl_direccion dir ON dir.id_persona::text = fac.id_cliente::text AND dir.id_direccion = fac.id_direccion
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = fac.id_sucursal
UNION ALL
 SELECT (((tbl_comprobante.descripcion_corta::text || '/'::text) || ha.serie::text) || '-'::text) || ha.numero::text AS documento,
    ha.fec_habilitacion AS fec_credito,
    cli.nombre_razon AS cliente,
    COALESCE((( SELECT c.fec_vencimiento
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          ORDER BY c.nro_cuota DESC
         LIMIT 1))::timestamp with time zone, now()) AS fec_vencimiento,
    'S/.'::character varying AS moneda,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS credito,
    0 AS pagos,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota c
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS saldo,
    ha.imp_habilitacion + COALESCE(( SELECT sum(c.imp_interes) AS sum
           FROM creditos.tbl_cuota c
          WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
    'Habilitacion'::text AS tipo_venta,
    ha.id_habilitacion AS id_facturacion,
    ha.id_sucursal,
    ha.id_proveedor AS id_cliente,
    ha.id_dirproveedor AS id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    tbl_comprobante.descripcion_corta AS comprobante,
    ha.serie AS serie_facturacion,
    ha.numero AS numdoc_facturacion,
    cli.doc_persona AS dni,
    suc.id_empresa
   FROM molino.tbl_habilitacion ha
     JOIN molino.tbl_hbtcredito htc ON ha.id_habilitacion = htc.id_habilitacion AND ha.id_sucursal = htc.id_sucursal
     JOIN creditos.tbl_credito cred ON cred.id_credito = htc.id_credito AND cred.id_sucursal_credito = htc.id_sucursal_credito
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = ha.id_dirproveedor AND dir.id_persona::text = ha.id_proveedor::text
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
     JOIN common.tbl_comprobante ON ha.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = ha.id_sucursal
UNION ALL
 SELECT (((c.descripcion_corta::text || '/'::text) || mv.serie::text) || '-'::text) || mv.numero::text AS documento,
    mv.fecha_mov AS fec_credito,
    pr.nombre_razon AS cliente,
    mv.fecha_mov AS fec_vencimiento,
    mn.simbolo AS moneda,
    COALESCE(( SELECT sum(c_1.imp_cuota) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0::numeric) AS credito,
    0 AS pagos,
    COALESCE(( SELECT sum(c_1.imp_cuota) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM creditos.tbl_cuota c_1
             JOIN creditos.tbl_detpagocuota cmov ON c_1.id_cuotas = cmov.id_cuotas AND c_1.id_credito = cmov.id_credito AND c_1.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito AND mov.id_estado = 1), 0::numeric) AS saldo,
    mv.imp_movimiento + COALESCE(( SELECT sum(c_1.imp_interes) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0.00) AS total_venta,
    'Anticipo'::text AS tipo_venta,
    mv.id_movimcaja AS id_facturacion,
    mv.id_sucursal,
    mv.id_personaingdiv AS id_cliente,
    0 AS id_direccion,
    cred.id_credito,
    cred.id_sucursal_credito,
    c.descripcion_corta AS comprobante,
    mv.serie AS serie_facturacion,
    mv.numero AS numdoc_facturacion,
    pr.doc_persona AS dni,
    suc.id_empresa
   FROM caja.tbl_movcaja mv
     JOIN creditos.tbl_credito cred ON cred.id_credito = mv.id_credito AND cred.id_sucursal_credito = mv.id_sucursal_credito
     JOIN common.tbl_comprobante c ON c.id_comprobante = mv.id_comprobante
     JOIN planillas.tbl_persona pr ON pr.id_persona::text = mv.id_personaingdiv::text
     JOIN common.tbl_moneda mn ON mn.id_moneda = mv.id_moneda
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = mv.id_sucursal
  WHERE mv.anticipo_base IS TRUE
  ORDER BY 2;

*/

select version()

select *from almacen.tbl_producto

ALTER TABLE CAJA.TBL_MOVCAJA ADD COLUMN id_credito    INTEGER NULL;
ALTER TABLE CAJA.TBL_MOVCAJA ADD COLUMN	id_sucursal_credito  INTEGER NULL ;
ALTER TABLE CAJA.TBL_MOVCAJA ADD COLUMN anticipo_base boolean default false;

ALTER TABLE CAJA.TBL_MOVCAJA
	ADD FOREIGN KEY (id_credito, id_sucursal_credito) REFERENCES CREDITOS.TBL_CREDITO (id_credito, id_sucursal_credito) ON DELETE SET NULL;

CREATE OR REPLACE VIEW CREDITOS.V_ANTICIPOS
AS
SELECT
(c.descripcion_corta || '/' || mv.serie || '-' || mv.numero)  as documento,
mv.fecha_mov as fec_credito,
PR.NOMBRE_RAZON AS CLIENTE,
mv.fecha_mov as fec_vencimiento,
MN.SIMBOLO AS MONEDA,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)as credito,
0 as pagos,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-
COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0) as saldo,
	MV.imp_movimiento+COALESCE((select sum(c.imp_interes)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)   , 0.00)  as total_venta,
	'Anticipo'::TEXT AS tipo_venta,
	mv.id_movimcaja as id_facturacion,
	mv.id_sucursal,
	mv.ID_PERSONAINGDIV as id_cliente,
	0 as id_direccion,
	cred.id_credito,
	cred.id_sucursal_credito,
	c.descripcion_corta as comprobante,
	mv.serie,
	mv.numero,
	pr.doc_persona AS dni,
	(SELECT (vc.id_credito::text || vc.id_sucursal_credito)
		FROM creditos.tbl_ventacredito vc
	WHERE vc.id_credito=cred.id_credito and vc.id_sucursal_credito=cred.id_sucursal_credito limit 1) as id_credfacturado,
	mv.anticipo_base
FROM
CAJA.TBL_MOVCAJA MV
INNER JOIN CREDITOS.TBL_CREDITO CRED ON (CRED.id_credito=MV.id_credito AND CRED.id_sucursal_credito=MV.id_sucursal_credito )
INNER JOIN common.tbl_comprobante C ON c.id_comprobante = mv.id_comprobante
INNER JOIN PLANILLAS.TBL_PERSONA PR ON (PR.ID_PERSONA=MV.ID_PERSONAINGDIV)
INNER JOIN COMMON.TBL_MONEDA MN ON (MN.ID_MONEDA=MV.ID_MONEDA)

select * from creditos.v_cuotas_x_cobrar   where id_credito=103 and  id_sucursal_credito=1

select * from creditos.v_cuotas_x_cobrar   where id_credito::text || id_sucursal_credito::text in('481')

select * from creditos.v_cuotas_x_cobrar   where id_credito::text || id_sucursal_credito::text in('16231')

CREATE OR REPLACE VIEW creditos.v_cuotas_x_cobrar
AS
 SELECT c.nro_cuota,
    c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
    c.imp_capital,
    c.imp_interes,
    c.imp_cuota,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS ncr,
    COALESCE(z.imp_dscto, 0::numeric)::numeric(20,4) AS dscto,
    creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) AS mora,
    COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1 AND mov.pronto_pago = false AND cmov.id_estado = 1), 0::numeric) AS monto_cancelado,
    c.imp_cuota + COALESCE(
        CASE
            WHEN creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) = 0::numeric THEN x.mora
            ELSE creditos.getfunccalmora(c.id_cuotas)::numeric(20,4)
        END, 0::numeric) - COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS saldo_debito,
    tbl_estado.des_estado AS estado,
    c.fec_vencimiento,
    c.id_cuotas,
    c.id_credito,
    c.id_sucursal_credito,
    c.dias_gracia,
    c.id_credito::text || c.id_sucursal_credito::text AS id_creditocuenta,
    c.imp_cuota - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_cuota_pagar,
    COALESCE(c.nro_letra, '-'::character varying) AS nro_letra,
    c.id_estado,
    COALESCE(c.fecha_protesto, c.fec_vencimiento) AS fecha_protesto,
    COALESCE(c.nro_unico_pago, '-'::character varying) AS nro_unico_pago,
    COALESCE(c.dias_protesto, 0) AS dias_protesto,
    COALESCE(creditos.getfunccalmora(c.id_cuotas)::numeric, 0::numeric)::numeric(14,6) AS imp_mora,
    COALESCE(x.mora, 0::numeric) AS mov_mora
   FROM creditos.tbl_cuota c
     JOIN common.tbl_estado ON tbl_estado.id_estado = c.id_estado
     LEFT JOIN ( SELECT dpg.id_cuotas,
            dpg.id_credito,
            dpg.id_sucursal_credito,
            sum(dpg.imp_mora) AS mora
           FROM creditos.tbl_detpagocuota dpg
          WHERE dpg.id_estado = 1
          GROUP BY dpg.id_cuotas, dpg.id_credito, dpg.id_sucursal_credito) x ON x.id_cuotas = c.id_cuotas AND x.id_credito = c.id_credito AND x.id_sucursal_credito = c.id_sucursal_credito
     LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE m.pronto_pago = true AND m.id_estado = 1 AND dp.id_estado = 1) z ON c.id_cuotas = z.id_cuotas AND c.id_credito = z.id_credito AND c.id_sucursal_credito = z.id_sucursal
  ORDER BY c.nro_cuota;

select creditos.getfunccalmora(4566)
select creditos.getfunccalmora(4567)

CREATE OR REPLACE VIEW creditos.v_cuotas_x_cobrar
AS
 SELECT c.nro_cuota,
    c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
    c.imp_capital,
    c.imp_interes,
    c.imp_cuota,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS ncr,
    COALESCE(z.imp_dscto, 0::numeric)::numeric(20,4) AS dscto,
    creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) AS mora,
    COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1 AND mov.pronto_pago = false), 0::numeric) AS monto_cancelado,
    c.imp_cuota + COALESCE(c.imp_mora, 0::numeric) + (case when  creditos.getfunccalmora(c.id_cuotas)::numeric(20,4)=0 then x.mora else creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) end) - COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS saldo_debito,
    tbl_estado.des_estado AS estado,
    c.fec_vencimiento,
    c.id_cuotas,
    c.id_credito,
    c.id_sucursal_credito,
    c.dias_gracia,
    c.id_credito::text || c.id_sucursal_credito::text AS id_creditocuenta,
    c.imp_cuota - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_cuota_pagar,
    COALESCE(c.nro_letra, '-'::character varying) AS nro_letra,
    c.id_estado,
    COALESCE(c.fecha_protesto, c.fec_vencimiento) AS fecha_protesto,
    COALESCE(c.nro_unico_pago, '-'::character varying) AS nro_unico_pago,
    COALESCE(c.dias_protesto, 0) AS dias_protesto,
    COALESCE(c.imp_mora, 0::numeric)::numeric(14,6) AS imp_mora
   FROM creditos.tbl_cuota c
     JOIN common.tbl_estado ON tbl_estado.id_estado = c.id_estado
     left join (select
	dpg.id_cuotas,
	dpg.id_credito,
	dpg.ID_SUCURSAL_CREDITO,
	sum(dpg.imp_mora) as mora
	from creditos.tbl_detpagocuota dpg
	WHERE dpg.id_estado=1
	group by dpg.id_cuotas,dpg.id_credito,dpg.ID_SUCURSAL_CREDITO
) x on (x.id_cuotas=c.id_cuotas and x.id_credito=c.id_credito  and x.ID_SUCURSAL_CREDITO=c.ID_SUCURSAL_CREDITO)
     LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE m.pronto_pago = true AND m.id_estado = 1) z ON c.id_cuotas = z.id_cuotas AND c.id_credito = z.id_credito AND c.id_sucursal_credito = z.id_sucursal
  ORDER BY c.nro_cuota;

select * from creditos.v_cuotas_x_cobrar   where id_credito::text || id_sucursal_credito::text in('12491')
select id_estado,  *from creditos.tbl_detpagocuota where id_cuotas=5157

CREATE OR REPLACE VIEW CREDITOS.V_CUOTA_CREDITO_CLIENTE
AS
SELECT
false as T,
c.nro_cuota as nro,
c.fec_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
COALESCE(nc.imp_nc,0) as imp_nc,
COALESCE(z.imp_dscto,0) as imp_dscto,
COALESCE(c.imp_cuota,0)-COALESCE(nc.imp_nc,0)-COALESCE(z.imp_dscto,0)-COALESCE(pc.imp_pago_cuota,0) as saldo_cuota_pendiente,
creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) AS mora_pendiente,
COALESCE(pc.imp_mora,0) as imp_mora_amortizada,
COALESCE(pc.imp_pago_cuota,0) as imp_cuota_amortizada,
COALESCE(pc.imp_pago_cuota,0)+COALESCE(pc.imp_mora,0) as imp_pagos,
(c.imp_cuota-COALESCE(nc.imp_nc,0)-COALESCE(z.imp_dscto,0)-COALESCE(pc.imp_pago_cuota,0))+COALESCE(creditos.getfunccalmora(c.id_cuotas)::numeric(20,4),0)  as saldo_total_pendiente,
COALESCE(c.nro_letra, '-'::character varying) AS nro_letra,
c.id_cuotas,
c.id_credito,
c.id_sucursal_credito,
c.id_estado
FROM  creditos.tbl_cuota c
 LEFT JOIN (
	select sum(COALESCE(NC.imp_dscto,0)) as imp_nc,nc.id_credito,nc.id_cuota,nc.id_sucursal_cred as id_sucursal  from creditos.tbl_cuota_notacredito NC
	where nc.id_estado=1
	group by nc.id_credito,nc.id_cuota,nc.id_sucursal_cred
) nc ON nc.id_credito = c.id_credito AND nc.id_sucursal = c.id_sucursal_credito and c.id_cuotas=nc.id_cuota
LEFT JOIN ( SELECT
	    sum(dp.imp_pago_cuota) AS imp_pago_cuota,
	    sum(dp.imp_mora) as imp_mora,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE dp.id_estado = 1
          group by dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito
) pc ON c.id_cuotas = pc.id_cuotas AND c.id_credito = pc.id_credito AND c.id_sucursal_credito = pc.id_sucursal
LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE m.pronto_pago = true AND m.id_estado = 1
) z ON c.id_cuotas = z.id_cuotas AND c.id_credito = z.id_credito AND c.id_sucursal_credito = z.id_sucursal

select  *from common.tbl_formapago

select  *from seguridad.v__documento__usuario where id_proceso=16 and id_usuario='1'

select *from creditos.tbl_detpagocuota where  id_cuotas=31 and id_credito=9 and  id_sucursal_credito=1

create or replace function creditos.fn_corregir_saldos_creditos()
returns text as  $$
declare
	dat record;
	imp_cuota numeric(20,4);
	nro_regs_cuota integer;
	id__cuota integer;

begin
	for dat in select c.*from creditos.tbl_cuota c
		inner join creditos.tbl_ventacredito vc on c.id_credito=vc.id_credito and c.id_sucursal_credito=vc.id_sucursal_credito loop
		select *from creditos.tbl_cuota where id_cuotas=data.id_cuotas;
	end loop;
end;$$
language 'plpgsql';

update creditos.tbl_detpagocuota set imp_pago_cuota=imp_pago-imp_mora

select *from creditos.tbl_cuota c

select  *from creditos.tbl_detpagocuota

select *from    creditos.tbl_cuota_notacredito

---PREDILECTA
CREATE OR REPLACE VIEW creditos.v_cuotas_x_cobrar
 AS
 SELECT c.nro_cuota,
    c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
    c.imp_capital,
    c.imp_interes,
    c.imp_cuota,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS ncr,
    COALESCE(z.imp_dscto, 0::numeric)::numeric(20,4) AS dscto,
    creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) AS mora,
    COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1 AND mov.pronto_pago = false AND cmov.id_estado = 1), 0::numeric) AS monto_cancelado,
    c.imp_cuota + COALESCE(
        CASE
            WHEN creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) = 0::numeric THEN x.mora
            ELSE creditos.getfunccalmora(c.id_cuotas)::numeric(20,4)
        END, 0::numeric) - COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1), 0::numeric) -
          COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS saldo_debito,
    tbl_estado.des_estado AS estado,
    c.fec_vencimiento,
    c.id_cuotas,
    c.id_credito,
    c.id_sucursal_credito,
    c.dias_gracia,
    c.id_credito::text || c.id_sucursal_credito::text AS id_creditocuenta,
    c.imp_cuota - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_cuota_pagar,
    COALESCE(c.nro_letra, '-'::character varying) AS nro_letra,
    c.id_estado,
    COALESCE(c.fecha_protesto, c.fec_vencimiento) AS fecha_protesto,
    COALESCE(c.nro_unico_pago, '-'::character varying) AS nro_unico_pago,
    COALESCE(c.dias_protesto, 0) AS dias_protesto,
    COALESCE(creditos.getfunccalmora(c.id_cuotas)::numeric, 0::numeric)::numeric(14,6) AS imp_mora,
    COALESCE(x.mora, 0::numeric) AS mov_mora
   FROM creditos.tbl_cuota c
     JOIN common.tbl_estado ON tbl_estado.id_estado = c.id_estado
     LEFT JOIN ( SELECT dpg.id_cuotas,
            dpg.id_credito,
            dpg.id_sucursal_credito,
            sum(dpg.imp_mora) AS mora
           FROM creditos.tbl_detpagocuota dpg
          WHERE dpg.id_estado = 1
          GROUP BY dpg.id_cuotas, dpg.id_credito, dpg.id_sucursal_credito) x ON x.id_cuotas = c.id_cuotas AND x.id_credito = c.id_credito AND x.id_sucursal_credito = c.id_sucursal_credito
     LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE m.pronto_pago = true AND m.id_estado = 1 AND dp.id_estado = 1) z ON c.id_cuotas = z.id_cuotas AND c.id_credito = z.id_credito AND c.id_sucursal_credito = z.id_sucursal
  ORDER BY c.nro_cuota;

--modificada 7.03.21

CREATE OR REPLACE VIEW creditos.v_cuotas_x_cobrar
 AS
 SELECT c.nro_cuota,
    c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
    c.imp_capital,
    c.imp_interes,
    c.imp_cuota,
    COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS ncr,
    COALESCE(z.imp_dscto, 0::numeric)::numeric(20,4) AS dscto,
    creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) AS mora,
    COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1 AND mov.pronto_pago = false AND cmov.id_estado = 1), 0::numeric) AS monto_cancelado,
    c.imp_cuota + COALESCE(
        CASE
            WHEN creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) = 0::numeric THEN 0 --x.mora
            ELSE creditos.getfunccalmora(c.id_cuotas)::numeric(20,4)
        END, 0::numeric) - COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
          WHERE c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito AND cmov.id_estado = 1), 0::numeric) -
          COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS saldo_debito,
    tbl_estado.des_estado AS estado,
    c.fec_vencimiento,
    c.id_cuotas,
    c.id_credito,
    c.id_sucursal_credito,
    c.dias_gracia,
    c.id_credito::text || c.id_sucursal_credito::text AS id_creditocuenta,
    c.imp_cuota - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred), 0::numeric) AS imp_cuota_pagar,
    COALESCE(c.nro_letra, '-'::character varying) AS nro_letra,
    c.id_estado,
    COALESCE(c.fecha_protesto, c.fec_vencimiento) AS fecha_protesto,
    COALESCE(c.nro_unico_pago, '-'::character varying) AS nro_unico_pago,
    COALESCE(c.dias_protesto, 0) AS dias_protesto,
    COALESCE(creditos.getfunccalmora(c.id_cuotas)::numeric, 0::numeric)::numeric(14,6) AS imp_mora,
    COALESCE(x.mora, 0::numeric) AS mov_mora
   FROM creditos.tbl_cuota c
     JOIN common.tbl_estado ON tbl_estado.id_estado = c.id_estado
     LEFT JOIN ( SELECT dpg.id_cuotas,
            dpg.id_credito,
            dpg.id_sucursal_credito,
            sum(dpg.imp_mora) AS mora
           FROM creditos.tbl_detpagocuota dpg
          WHERE dpg.id_estado = 1
          GROUP BY dpg.id_cuotas, dpg.id_credito, dpg.id_sucursal_credito) x ON x.id_cuotas = c.id_cuotas AND x.id_credito = c.id_credito AND x.id_sucursal_credito = c.id_sucursal_credito
     LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE m.pronto_pago = true AND m.id_estado = 1 AND dp.id_estado = 1) z ON c.id_cuotas = z.id_cuotas AND c.id_credito = z.id_credito AND c.id_sucursal_credito = z.id_sucursal
  ORDER BY c.nro_cuota;

select  *from creditos.v_cuotas_x_cobrar
select * from creditos.v_cuotas_x_cobrar   where id_credito::text || id_sucursal_credito::text in('12491')

select *from creditos.tbl_detpagocuota where id_cuotas=5157 and id_estado=1

select  *from creditos.tbl_ventacredito where id_credito=1249
select  *from ventas.tbl_facturacion where id_facturacion=2209

select
nro_cuota,
c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
 COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM creditos.tbl_cuota_notacredito nc
          WHERE c.id_cuotas = nc.id_cuota AND c.id_credito = nc.id_credito AND c.id_sucursal_credito = nc.id_sucursal_cred AND nc.id_estado = 1), 0::numeric) AS ncr,
    COALESCE(z.imp_dscto, 0::numeric)::numeric(20,4) AS dscto,
    creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) AS mora,
 COALESCE(( SELECT sum(cmov.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE c.id_cuotas = cmov.id_cuotas
		AND c.id_credito = cmov.id_credito
		AND c.id_sucursal_credito = cmov.id_sucursal_credito
		AND cmov.id_estado = 1 AND mov.pronto_pago = false
		AND cmov.id_estado = 1), 0::numeric) AS monto_cancelado,
from creditos.tbl_cuota c
  JOIN common.tbl_estado ON tbl_estado.id_estado = c.id_estado
     LEFT JOIN ( SELECT dpg.id_cuotas,
            dpg.id_credito,
            dpg.id_sucursal_credito,
            sum(dpg.imp_mora) AS mora
           FROM creditos.tbl_detpagocuota dpg
          WHERE dpg.id_estado = 1
          GROUP BY dpg.id_cuotas, dpg.id_credito, dpg.id_sucursal_credito) x ON x.id_cuotas = c.id_cuotas AND x.id_credito = c.id_credito AND x.id_sucursal_credito = c.id_sucursal_credito
     LEFT JOIN ( SELECT dp.imp_pago AS imp_dscto,
            dp.id_cuotas,
            dp.id_credito,
            dp.id_sucursal_credito AS id_sucursal
           FROM caja.tbl_movcaja m
             JOIN creditos.tbl_detpagocuota dp ON m.id_movimcaja = dp.id_movimcaja AND m.id_sucursal = dp.id_sucursal
          WHERE m.pronto_pago = true AND m.id_estado = 1 AND dp.id_estado = 1) z ON c.id_cuotas = z.id_cuotas AND c.id_credito = z.id_credito AND c.id_sucursal_credito = z.id_sucursal
  ORDER BY c.nro_cuota;

select *from creditos.tbl_detpagocuota where id_cuotas in(4566,4567,4568) and id_estado=1 order by id_cuotas

select *from creditos.tbl_cuota_notacredito

CREATE OR REPLACE view CREDITOS.v_cuotas_x_pagar
as
select
c.nro_cuota,
c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
COALESCE((select sum(COALESCE(NC.imp_dscto,0))  from creditos.tbl_cuota_notacredito NC
where (C.ID_CUOTAS=NC.ID_CUOTA AND C.ID_CREDITO=NC.ID_CREDITO AND C.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred and nc.id_estado=1)),0)
as ncr,
COALESCE(z.imp_dscto,0)::numeric(20,4) as dscto,
creditos.getfunccalmora(c.id_cuotas)::numeric(20,4) as mora,
COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito and cmov.id_estado=1 and mov.pronto_pago=false)),0) as monto_cancelado,

	 (c.imp_cuota+COALESCE(c.imp_mora,0)) + creditos.getfunccalmora(c.id_cuotas)::numeric(20,4)  - COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito and cmov.id_estado=1)),0)-
	COALESCE((select sum(COALESCE(NC.imp_dscto,0))  from creditos.tbl_cuota_notacredito NC
where (C.ID_CUOTAS=NC.ID_CUOTA AND C.ID_CREDITO=NC.ID_CREDITO AND C.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)),0)
 AS saldo_debito,
tbl_estado.des_estado as estado,
c.fec_vencimiento,
c.id_cuotas,
c.id_credito,
c.id_sucursal_credito ,
c.dias_gracia	,
(c.id_credito::text || c.id_sucursal_credito::text) as id_creditocuenta,
c.imp_cuota-
COALESCE((select sum(COALESCE(NC.imp_dscto,0))  from creditos.tbl_cuota_notacredito NC
where (C.ID_CUOTAS=NC.ID_CUOTA AND C.ID_CREDITO=NC.ID_CREDITO AND C.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)),0) as imp_cuota_pagar,
COALESCE(C.NRO_LETRA,'-') AS NRO_LETRA,
c.id_estado,
COALESCE(C.FECHA_PROTESTO,fec_vencimiento ) AS FECHA_PROTESTO,
COALESCE(c.NRO_UNICO_PAGO,'-') AS NRO_UNICO_PAGO,
COALESCE(C.dias_protesto,0) AS dias_protesto,
COALESCE(c.imp_mora,0)::numeric(14,6) as imp_mora
from creditos.tbl_cuota c
inner join common.tbl_estado on (tbl_estado.id_estado=c.id_estado)
left join (
	select dp.imp_pago as imp_dscto,dp.id_cuotas, dp.id_credito, dp.id_sucursal_credito as id_sucursal from caja.tbl_movcaja m
	inner join creditos.tbl_detpagocuota dp on m.id_movimcaja=dp.id_movimcaja and m.id_sucursal=dp.id_sucursal
	where m.pronto_pago=true and m.id_estado=1
) z on c.id_cuotas=z.id_cuotas and c.id_credito=z.id_credito and c.id_sucursal_credito=z.id_sucursal
--LEFT JOIN  creditos.tbl_cuota_notacredito NC ON (C.ID_CUOTAS=NC.ID_CUOTA AND C.ID_CREDITO=NC.ID_CREDITO AND C.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
order by c.nro_cuota

SELECT *FROM    creditos.tbl_cuota_notacredito

select * from compras.v__nota__credito__proveedores   where id_empresa=1 and fec_documento::date between '25/09/2017' and '25/09/2019' and DOC_COMPRA || nom_proveedor || doc_proveedor ilike '%%' order by fec_ingsistema,anio, id_mes, id_compra

select * from creditos.v_cuotas_x_pagar   where id_credito=3972 and  id_sucursal_credito=1

select * from creditos.v_cuotas_x_cobrar   where id_credito=181 and  id_sucursal_credito=1

SELECT *FROM CAJA.TBL_MOVCAJA WHERE FECHA_MOV::DATE='09/01/2019'

SELECT * FROM caja.tbl_detmovpago where id_movimcaja =867;
select * FROM creditos.tbl_detpagocuota  WHERE id_movimcaja in(868)

select dp.imp_pago as imp_dscto,dp.id_cuotas, dp.id_credito, dp.id_sucursal_credito as id_sucursal from caja.tbl_movcaja m
	inner join creditos.tbl_detpagocuota dp on m.id_movimcaja=dp.id_movimcaja and m.id_sucursal=dp.id_sucursal

select * FROM creditos.tbl_detpagocuota  WHERE id_cuotas in(663,664,665)
	delete FROM creditos.tbl_detpagocuota  WHERE id_cuotas in(663,664,665)

delete FROM creditos.tbl_detpagocuota  WHERE id_cuotas in(663,664,665);
delete from  caja.tbl_detmovpago where id_movimcaja =863;
	delete from  caja.tbl_movcaja where id_movimcaja =863;
select * from creditos.v_cuotas_x_cobrar   where id_credito=8 and  id_sucursal_credito=1

SELECT *FROM CREDITOS.TBL_CUOTA
select *from creditos.tbl_cuota_notacredito where  id_credito=103 and  id_sucursal_credito=1

CREATE OR REPLACE VIEW PLANILLAS.V_NROCUENTA
AS
SELECT
	ban.descripcion as banco,
	nc.nro_cuenta,
	m.simbolo as moneda,
	nc.id_banco,
	m.id_moneda,
	nc.id_nrocuenta,
	2::integer op,
	nc.id_estado,
	nc.id_persona
FROM planillas.tbl_nrocuenta nc
inner join caja.tbl_cajabanco ban on ban.id_cajabanco=nc.id_banco
inner join common.tbl_moneda m on m.id_moneda=nc.id_moneda

CREATE OR REPLACE view CREDITOS.v__cuotas__x__cobrar__nc
as
select
c.nro_cuota,
c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
COALESCE(NC.imp_dscto,0) as ncr,
0 as dscto,
0 as mora,
COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	--inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito and cmov.id_estado=1)),0) as monto_cancelado,

	 c.imp_cuota + c.imp_mora  - COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito and cmov.id_estado=1)),0) AS saldo_debito,
tbl_estado.des_estado as estado,
c.fec_vencimiento,
c.id_cuotas,
c.id_credito,
c.id_sucursal_credito ,
c.dias_gracia	,
(c.id_credito::text || c.id_sucursal_credito::text) as id_creditocuenta,
(vc.id_facturacion::text || vc.id_sucursal::text) as id_facturacion

from  creditos.tbl_ventacredito vc
inner join creditos.tbl_credito cr on (cr.id_credito=vc.id_credito and cr.id_sucursal_credito=vc.id_sucursal_credito)
inner join creditos.tbl_cuota c on (cr.id_credito=c.id_credito and cr.id_sucursal_credito=c.id_sucursal_credito)
inner join common.tbl_estado on (tbl_estado.id_estado=c.id_estado)
LEFT JOIN  creditos.tbl_cuota_notacredito NC ON (C.ID_CUOTAS=NC.ID_CUOTA AND C.ID_CREDITO=NC.ID_CREDITO AND C.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
where vc.id_Estado=1 and nc.id_estado=1
order by c.nro_cuota

select * from CREDITOS.v__cuotas__x__cobrar__nc__compras   where id_facturacion='971'

CREATE OR REPLACE view CREDITOS.v__cuotas__x__cobrar__nc__compras
as
select
c.nro_cuota,
c.fec_vencimiento + ((COALESCE(c.dias_gracia, 0) || ' days'::text)::interval) AS fecha_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
COALESCE(NC.imp_dscto,0) as ncr,
0 as dscto,
0 as mora,
COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	--inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito and cmov.id_estado=1)),0) as monto_cancelado,

	 c.imp_cuota + c.imp_mora  - COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito and cmov.id_estado=1)),0) AS saldo_debito,
tbl_estado.des_estado as estado,
c.fec_vencimiento,
c.id_cuotas,
c.id_credito,
c.id_sucursal_credito ,
c.dias_gracia	,
(c.id_credito::text || c.id_sucursal_credito::text) as id_creditocuenta,
(vc.id__compra::text || vc.id_sucursalcompra::text) as id_facturacion,
c.id_Estado

from  creditos.tbl_creditoscompra vc
inner join creditos.tbl_credito cr on (cr.id_credito=vc.id_credito and cr.id_sucursal_credito=vc.id_sucursal_credito)
inner join creditos.tbl_cuota c on (cr.id_credito=c.id_credito and cr.id_sucursal_credito=c.id_sucursal_credito)
inner join common.tbl_estado on (tbl_estado.id_estado=c.id_estado)
LEFT JOIN  creditos.tbl_cuota_notacredito NC ON (C.ID_CUOTAS=NC.ID_CUOTA AND C.ID_CREDITO=NC.ID_CREDITO AND C.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
where vc.id_Estado=1  and c.id_Estado=1 and cr.id_estado=1 and nc.id_estado=1
order by c.nro_cuota

select *from almacen.v_

select *from creditos.tbl_cuota_notacredito

select * from CREDITOS.v__cuotas__x__cobrar__nc__compras   where id_facturacion='321'

select *from creditos.tbl_cuota_notacredito

select * from caja.v_deppagoscuotas

select *from CREDITOS.V_CUENTACORRIENTECLIENTE

create or replace view caja.v_deppagoscuotas
as
select (c.descripcion_corta || '/' ||m.serie || '-'|| m.numero)  as documento,
m.fecha_mov,
dmov.imp_pago,
tbl_moneda.simbolo as moneda,
cb.descripcion as caja,
m.doc_referencia,
m.imp_movimiento,
dmov.id_movimcaja,
dmov.id_cuotas,
dmov.id_credito,
dmov.id_sucursal_credito,
dmov.id_sucursal,
m.serie,
m.numero,
m.id_comprobante,
m.id_tranzaccion,
E.DES_ESTADO,
E.ID_ESTADO,
m.importe_mn,
m.importe_tc,
m.imp_mora,
uss.camp2 as usuario,
COALESCE(usa.camp2,'-') as usuario_anula,
COALESCE(usauto.camp2,'-') as usuario_autoriza

from creditos.tbl_detpagocuota dmov
inner join caja.tbl_movcaja m on (m.id_movimcaja=dmov.id_movimcaja and  m.id_sucursal=dmov.id_sucursal)
inner join common.tbl_comprobante c on (c.id_comprobante=m.id_comprobante)
inner join common.tbl_moneda on (tbl_moneda.id_moneda=m.id_moneda)
inner join caja.tbl_cajabanco cb  on(cb.id_cajabanco=m.id_caja_destino)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=M.ID_ESTADO)
INNER JOIN seguridad.tbl_usuario uss on uss.id_usuario=m.id_usuario
LEFT JOIN seguridad.tbl_usuario usa on usa.id_usuario=m.id_usuarioa
LEFT JOIN seguridad.tbl_usuario usauto on usauto.id_usuario=m.id_usuario_autoriza

select *from caja.v_deppagoscuotas limit 10

select distinct id_usuario_autoriza from caja.tbl_movcaja  where dmov.id_credito=1

select to_char(fac.fecha_venta,'dd/mm/yyyy') as fecha_venta, cli.doc_persona, cli.nombre_razon ,
(cp.descripcion_corta || '/' ||fac.serie_facturacion || '-'||numdoc_facturacion) as documento,
imp_neto,to_char(vc.fec_registro::date,'dd//mm/yyyy') fec_registro
from ventas.tbl_facturacion fac
inner join  creditos.tbl_ventacredito vc on (fac.id_facturacion=vc.id_facturacion and fac.id_tipoventa=2)
inner join common.tbl_comprobante  cp on (cp.id_comprobante=fac.id_comprobante)
--inner join ventas.tbl_detfacturacion dfac on (fac.id_facturacion=dfac.id_facturacion and id_producto='6')
inner join  planillas.tbl_persona cli  on(cli.id_persona=fac.id_cliente)
where exists(select *from ventas.tbl_detfacturacion df where df.id_facturacion=fac.id_facturacion and df.id_producto='6') and fac.id_estado=1

select *from common.tbl_comprobante

select *from planillas.tbl_persona

select *from ventas.tbl_facturacion where numdoc_facturacion ilike '%1434%'

select *from caja.tbl_movcaja where fecha_mov::date='14/01/2015'

select *from caja.tbl_movcaja

SELECT *FROM COMMON.TBL_ESTADO

select *from  caja.v_liquidacion_ventas_contado

1202.4700

select *from common.tbl_comprobante
 case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
    edua

select *from almacen.tbl_existencia where id_producto='760'

update almacen.tbl_existencia set id_unidadventa='2' where id_producto='760'

select *from common.tbl_comprobante
select *from common.tbl_concepto
select *from common.tbl_formapago

select *from common.tbl_concepto

select * from caja.v_liquidacion_ventas_contado   where fecha_mov::date='19/01/2014'

select *from caja.tbl_movcaja  where

CREATE OR REPLACE VIEW ventas.v_detvalesconsumo
AS
 SELECT
    d.item,
    p.id_producto,
    p.descripcion_larga AS producto,
    u.desc_corta as unidad,
    d.cantidad,
    d.lista,
    d.precio,
    d.imp_dsct,
    d.total,
    dp.id_unidadventa,
    d.id_listaprecio,
    e.id_estado,
    d.id_sucrusal_vale,
    e.des_estado AS estado,
    d.id_vale
   FROM ventas.tbl_detvale d
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad  U ON (U.id_unidadventa=D.id_unidadventa)
   JOIN common.tbl_estado e ON d.id_estado = e.id_estado;

SELECT *FROM  almacen.tbl_unidad
select * from caja.v_liquidacion_ventas_contado

select *from caja.tbl_detmovpago where id_moneda=2
select *from common.tbl_moneda
select *from common.tbl_tipocambio
select *from common.tbl_moneda

create or replace view grifo.v_isla
as
select id_isla,nom_isla ,num_mangueras,estado from tbl_isla

CREATE OR REPLACE VIEW GRIFO.V_ISLA_USUARIO
AS
SELECT DISTINCT IL.ID_ISLA,IL.NOM_ISLA,USC.ID_USUARIO,S.ID_SUCURSAL,cj.id_cajabanco,CJ.descripcion FROM caja.tbl_cajabanco CJ
INNER JOIN seguridad.tbl_usuariocaja USC ON USC.id_cajabanco=CJ.id_cajabanco
INNER JOIN COMMON.TBL_SUCURSAL S ON S.ID_SUCURSAL=CJ.ID_SUCURSAL
INNER JOIN tbl_manguera M ON M.id_cajabanco=CJ.id_cajabanco
INNER JOIN TBL_ISLA IL ON IL.ID_ISLA=M.ID_ISLA

CREATE OR REPLACE VIEW GRIFO.v_lado_isla
as
SELECT DISTINCT L.ID_LADO,descripcion_lado, M.ID_ISLA,USC.ID_USUARIO,S.ID_SUCURSAL FROM caja.tbl_cajabanco CJ
INNER JOIN seguridad.tbl_usuariocaja USC ON USC.id_cajabanco=CJ.id_cajabanco
INNER JOIN COMMON.TBL_SUCURSAL S ON S.ID_SUCURSAL=CJ.ID_SUCURSAL
INNER JOIN tbl_manguera M ON M.id_cajabanco=CJ.id_cajabanco
INNER JOIN tbl_lado L ON L.ID_LADO=M.ID_LADO

WHERE S.ID_EMPRESA=1 AND USC.ID_USUARIO='1'

CREATE OR REPLACE VIEW GRIFO.V_LADO_USUARIO
AS
SELECT DISTINCT IL.ID_ISLA,IL.NOM_ISLA,USC.ID_USUARIO,S.ID_SUCURSAL FROM caja.tbl_cajabanco CJ
INNER JOIN seguridad.tbl_usuariocaja USC ON USC.id_cajabanco=CJ.id_cajabanco
INNER JOIN COMMON.TBL_SUCURSAL S ON S.ID_SUCURSAL=CJ.ID_SUCURSAL
INNER JOIN tbl_manguera M ON M.id_cajabanco=CJ.id_cajabanco
INNER JOIN TBL_ISLA IL ON IL.ID_ISLA=M.ID_ISLA
--WHERE S.ID_EMPRESA=1 AND USC.ID_USUARIO='1'

create or replace view common.v_turno
as
SELECT
id_turno,
descripcion,
horainicio,
horatermino,
estado
  FROM common.tbl_turno;

CREATE OR REPLACE VIEW planillas.v_turnocolaborador
as
SELECT id_turno,
	tc.item,
	tc.fecha,
	tc.fecha_registro,
	tc.id_usuarior,
	tc.id_estado,
        tc.id_colaborador,
        tc.observacion,
        tc.asistio,
        tc.turno_cerrado,
        p.nombre_razon as colaborador,
        tc.liquidacion_id
  FROM planillas.tbl_turnocolaborador  tc
  inner join planillas.tbl_persona p on(p.id_persona=tc.id_colaborador)
 where tc.id_estado=1

select * from planillas.v_turnocolaborador  where id_colaborador='00016'

 select *from planillas.tbl_persona
select * from planillas.v_turnocolaborador  where id_colaborador='4381'

select *from planillas.tbl_turnocolaborador where id_colaborador= '4381'
update planillas.tbl_turnocolaborador set id_estado=1 where id_colaborador= '4381' and fecha::date='14/02/2014'
select * from planillas.v_gestionturnos  where id_colaborador= '4381'

create or replace view planillas.v_gestionturnos
as
select
tc.fecha,
t.descripcion as turno,
per.nombre_razon as colaborador,
s.nombre as sucursal,
i.nom_isla,
t.horainicio ,
t.horatermino,
tbl_estado.des_estado as estado,
tc.observacion,
tc.turno_cerrado,
tc.asistio,
tc.id_turno,
tc.item,
tc.id_colaborador,
tc.id_estado
from
PLANILLAS.TBL_TURNOCOLABORADOR  tc
inner join common.tbl_turno t on (t.id_turno=tc.id_turno)
inner join planillas.tbl_persona  per on (per.id_persona=tc.id_colaborador)
inner join common.tbl_sucursal s  on (s.id_sucursal=tc.id_sucursal)
left join tbl_isla i on (i.id_isla=tc.id_isla)
inner join common.tbl_estado on (tbl_estado.id_estado=tc.id_estado)
where tc.id_Estado=1

create or replace view planillas.v_progrmacioturnos
as
select
tc.fecha,
t.descripcion as turno,
per.nombre_razon as colaborador,
s.nombre as sucursal,
t.horainicio ,
t.horatermino,
tbl_estado.des_estado as estado,
tc.observacion,
tc.turno_cerrado,
tc.asistio,
tc.id_turno,
tc.item,
tc.id_colaborador,
tc.id_estado
from
PLANILLAS.TBL_TURNOCOLABORADOR  tc
inner join common.tbl_turno t on (t.id_turno=tc.id_turno)
inner join planillas.tbl_persona  per on (per.id_persona=tc.id_colaborador)
inner join common.tbl_sucursal s  on (s.id_sucursal=tc.id_sucursal)
inner join common.tbl_estado on (tbl_estado.id_estado=tc.id_estado)

select * from planillas.v_turnocolaborador  where id_colaborador='4381' and fecha=cast(now() as Date)

select * from seguridad.v_listar_roles   where id_usuario='5    ' and  menu_item is true   and fk_codmenu is Null order by item asc

select *from seguridad.v_listar_roles

CREATE OR REPLACE VIEW seguridad.v_listar_roles
AS
 SELECT item.item,
    item.fk_codmenu,
    item.descripcion,
    item.item_orden,
    item.evento,
    item.estado,
    item.menu_item,
    item.orden,
    item.menu,
    item.maximised,
    item.icono,
    tbl_permiso.estado AS rol,
    tbl_permiso.id_usuario,
    tbl_permiso.toolbar,
    ICO_FAVORITO
   FROM seguridad.item
   JOIN seguridad.tbl_permiso ON item.item = tbl_permiso.item;

CREATE OR REPLACE VIEW seguridad.v_usuario_colaborador
as
select u.id_usuario,u.camp2 as usuario,u.camp1 as clave,p.nombre_razon as colaborador,p.doc_persona as documento,p.id_persona from seguridad.tbl_usuario u
inner join planillas.tbl_persona p on (p.id_persona=u.id_persona)

CREATE OR REPLACE VIEW SEGURIDAD.V_PERFILUSER
AS
SELECT id_perfil,nombre,estado FROM SEGURIDAD.TBL_PERFILUSUARIO

select *from seguridad.lista_menus

CREATE OR REPLACE VIEW seguridad.lista_menus
AS
 SELECT item.item,
    item.menu,
    item.descripcion,
    item.menu_item,
    item.item_orden,
    item.fk_codmenu,
    item.evento,
    item.maximised,
    item.icono,
    tbl_permiso.estado AS rol,
    tbl_permiso.id_usuario,
    item.id_modulo
   FROM seguridad.item
   JOIN seguridad.tbl_permiso ON item.item = tbl_permiso.item;

   SELECT *FROM ALMACEN.v_producto_stock_detallado

   select *from ALMACEN.V_ALMACEN
select * from almacen.v_producto_stock_detallado   WHERE id_producto = '6'
select * from almacen.v_producto_stock_detallado   WHERE id_producto = '6' and id_almacen = 6 and id_estado = 1

 SELECT *FROM seguridad.v_usuariocaja

CREATE OR REPLACE VIEW seguridad.v_usuariocaja
as
SELECT
uc.id_cajabanco,
cb.descripcion as caja,
predeterminado,
uc.id_usscaja,
uc.id_usuario,
uc.fecha,
uc.id_estado,
uc.observaciones,
SUC.ID_EMPRESA,
SUC.id_sucursal
  FROM seguridad.tbl_usuariocaja uc
inner join caja.tbl_cajabanco cb on (cb.id_cajabanco=uc.id_cajabanco)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CB.ID_SUCURSAL)
where uc.id_estado=1

select * from ventas.V_CABPREVENTA   where documento ||doc_persona || cliente ilike '%jhony%' and cantidad_pendiente>0

select * from ventas.V_CABPREVENTA   where id_empresa=1 and  documento || doc_persona || cliente ilike '%jhony%'

select *from caja.tbl_cajabanco

CREATE OR REPLACE VIEW almacen.v_unidadproducto AS
 SELECT u.id_unidadventa,
    u.desc_corta,
    dp.id_producto
   FROM almacen.tbl_unidad u
   JOIN almacen.tbl_detproducto dp ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_existencia e ON dp.id_producto::text = e.id_producto::text AND dp.id_unidadventa = e.id_unidadventa;

SELECT *FROM almacen.v_unidaddetproducto

CREATE OR REPLACE VIEW almacen.v_unidaddetproducto
AS
 SELECT
    u.id_unidadventa,
    u.desc_corta,
    dp.id_producto,
    dp.unidad_inventario  ,
    P.DESCRIPCION_LARGA AS producto,
    F.DESCRIPCION_LARGA AS familia
   FROM almacen.tbl_unidad u
   JOIN almacen.tbl_detproducto dp ON u.id_unidadventa = dp.id_unidadventa
   JOIN ALMACEN.TBL_PRODUCTO P ON P.ID_PRODUCTO=DP.ID_PRODUCTO
   JOIN ALMACEN.TBL_FAMILIA F ON F.ID_FAMILIA=P.ID_FAMILIA

CREATE OR REPLACE VIEW v_estacion
AS
 SELECT i.id_isla,
    i.nom_isla,
    i.num_mangueras,
    i.num_lados,
    l.id_lado,
    l.descripcion_lado,
    m.id_manguera,
    m.id_orden,
    m.id_producto,
    p.descripcion_corta,
    p.descripcion_larga,
    p.imagen,
    m.id_almacen,
    p.servicio,
    p.impuesto,
    dp.id_unidadventa
   FROM tbl_isla i
   JOIN tbl_manguera m ON i.id_isla = m.id_isla
   JOIN tbl_lado l ON m.id_lado = l.id_lado
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::bpchar = m.id_producto::bpchar AND dp.id_unidadventa = m.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
  ORDER BY i.id_isla, l.id_lado, m.id_orden;

  case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,

SELECT * FROM CAJA.TBL_MOVCAJA MC where mc.id_estado=1

SELECT * FROM caja.v_movdiversos

CREATE OR REPLACE VIEW caja.v_movdiversos
 AS
 SELECT mc.fecha_mov,
    (((comp.descripcion_corta::text || '/'::text) || mc.serie::text) || '-'::text) || mc.numero::text AS documento,
        CASE
            WHEN btrim(mc.id_personaingdiv::text) = '000'::text THEN btrim(mc.nomape_cliente)
            ELSE btrim(p.nombre_razon::text)
        END || '
 ('||COALESCE(mc.glosa,'')||')' AS responsable,
    c.descripcion_larga AS motivo,
    fp.descripcion AS formapago,
    m.simbolo AS moneda,
    dmv.imp_pago,
    COALESCE(mc.signo, 0) AS signo,
    mc.id_movimcaja,
    mc.id_sucursal,
    mc.id_personaingdiv,
    s.id_empresa,
    mc.id_concepto,
        CASE
            WHEN mc.signo = '-1'::integer THEN 'EGRESO'::text
            ELSE 'INGRESO'::text
        END AS tipo_mov,
    date_part('month'::text, mc.fecha_mov::date) AS mes,
    date_part('day'::text, mc.fecha_mov::date) AS dia,
    to_char(mc.fecha_mov::date::timestamp with time zone, 'DD "de" TMMonth "del" YYYY'::text) AS fecha,
    mc.id_caja_destino AS id_caja,
    mc.id_facturacion
   FROM caja.tbl_movcaja mc
     JOIN planillas.tbl_persona p ON p.id_persona::text = mc.id_personaingdiv::text
     JOIN common.tbl_concepto c ON c.id::text = mc.id_concepto::text
     JOIN common.tbl_comprobante comp ON comp.id_comprobante = mc.id_comprobante
     JOIN caja.tbl_detmovpago dmv ON dmv.id_movimcaja = mc.id_movimcaja AND dmv.id_sucursal = mc.id_sucursal
     JOIN common.tbl_moneda m ON m.id_moneda = dmv.id_moneda
     JOIN common.tbl_formapago fp ON fp.id_formapago = dmv.id_formapago
     JOIN common.tbl_sucursal s ON s.id_sucursal = mc.id_sucursal
  WHERE (mc.id_estado = ANY (ARRAY[1, 0])) AND mc.id_facturacion IS NULL
  ORDER BY mc.signo, mc.id_concepto, (mc.fecha_mov::date), p.nombre_razon;

select *from CAJA.TBL_MOVCAJA MC

select *from caja.v_reciboegresos_caja

create or replace view caja.v_reciboegresos_caja
as
SELECT
MC.FECHA_MOV,
(COMP.DESCRIPCION_CORTA || '/'|| MC.SERIE || '-' || MC.NUMERO) AS DOCUMENTO,
 CASE WHEN trim(mc.id_personaingdiv)='000' then trim(mc.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS RESPONSABLE,
--P.NOMBRE_RAZON AS RESPONSABLE,
C.DESCRIPCION_LARGA AS MOTIVO,
FP.descripcion AS FORMAPAGO,
M.SIMBOLO AS MONEDA,
DMV.imp_pago,
MC.SIGNO,
mc.id_movimcaja,
mc.id_sucursal,
mc.id_personaingdiv,
S.ID_EMPRESA,
MC.ID_CONCEPTO,
CASE WHEN MC.SIGNO=-1 THEN 'EGRESO' ELSE 'INGRESO' END TIPO_MOV,
date_part('month',mc.fecha_mov::date) as mes,
date_part('day',mc.fecha_mov::date) as dia,
to_char(mc.fecha_mov::date,'DD "de" TMMonth "del" YYYY'::text) as fecha,
mc.id_caja_destino as id_caja,
mc.doc_referencia,
mc.id_Estado,
e.des_estado as estado
 FROM
CAJA.TBL_MOVCAJA MC
INNER JOIN PLANILLAS.TBL_PERSONA P  ON (P.ID_PERSONA=MC.id_personaingdiv)
INNER JOIN COMMON.TBL_CONCEPTO C ON (C.id=MC.ID_CONCEPTO::integer)
INNER JOIN COMMON.TBL_COMPROBANTE COMP ON (COMP.ID_COMPROBANTE=MC.ID_COMPROBANTE)
INNER JOIN caja.tbl_detmovpago DMV ON (DMV.id_movimcaja=MC.id_movimcaja AND  DMV.id_sucursal=MC.id_sucursal)
INNER JOIN common.tbl_moneda M ON (M.ID_MONEDA=DMV.ID_MONEDA)
INNER JOIN common.tbl_formapago FP ON  (FP.id_formapago=DMV.id_formapago)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=MC.ID_SUCURSAL)
inner join common.tbl_estado e on (e.id_estado=mc.id_Estado)
where --mc.id_estado in(1,0) and
mc.signo=-1
ORDER BY MC.SIGNO,MC.ID_CONCEPTO,mc.fecha_mov::date,p.NOMBRE_RAZON

SELECT * FROM
CAJA.TBL_MOVCAJA MC WHERE SIGNO=-1

select * from caja.v_editamovdiversos   where id_movimcaja::text || id_sucursal::text='63171'

create or replace view caja.v_editamovdiversos
as
SELECT
mc.id_movimcaja,
mc.id_caja_destino,
mc.id_persona,
mc.id_sucursal_fac,
mc.serie,
mc.numero,
mc.fecha_mov,
mc.imp_mora,
mc.imp_movimiento,
mc.imp_recibido,
mc.imp_vuelto,
mc.glosa,
mc.id_comprobante,
mc.id_moneda,
mc.id_tipocambio,
mc.id_sucursal,
mc.id_usuario,
mc.doc_referencia,
mc.id_estado,
mc.id_tranzaccion,
mc.id_turno,
mc.apertura,
mc.fec_liquidacion,
mc.id_liquidacion,
mc.id_concepto,
mc.signo,
mc.id_personaingdiv,
 CASE WHEN trim(mc.id_personaingdiv)='000' then trim(mc.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS RESPONSABLE,--P.NOMBRE_RAZON AS RESPONSABLE,
C.DESCRIPCION_LARGA AS MOTIVO
  FROM caja.tbl_movcaja mc
INNER JOIN PLANILLAS.TBL_PERSONA P  ON (P.ID_PERSONA=MC.id_personaingdiv)
INNER JOIN COMMON.TBL_CONCEPTO C ON (C.ID_CONCEPTO=MC.ID_CONCEPTO)
INNER JOIN COMMON.TBL_COMPROBANTE COMP ON (COMP.ID_COMPROBANTE=MC.ID_COMPROBANTE)

select *from caja.v_reciboegresoscaja

create or replace view caja.v_reciboegresoscaja
as
SELECT
mc.id_movimcaja,
mc.id_caja_destino,
mc.id_persona,
mc.id_sucursal_fac,
mc.serie,
mc.numero,
mc.fecha_mov,
mc.imp_mora,
mc.imp_movimiento,
mc.imp_recibido,
mc.imp_vuelto,
mc.glosa,
mc.id_comprobante,
mc.id_moneda,
mc.id_tipocambio,
mc.id_sucursal,
mc.id_usuario,
case when mc.id__compra is not null then mc.doc_referencia else '' end as doc_referencia,
mc.id_estado,
mc.id_tranzaccion,
mc.id_turno,
mc.apertura,
mc.fec_liquidacion,
mc.id_liquidacion,
mc.id_concepto,
mc.signo,
mc.id_personaingdiv,
 CASE WHEN trim(mc.id_personaingdiv)='000' then trim(mc.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS RESPONSABLE,--P.NOMBRE_RAZON AS RESPONSABLE,
C.DESCRIPCION_LARGA AS MOTIVO,
COALESCE(p.doc_persona,p.dni) as doc_persona,
case when mc.id__compra is not null then true else false end as provicion  ,
DMV.id_formapago,
DMV.id_banco,
DMV.id_tarjeta,
DMV.id_detmovpago,
tc.venta as imp_tipocambio,
mc.egreso_tarjeta
  FROM caja.tbl_movcaja mc
INNER JOIN PLANILLAS.TBL_PERSONA P  ON (P.ID_PERSONA=MC.id_personaingdiv)
INNER JOIN COMMON.TBL_CONCEPTO C ON (C.id=MC.ID_CONCEPTO::integer)
INNER JOIN COMMON.TBL_COMPROBANTE COMP ON (COMP.ID_COMPROBANTE=MC.ID_COMPROBANTE)
INNER JOIN caja.tbl_detmovpago DMV ON (MC.id_movimcaja=DMV.id_movimcaja AND MC.id_sucursal=DMV.id_sucursal)
inner join common.tbl_tipocambio tc on (tc.id_tipocambio=mc.id_tipocambio)
where mc.signo=-1;

select *from caja.tbl_movcaja mc limit 10
select *from planillas.tbl_persona

CREATE OR REPLACE VIEW CAJA.V_detmovpago
AS
SELECT
FP.descripcion AS FORMAPAGO,
CB.DESCRIPCION AS BANCO,
t.denominacion as tarjeta,
DMV.nro_operacion,
M.SIMBOLO AS MONEDA,
DMV.imp_pago,
DMV.imp_recibido,
case when dmv.id_moneda=2 then DMV.imp_pago*tc.venta else DMV.imp_pago end equivale_soles,
DMV.imp_vuelto,
DMV.id_moneda,
DMV.id_formapago,
DMV.id_banco,
DMV.id_tarjeta,
DMV.id_detmovpago,
DMV.id_movimcaja,
DMV.id_tipocambio,
DMV.id_sucursal,
DMV.fec_pago,
DMV.id_estado,
DMV.glosa
  FROM caja.tbl_detmovpago DMV
INNER JOIN common.tbl_moneda M ON (M.ID_MONEDA=DMV.ID_MONEDA)
INNER JOIN common.tbl_formapago FP ON  (FP.id_formapago=DMV.id_formapago)
INNER JOIN CAJA.TBL_CAJABANCO CB ON (CB.id_cajabanco=dmv.id_banco)
inner join common.tbl_tarjeta t on (t.id_tarjeta=dmv.id_tarjeta)
inner join common.tbl_tipocambio tc on(tc.id_tipocambio=DMV.id_tipocambio)

CREATE OR REPLACE VIEW ventas.v_valesconsumo
AS
 SELECT v.id_vale,
        CASE
            WHEN v.fec_emision IS NOT NULL THEN to_char(v.fec_emision, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_emision,
    v.concepto,
        CASE
            WHEN v.fec_vencimiento IS NOT NULL THEN to_char(v.fec_vencimiento, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_vencimiento,
    v.imp_vale,
    v.id_direccion,
    v.id_moneda,
    COALESCE(v.nro_vale, ''::text) AS nro_vale,
    v.imp_pendiente,
    v.id_cliente,
    p.doc_persona,
    p.nombre_razon AS cliente,
    v.id_autoriza,
    v.vehiculo,
    v.placa,
    v.conductor,
    v.id_sucrusal_vale,
    v.serie_vale,
    v.id_comprobante,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(v.kilometraje, ''::character varying) AS kilometraje,
    v.fec_emision AS fecha,
    (v.serie_vale::integer::text || '.'::text) || v.nro_vale::integer::text AS vale_id,
    (c.descripcion_corta || '/' ||v.serie_vale::integer::text || '-'::text || v.nro_vale::integer::text ) as vale,
    CASE date_part('month'::text, v.fec_emision )
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
         date_part('year'::text, v.fec_emision )::text as anio
   FROM ventas.tbl_valesconsumo v
   JOIN planillas.tbl_persona p ON p.id_persona::text = v.id_cliente::text
   JOIN common.tbl_estado e ON e.id_estado = v.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE C ON (c.id_comprobante=v.id_comprobante)

SELECT *
FROM ventas.tbl_valesconsumo v WHERE  V.id_cliente= '2009'

SELECT *
FROM ventas.tbl_valesconsumo v
   inner join  common.tbl_comprobante comp on (comp.id_comprobante=v.id_comprobante)
   inner join  ventas.tbl_direccion dir on (dir.id_direccion=v.id_direccion and dir.id_persona=v.id_cliente)
   inner join  ventas.tbl_sector sec  on (sec.id_sector=dir.id_sector)
   inner join  ventas.tbl_zona zon on (zon.id_zona=sec.id_zona)
   inner join  common.tbl_distrito dis on (dis.id_distrito=zon.id_distrito)
   inner join  common.tbl_provincia prov on (prov.id_provincia=dis.id_provincia)
   inner join  common.tbl_dpto dpto on (dpto.id_dpto=prov.id_dpto)
   INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=DIR.ID_PERSONA)
   inner join ventas.tbl_detvale d on(v.id_vale=d.id_vale and  v.id_sucrusal_vale=d.id_sucrusal_vale)
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   INNER JOIN almacen.tbl_existencia exi ON (dp.id_producto::text = exi.id_producto::text AND dp.id_unidadventa = exi.id_unidadventa)
   JOIN almacen.tbl_unidad  U ON (U.id_unidadventa=D.id_unidadventa)
   JOIN common.tbl_estado e ON d.id_estado = e.id_estado
   left join VENTAS.TBL_FACVALE fv on (v.id_vale=fv.id_vale and  v.id_sucrusal_vale=fv.id_sucrusal_vale)
   left join VENTAS.TBL_FACTURACION fac on (fac.id_sucursal=fv.id_sucursal and  fac.id_facturacion=fv.id_facturacion)
   left join common.tbl_comprobante cf on (cf.id_comprobante=fac.id_comprobante)
   where v.id_cliente not in('0') and v.id_estado=1  AND  V.id_cliente= '2009'  AND  date_part('month'::text, V.fec_emision )=2 and P.id_familia::integer in (5,4,3)

SELECT *FROM VENTAS.TBL_FACVALE fv WHERE ID_VALE IN (88,188)

select *from ventas.v_vales_creditos

CREATE OR REPLACE VIEW ventas.v_vales_creditos AS
 SELECT v.fec_emision,
    (((comp.descripcion_corta::text || '/'::text) || lpad(v.serie_vale::text, 4, '0'::text)) || '-'::text) || lpad(v.nro_vale, 7, '0'::text) AS documento,
    per.doc_persona,
    per.nombre_razon AS cliente,
    dir.direccion,
    d.item,
    p.id_producto,
    p.descripcion_larga AS producto,
    u.desc_corta AS unidad,
    d.cantidad,
    d.lista,
    d.precio,
    d.imp_dsct,
    d.total,
    dp.id_unidadventa,
    d.id_listaprecio,
    e.id_estado,
    d.id_sucrusal_vale,
    e.des_estado AS estado,
    d.id_vale,
    exi.id_almacen,
    (((cf.descripcion_corta::text || '/'::text) || lpad(fac.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(fac.numdoc_facturacion::text, 7, '0'::text) AS documento_factura,
        CASE date_part('month'::text, v.fec_emision)
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
    date_part('year'::text, v.fec_emision)::text AS anio,
    fac.id_facturacion,
    fac.id_sucursal,
    per.id_persona AS id_cliente,
    v.nro_vale,
    p.id_familia,
    (
        CASE
            WHEN length(v.vehiculo::text) > 0 THEN ' VEHÍCULO :'::text || v.vehiculo::text
            ELSE ''::text
        END ||
        CASE
            WHEN length(v.placa::text) > 0 THEN ' PLACA :'::text || v.placa::text
            ELSE ''::text
        END) ||
        CASE
            WHEN length(v.conductor::text) > 0 THEN ' CONDUCTOR :'::text || v.conductor::text
            ELSE ''::text
        END AS descripcion,
    (fac.id_facturacion::text || fac.id_sucursal::text)::integer AS id_venta,
    fac.fecha_venta
   FROM ventas.tbl_valesconsumo v
     JOIN common.tbl_comprobante comp ON comp.id_comprobante = v.id_comprobante
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = v.id_direccion AND dir.id_persona::text = v.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona zon ON zon.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = zon.id_distrito::text
     JOIN common.tbl_provincia prov ON prov.id_provincia::text = dis.id_provincia::text
     JOIN common.tbl_dpto dpto ON dpto.id_dpto::text = prov.id_dpto::text
     JOIN planillas.tbl_persona per ON per.id_persona::text = dir.id_persona::text
     JOIN ventas.tbl_detvale d ON v.id_vale = d.id_vale AND v.id_sucrusal_vale = d.id_sucrusal_vale
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_existencia exi ON dp.id_producto::text = exi.id_producto::text AND dp.id_unidadventa = exi.id_unidadventa
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = d.id_unidadventa
     JOIN common.tbl_estado e ON d.id_estado = e.id_estado
     LEFT JOIN ventas.tbl_facvale fv ON v.id_vale = fv.id_vale AND v.id_sucrusal_vale = fv.id_sucrusal_vale AND fv.id_estado = 1
     LEFT JOIN ventas.tbl_facturacion fac ON fac.id_sucursal = fv.id_sucursal AND fac.id_facturacion = fv.id_facturacion AND fac.id_estado = 1
     LEFT JOIN common.tbl_comprobante cf ON cf.id_comprobante = fac.id_comprobante
  WHERE v.id_cliente::text <> '0'::text AND v.id_estado = 1 AND d.id_estado = 1
  ORDER BY per.id_persona, (fac.id_facturacion::text || fac.id_sucursal::text)::integer, p.id_producto, v.nro_vale, v.fec_emision;

  /* union all
  select
    fac.fecha_venta as fec_emision,
    (comp.descripcion_corta || '/' || lpad(fac.serie_facturacion,4,'0') || '-'|| lpad(fac.numdoc_facturacion,7,'0')) as documento,
    PER.doc_persona,
    per.nombre_razon as cliente,
    dir.direccion,
    d.item,
    p.id_producto,
    p.descripcion_larga AS producto,
    u.desc_corta as unidad,
    d.cantidad,
    d.lista,
    d.precio,
    d.imp_dscto as imp_dsct,
    d.importe as total,
    dp.id_unidadventa,
    d.id_listaprecio,
    1 as id_estado,
    fac.id_sucursal,
    'Activo' AS estado,
    d.id_facturacion,
    exi.id_almacen,
    (comp.descripcion_corta || '/' || fac.serie_facturacion || '-'|| fac.numdoc_facturacion) as documento_factura,
    CASE date_part('month'::text, fac.fecha_venta )
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
         date_part('year'::text, fac.fecha_venta )::text as anio,
         fac.id_facturacion,
         fac.id_sucursal,
         per.id_persona as id_cliente,
	fac.numdoc_facturacion as nro_vale,
	p.id_familia,
	'' as Descripcion,
	(fac.id_Facturacion::text || fac.id_sucursal::text)::integer as id_venta
   FROM ventas.tbl_facturacion fac
   inner join  common.tbl_comprobante comp on (comp.id_comprobante=fac.id_comprobante)
   inner join  ventas.tbl_direccion dir on (dir.id_direccion=fac.id_direccion and dir.id_persona=fac.id_cliente)
   inner join  ventas.tbl_sector sec  on (sec.id_sector=dir.id_sector)
   inner join  ventas.tbl_zona zon on (zon.id_zona=sec.id_zona)
   inner join  common.tbl_distrito dis on (dis.id_distrito=zon.id_distrito)
   inner join  common.tbl_provincia prov on (prov.id_provincia=dis.id_provincia)
   inner join  common.tbl_dpto dpto on (dpto.id_dpto=prov.id_dpto)
   INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=DIR.ID_PERSONA)
   inner join ventas.tbl_detfacturacion d on(fac.id_facturacion=d.id_facturacion and  fac.id_sucursal=d.id_sucursal)
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   INNER JOIN almacen.tbl_existencia exi ON (dp.id_producto::text = exi.id_producto::text AND dp.id_unidadventa = exi.id_unidadventa)
   JOIN almacen.tbl_unidad  U ON (U.id_unidadventa=D.id_unidadventa)
   where fac.id_tipoventa<>1 and fac.id_estado=1*/
order by id_venta,id_cliente,id_producto,nro_vale,  fec_emision
   ;

select * from ventas.v_vales_creditos   where id_cliente= '2009'   and   fec_emision >= '01/01/2014' and fec_emision <='28/02/2014' and id_familia::integer in (3)order by id_venta,id_cliente::numeric,id_producto,nro_vale::numeric,  fec_emision::date

   select from ventas.tbl_valesconsumo  where nro_vale ilike '%401%';

   select v.id_vale,v.fec_emision,v.nro_vale,fv.id_facturacion  from ventas.tbl_valesconsumo v
   left join ventas.tbl_facvale fv on (v.id_vale=fv.id_vale) where fv.id_facturacion is null and v.fec_emision<='28/02/2014'

select *from  ventas.tbl_facvale

    where id_vale=62

   update  ventas.tbl_facvale set id_facturacion=1115 where id_vale=62
  -- JOIN common.tbl_estado e ON d.id_estado = e.id_estado

select *from ventas.tbl_valesconsumo   where id_cliente= '4494' and   date_part('month'::text, fec_emision::date )=2 and id_familia::integer in (5,4)

select *from ventas.tbl_valesconsumo v
select *from almacen.tbl_familia
select *from almacen.tbl_producto

select *from common.tbl_estado
select *from ventas.tbl_facturacion
   select *from ventas.tbl_detfacturacion
   order by v.id_cliente::numeric,p.id_producto,v.nro_vale::NUMERIC, V.fec_emision
   ;

select * from VENTAS.TBL_FACVALE   where  id_facturacion::text ||  id_sucursal::text='2251'

select *from ventas.tbl_facturacion
select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='1281'

create or replace view ventas.v_fact_vales_consumo
as
SELECT
    p.id_producto,
    exi.id_almacen,
    p.descripcion_larga AS producto,
    u.desc_corta as unidad,
    sum(d.cantidad) as cantidad,
    d.lista,
    d.precio,
    sum(d.total) as total,
    dp.id_unidadventa,
    d.id_listaprecio,
    p.servicio as ctrl_stock,
    1 as valunidad,
    1 as valmin,
    e.id_estado,
    v.id_direccion  ,
    v.id_cliente
   FROM ventas.tbl_valesconsumo v
   inner join  common.tbl_comprobante comp on (comp.id_comprobante=v.id_comprobante)
   inner join  ventas.tbl_direccion dir on (dir.id_direccion=v.id_direccion and dir.id_persona=v.id_cliente)
   inner join  ventas.tbl_sector sec  on (sec.id_sector=dir.id_sector)
   inner join  ventas.tbl_zona zon on (zon.id_zona=sec.id_zona)
   inner join  common.tbl_distrito dis on (dis.id_distrito=zon.id_distrito)
   inner join  common.tbl_provincia prov on (prov.id_provincia=dis.id_provincia)
   inner join  common.tbl_dpto dpto on (dpto.id_dpto=prov.id_dpto)
   INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=DIR.ID_PERSONA)
   inner join ventas.tbl_detvale d on(v.id_vale=d.id_vale and  v.id_sucrusal_vale=d.id_sucrusal_vale)
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   INNER JOIN almacen.tbl_existencia exi ON (dp.id_producto::text = exi.id_producto::text AND dp.id_unidadventa = exi.id_unidadventa)
   JOIN almacen.tbl_unidad  U ON (U.id_unidadventa=D.id_unidadventa)
   JOIN common.tbl_estado e ON d.id_estado = e.id_estado
   group by p.id_producto,
    p.descripcion_larga ,
    u.desc_corta ,
    d.precio,
    d.lista,
    d.imp_dsct,
    dp.id_unidadventa,
    d.id_listaprecio,
    e.id_estado,
    exi.id_almacen   ,
    v.id_direccion  ,
    v.id_cliente

create or replace view grifo.v_lado
as
select id_lado,descripcion_lado ,estado from tbl_lado

create or replace view almacen.v_productoleccontometro
as
select
p.id_producto,
pre.id_listaprecio,
pre.id_unidadventa,
p.descripcion_larga as producto ,
lec.gal_salida,
lec.gal_entrada,
lec.imp_salida,
lec.imp_entrada,
pre.precio1,
lec.result_gal ,
lec.result_imp ,
pre.precio2,
pre.precio3,
pre.predeterminado,
lec.id_lado,
lec.id_isla,
lec.id_turno,
lec.fecha,
lec.id_sucursal
from  GRIFO.TBL_LECCONTOMETRO lec
inner join almacen.tbl_precio pre on (pre.id_producto=lec.id_producto and pre.id_unidadventa=lec.id_unidadventa)
inner join almacen.tbl_detproducto dp on(dp.id_producto=pre.id_producto and dp.id_unidadventa=pre.id_unidadventa )
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_listaprecio lp on (lp.id_listaprecio=pre.id_listaprecio)
where lp.id_Estado=1 and p.id_producto in ('1','2','3') and pre.predeterminado=true
order by p.id_producto::numeric,lec.id_isla

select * from almacen.v_productoleccontometro   where id_lado=1 and id_isla=1  and id_turno=2  and fecha='12/02/2014' and id_sucursal=1
select *from grifo.v_listcontometro

alter table GRIFO.TBL_LECCONTOMETRO  add column liquidado boolean default false;

create or replace view grifo.v_listcontometro
as
select
lec.fecha,
isl.nom_isla,
ld.descripcion_lado as lado,
tur.descripcion as turno,
'Default'::text as usuario,
'pendiente por apertura de turno'::text as grifero,
lec.id_isla,
lec.id_lado,
lec.id_turno
from GRIFO.TBL_LECCONTOMETRO lec
inner join tbl_isla isl on (isl.id_isla=lec.id_isla)
inner join tbl_lado ld on (ld.id_lado=lec.id_lado)
inner join common.tbl_turno tur on (tur.id_turno=lec.id_turno)
group by lec.fecha,
isl.nom_isla,
ld.descripcion_lado,
tur.descripcion,
lec.id_isla,
lec.id_lado,
lec.id_turno
order by lec.fecha,lec.id_turno,lec.id_isla,lec.id_lado

update grifo.tbl_liquidar_isla set liquidado=false;

create or replace view grifo.v_liquidaisla
as
SELECT liq.fecha,
isl.nom_isla,
tur.descripcion as turno,
case when liq.id_usuario is null then 'Sin apertura' else u.camp2 end as usuario,
case when liq.id_grifero is null then 'Pendiente por apertura de turno' else p.nombre_razon end as grifero,
case when liq.liquidado=false then 'Pendiente' else 'Liquidado' end  as estado,
liq.id_isla,
liq.id_turno,
liq.id_sucursal,
liq.id_usuario,
liq.liquidado
FROM
GRIFO.TBL_LIQUIDAR_ISLA LIQ
inner join tbl_isla isl on (isl.id_isla=liq.id_isla)
inner join common.tbl_turno tur on (tur.id_turno=liq.id_turno)
left join seguridad.tbl_usuario u on (u.id_usuario=liq.id_usuario)
left join planillas.tbl_persona p on (p.id_persona=liq.id_grifero)
order by liq.fecha,liq.id_turno,liq.id_isla

create or replace view almacen.v_producto_varilla
as
select
p.id_producto,
p.descripcion_larga as nombreCompleto,
p.descripcion_corta as nombreCorto,
p.stockh as stock
from almacen.tbl_producto p
--inner join almacen.tbl_existencia ex on p.id_producto=ex.id_producto
where p.id_producto in ('1','2','3')
order by isnumeric(trim(p.id_producto)) desc;

create or replace  view grifo.v_varillaje
as
select
var.id_varillaje,
var.fecha,
 to_char(var.fec_registro,'HH24:MI:SS')  as hora,
p.descripcion_larga as producto,
var.cant_varilla,
var.cant_sistema,
var.observacion,
t.descripcion as turno,
e.des_estado as estado

from grifo.tbl_varillaje var
inner join almacen.tbl_producto p on (p.id_producto=var.id_producto)
inner join common.tbl_turno t on (t.id_turno=var.id_turno)
inner join common.tbl_estado e on (e.id_estado=var.id_estado)
order by fec_registro desc

select  *from compras.v_compras   where id_empresa=1 and DOC_COMPRA || nom_proveedor || doc_proveedor ilike '%d%' order by fec_ingsistema,anio, id_mes, id_compra limit 100

CREATE OR REPLACE VIEW compras.v_compras
AS
 SELECT
    lpad(c.nro_doc_compra,7,'0') as nro_doc_compra,
    c.fec_documento,
    c.id_dirproveedor,
    c.id_comprobante,
    c.id_tranzaccion,
    c.id_igv,
    c.anio,
    c.id_compra,
    c.fec_ingsistema,
    c.imp_venta,
    c.imp_dcsto,
    c.porcent_dcsto,
    c.imp_igv,
    c.porcent_reintegro,
    c.imp_reintegro,
    c.sujeto_percepcion,
    c.id_sucursalcompra,
    lpad(c.serie,4,'0') as serie,
    c.id_tipocambio,
    c.mercaderia_transito,
    c.actualizar_precios,
    c.paga_flete,
   COALESCE( c.doc_referencia,'') doc_referencia,
    c.imp_bruto,
    c.imp_total,
    c.imp_exonerado,
    c.id_operacion,
    c.imp_percepcion,
    c.genera_letra,
    c.reintegro_tributario,
 c.fec_ingalmacen,
        /*CASE
            WHEN c.fec_ingalmacen IS NOT NULL THEN to_char(c.fec_ingalmacen, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_ingalmacen,*/
    c.id_mes,
    c.imp_flete,
    c.imp_factor,
    COALESCE(c.id_orden, 0) AS id_orden,
    COALESCE(c.id_sucursalorden, 0) AS id_sucursalorden,
    c.pesototal,
    c.imp_afecto,
    c.actualiza_stock,
    c.pesovolumen,
    p.id_persona AS id_proveedor,
    p.doc_persona AS doc_proveedor,
    p.nombre_razon AS nom_proveedor,
    m.id_moneda,
    m.simbolo,
    t.id_tipoventa AS id_tipocompra,
    t.descripcion_larga AS des_tipo_compra,
    e.id_estado,
    e.des_estado AS estado,
    c.destinarventaconigv ,
    (CT.DESCRIPCION_CORTA ||'/' ||  lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) AS DOC_COMPRA,
    SUC.ID_EMPRESA,
    C.ID_RESPONSABLE,
    RES.NOMBRE_RAZON,
    c.referencia_ncr,
    COALESCE(REFMOV_ALMACEN,'') as REFMOV_ALMACEN,
    c.id__compra,
    c.tipo_cambio,
    C.APLICA_DSCTOTOTAL,
    c.egreso,
    c.referencia_guia,
    c.dias_credito,
    c.imp_isc
   FROM compras.tbl_compra c
   JOIN planillas.tbl_persona p ON p.id_persona::text = c.id_proveedor::text
   JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa t ON t.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON c.id_estado = e.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE CT ON (CT.ID_COMPROBANTE=C.ID_COMPROBANTE)
   INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=C.ID_SUCURSALCOMPRA)
   INNER JOIN PLANILLAS.TBL_PERSONA RES ON (RES.ID_PERSONA=C.ID_RESPONSABLE)
   where c.nota__credito=false and c.nota__debito=false
   order by c.fec_ingalmacen

select *from creditos.v_compras_x_canjear

CREATE OR REPLACE VIEW compras.v_compras_sin_canje
AS
 SELECT
    lpad(c.nro_doc_compra,7,'0') as nro_doc_compra,
    c.fec_documento,
    c.id_dirproveedor,
    c.id_comprobante,
    c.id_tranzaccion,
    c.id_igv,
    c.anio,
    c.id_compra,
    c.fec_ingsistema,
    c.imp_venta,
    c.imp_dcsto,
    c.porcent_dcsto,
    c.imp_igv,
    c.porcent_reintegro,
    c.imp_reintegro,
    c.sujeto_percepcion,
    c.id_sucursalcompra,
    lpad(c.serie,4,'0') as serie,
    c.id_tipocambio,
    c.mercaderia_transito,
    c.actualizar_precios,
    c.paga_flete,
   COALESCE( c.doc_referencia,'') doc_referencia,
    c.imp_bruto,
    c.imp_total,
    c.imp_exonerado,
    c.id_operacion,
    c.imp_percepcion,
    c.genera_letra,
    c.reintegro_tributario,
 c.fec_ingalmacen,
        /*CASE
            WHEN c.fec_ingalmacen IS NOT NULL THEN to_char(c.fec_ingalmacen, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_ingalmacen,*/
    c.id_mes,
    c.imp_flete,
    c.imp_factor,
    COALESCE(c.id_orden, 0) AS id_orden,
    COALESCE(c.id_sucursalorden, 0) AS id_sucursalorden,
    c.pesototal,
    c.imp_afecto,
    c.actualiza_stock,
    c.pesovolumen,
    p.id_persona AS id_proveedor,
    p.doc_persona AS doc_proveedor,
    p.nombre_razon AS nom_proveedor,
    m.id_moneda,
    m.simbolo,
    t.id_tipoventa AS id_tipocompra,
    t.descripcion_larga AS des_tipo_compra,
    e.id_estado,
    e.des_estado AS estado,
    c.destinarventaconigv ,
    (CT.DESCRIPCION_CORTA ||'/' ||  lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) AS DOC_COMPRA,
    SUC.ID_EMPRESA,
    C.ID_RESPONSABLE,
    RES.NOMBRE_RAZON,
    c.referencia_ncr,
    COALESCE(REFMOV_ALMACEN,'') as REFMOV_ALMACEN,
    c.id__compra,
    c.tipo_cambio,
    C.APLICA_DSCTOTOTAL,
    c.egreso,
    c.referencia_guia,
    c.dias_credito,
    c.imp_isc
   FROM compras.tbl_compra c
   JOIN planillas.tbl_persona p ON p.id_persona::text = c.id_proveedor::text
   JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa t ON t.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON c.id_estado = e.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE CT ON (CT.ID_COMPROBANTE=C.ID_COMPROBANTE)
   INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=C.ID_SUCURSALCOMPRA)
   INNER JOIN PLANILLAS.TBL_PERSONA RES ON (RES.ID_PERSONA=C.ID_RESPONSABLE)
   left join (
	select
		cc.id__compra,
		cc.id_sucursalcompra,
		ca.id_Estado
	from compras.tbl_compra cc
	inner join creditos.TBL_CREDITOSCOMPRA ca on (cc.id_sucursalcompra=ca.id_sucursalcompra and cc.id__compra=ca.id__compra)
	where cc.id_sucursalcompra=ca.id_sucursalcompra and cc.id__compra=ca.id__compra and ca.id_estado=1
) z on z.id__compra=c.id__compra and z.id_sucursalcompra=c.id_sucursalcompra
--left JOIN creditos.TBL_CREDITOSCOMPRA CCC ON (c.id_sucursalcompra=ccc.id_sucursalcompra and c.id__compra=ccc.id__compra)
where c.nota__credito=false and c.nota__debito=false AND t.descripcion_larga ilike '%CREDITO%' and c.id_estado=1  and z.id__compra is null  --(z.id_estado is null or z.id_estado<>1)
order by c.fec_ingalmacen

select *from compras.v__nota__credito__proveedores

CREATE OR REPLACE VIEW compras.v__nota__credito__proveedores
AS
 SELECT
    lpad(c.nro_doc_compra,7,'0') as nro_doc_compra,
    c.fec_documento,
    c.id_dirproveedor,
    c.id_comprobante,
    c.id_tranzaccion,
    c.id_igv,
    c.anio,
    c.id_compra,
    c.fec_ingsistema,
    c.imp_venta,
    c.imp_dcsto,
    c.porcent_dcsto,
    c.imp_igv,
    c.porcent_reintegro,
    c.imp_reintegro,
    c.sujeto_percepcion,
    c.id_sucursalcompra,
    lpad(c.serie,4,'0') as serie,
    c.id_tipocambio,
    c.mercaderia_transito,
    c.actualizar_precios,
    c.paga_flete,
    c.doc_referencia,
    c.imp_bruto,
    c.imp_total,
    c.imp_exonerado,
    c.id_operacion,
    c.imp_percepcion,
    c.genera_letra,
    c.reintegro_tributario,
    c.fec_ingalmacen,
    c.id_mes,
    c.imp_flete,
    c.imp_factor,
    COALESCE(c.id_orden, 0) AS id_orden,
    COALESCE(c.id_sucursalorden, 0) AS id_sucursalorden,
    c.pesototal,
    c.imp_afecto,
    c.actualiza_stock,
    c.pesovolumen,
    p.id_persona AS id_proveedor,
    p.doc_persona AS doc_proveedor,
    p.nombre_razon AS nom_proveedor,
    m.id_moneda,
    m.simbolo,
    t.id_tipoventa AS id_tipocompra,
    t.descripcion_larga AS des_tipo_compra,
    e.id_estado,
    e.des_estado AS estado,
    c.destinarventaconigv ,
    (CT.DESCRIPCION_CORTA ||'/' ||  lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) AS DOC_COMPRA,
    SUC.ID_EMPRESA,
    C.ID_RESPONSABLE,
    RES.NOMBRE_RAZON as RESPONSABLE,
    COALESCE(c.referencia_ncr,'-') as referencia_ncr,
    COALESCE(REFMOV_ALMACEN,'') as REFMOV_ALMACEN,
    c.id__compra,
    TC.VENTA AS TIPO_CAMBIO,
    COALESCE(CTO.id::varchar(4),'0') as ID_CONCEPTO,
    COALESCE(CTO.DESCRIPCION_LARGA,'') AS CONCEPTO,
    c.id_motivonotacredito,
    c.nota__debito,
    COALESCE(c.id__compra__ref,0) as id__compra__ref,
    COALESCE(c.id__sucursal__ref,0) as id__sucursal__ref,
    mn.descripcion_larga as Motivo_notacredito,
    z.fec_documento as fec_compra,
    z.fec_ingalmacen as fec_ing_almacencompra
   FROM compras.tbl_compra c
   JOIN planillas.tbl_persona p ON p.id_persona::text = c.id_proveedor::text
   JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa t ON t.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON c.id_estado = e.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE CT ON (CT.ID_COMPROBANTE=C.ID_COMPROBANTE)
   INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=C.ID_SUCURSALCOMPRA)
   INNER JOIN PLANILLAS.TBL_PERSONA RES ON (RES.ID_PERSONA=C.ID_RESPONSABLE)
   INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=C.ID_TIPOCAMBIO)
   inner JOIN COMMON.TBL_CONCEPTO CTO ON (CTO.id::text=C.ID__CONCEPTO)
   INNER JOIN common.tbl_motivonotacredito mn on mn.id_motivonotacredito=c.id_motivonotacredito
   left JOIN (
	SELECT
		ID__COMPRA,
		id_sucursalcompra ,
		c.fec_documento,
		c.fec_ingalmacen
	FROM COMPRAS.TBL_COMPRA C
   ) z on z.ID__COMPRA=c.id__compra__ref and z.id_sucursalcompra=c.id__sucursal__ref
   where c.nota__credito=true --and c.nota__debito=false
   order by c.fec_ingalmacen

select *from compras.tbl_compra where nota_credito is true

select * from compras.v__nota__credito__proveedores

CREATE OR REPLACE VIEW compras.v__nota__debito__proveedores
AS
 SELECT
    lpad(c.nro_doc_compra,7,'0') as nro_doc_compra,
    c.fec_documento,
    c.id_dirproveedor,
    c.id_comprobante,
    c.id_tranzaccion,
    c.id_igv,
    c.anio,
    c.id_compra,
    c.fec_ingsistema,
    c.imp_venta,
    c.imp_dcsto,
    c.porcent_dcsto,
    c.imp_igv,
    c.porcent_reintegro,
    c.imp_reintegro,
    c.sujeto_percepcion,
    c.id_sucursalcompra,
    lpad(c.serie,4,'0') as serie,
    c.id_tipocambio,
    c.mercaderia_transito,
    c.actualizar_precios,
    c.paga_flete,
    c.doc_referencia,
    c.imp_bruto,
    c.imp_total,
    c.imp_exonerado,
    c.id_operacion,
    c.imp_percepcion,
    c.genera_letra,
    c.reintegro_tributario,
    c.fec_ingalmacen,
    c.id_mes,
    c.imp_flete,
    c.imp_factor,
    COALESCE(c.id_orden, 0) AS id_orden,
    COALESCE(c.id_sucursalorden, 0) AS id_sucursalorden,
    c.pesototal,
    c.imp_afecto,
    c.actualiza_stock,
    c.pesovolumen,
    p.id_persona AS id_proveedor,
    p.doc_persona AS doc_proveedor,
    p.nombre_razon AS nom_proveedor,
    m.id_moneda,
    m.simbolo,
    t.id_tipoventa AS id_tipocompra,
    t.descripcion_larga AS des_tipo_compra,
    e.id_estado,
    e.des_estado AS estado,
    c.destinarventaconigv ,
    (CT.DESCRIPCION_CORTA ||'/' ||  lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) AS DOC_COMPRA,
    SUC.ID_EMPRESA,
    C.ID_RESPONSABLE,
    RES.NOMBRE_RAZON as RESPONSABLE,
    c.referencia_ncr,
    COALESCE(REFMOV_ALMACEN,'') as REFMOV_ALMACEN,
    c.id__compra,
    TC.VENTA AS TIPO_CAMBIO,
    CTO.ID_CONCEPTO,
    CTO.DESCRIPCION_LARGA AS CONCEPTO,
    c.id_motivonotacredito
   FROM compras.tbl_compra c
   JOIN planillas.tbl_persona p ON p.id_persona::text = c.id_proveedor::text
   JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa t ON t.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON c.id_estado = e.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE CT ON (CT.ID_COMPROBANTE=C.ID_COMPROBANTE)
   INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=C.ID_SUCURSALCOMPRA)
   INNER JOIN PLANILLAS.TBL_PERSONA RES ON (RES.ID_PERSONA=C.ID_RESPONSABLE)
   INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=C.ID_TIPOCAMBIO)
   inner JOIN COMMON.TBL_CONCEPTO CTO ON (CTO.id::text=C.ID__CONCEPTO)
   where c.nota__debito=true
   order by c.fec_ingalmacen

SELECT *FROM compras.tbl_compra

select id_concepto,*from compras.tbl_compra
select *FROM COMMON.TBL_TIPOCAMBIO

CREATE OR REPLACE VIEW compras.v_egresos
AS
 SELECT
    lpad(c.nro_doc_compra,7,'0') as nro_doc_compra,
    c.fec_documento,
    c.id_dirproveedor,
    c.id_comprobante,
    c.id_tranzaccion,
    c.id_igv,
    c.anio,
    c.id_compra,
    c.fec_ingsistema,
    c.imp_venta,
    c.imp_dcsto,
    c.porcent_dcsto,
    c.imp_igv,
    c.porcent_reintegro,
    c.imp_reintegro,
    c.sujeto_percepcion,
    c.id_sucursalcompra,
    lpad(c.serie,4,'0') as serie,
    c.id_tipocambio,
    c.mercaderia_transito,
    c.actualizar_precios,
    c.paga_flete,
    c.doc_referencia,
    c.imp_bruto,
    c.imp_total,
    c.imp_exonerado,
    c.id_operacion,
    c.imp_percepcion,
    c.genera_letra,
    c.reintegro_tributario,
    c.fec_ingalmacen,
    c.id_mes,
    c.imp_flete,
    c.imp_factor,
    COALESCE(c.id_orden, 0) AS id_orden,
    COALESCE(c.id_sucursalorden, 0) AS id_sucursalorden,
    c.pesototal,
    c.imp_afecto,
    c.actualiza_stock,
    c.pesovolumen,
    p.id_persona AS id_proveedor,
    p.doc_persona AS doc_proveedor,
    p.nombre_razon AS nom_proveedor,
    m.id_moneda,
    m.simbolo,
    t.id_tipoventa AS id_tipocompra,
    t.descripcion_larga AS des_tipo_compra,
    e.id_estado,
    e.des_estado AS estado,
    c.destinarventaconigv ,
    (CT.DESCRIPCION_CORTA ||'/' ||  lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) AS DOC_COMPRA,
    SUC.ID_EMPRESA,
    C.ID_RESPONSABLE,
    RES.NOMBRE_RAZON,
    c.glosa,
    c.id__compra,
    c.fec_vencimiento,
    c.afecto_detraccion,
    c.NroOperacion_detatracion,
    c.imp_detraccion,
    c.fec_pago,
    c.egreso_movilidad
   FROM compras.tbl_compra c
   JOIN planillas.tbl_persona p ON p.id_persona::text = c.id_proveedor::text
   JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa t ON t.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON c.id_estado = e.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE CT ON (CT.ID_COMPROBANTE=C.ID_COMPROBANTE)
   INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=C.ID_SUCURSALCOMPRA)
   INNER JOIN PLANILLAS.TBL_PERSONA RES ON (RES.ID_PERSONA=C.ID_RESPONSABLE)
  where egreso=true;

select *FROM compras.tbl_compra c where egreso=true;

select *from compras.v_rbohonorarios

CREATE OR REPLACE VIEW compras.v_rbohonorarios
AS
 SELECT
    lpad(c.nro_doc_compra,7,'0') as nro_doc_compra,
    c.fec_documento,
    c.id_dirproveedor,
    c.id_comprobante,
    c.id_tranzaccion,
    c.id_igv,
    c.anio,
    c.id_compra,
    c.fec_ingsistema,
    c.imp_venta,
    c.imp_dcsto,
    c.porcent_dcsto,
    c.imp_igv,
    c.porcent_reintegro,
    c.imp_reintegro,
    c.sujeto_percepcion,
    c.id_sucursalcompra,
    lpad(c.serie,4,'0') as serie,
    c.id_tipocambio,
    c.mercaderia_transito,
    c.actualizar_precios,
    c.paga_flete,
    c.doc_referencia,
    c.imp_bruto,
    c.imp_total,
    c.imp_exonerado,
    c.id_operacion,
    c.imp_percepcion,
    case when cc.importe_documento is not null then true else c.genera_letra end genera_letra,
    c.reintegro_tributario,
    c.fec_ingalmacen,
    c.id_mes,
    c.imp_flete,
    c.imp_factor,
    COALESCE(c.id_orden, 0) AS id_orden,
    COALESCE(c.id_sucursalorden, 0) AS id_sucursalorden,
    c.pesototal,
    c.imp_afecto,
    c.actualiza_stock,
    c.pesovolumen,
    p.id_persona AS id_proveedor,
    p.doc_persona AS doc_proveedor,
    p.nombre_razon AS nom_proveedor,
    m.id_moneda,
    m.simbolo,
    t.id_tipoventa AS id_tipocompra,
    t.descripcion_larga AS des_tipo_compra,
    e.id_estado,
    e.des_estado AS estado,
    c.destinarventaconigv ,
    (CT.DESCRIPCION_CORTA ||'/' ||  lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) AS DOC_COMPRA,
    SUC.ID_EMPRESA,
    C.ID_RESPONSABLE,
    RES.NOMBRE_RAZON,
    c.glosa,
    c.id__compra,
    cco.id_centrocostos,
    cco.descripcion_larga,
    case when cc.importe_documento is not null then 'C/LETRAS'  else '**'  end Estado_canje
   FROM compras.tbl_compra c
   JOIN planillas.tbl_persona p ON p.id_persona::text = c.id_proveedor::text
   JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa t ON t.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON c.id_estado = e.id_estado
   INNER JOIN COMMON.TBL_COMPROBANTE CT ON (CT.ID_COMPROBANTE=C.ID_COMPROBANTE)
   INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=C.ID_SUCURSALCOMPRA)
   INNER JOIN PLANILLAS.TBL_PERSONA RES ON (RES.ID_PERSONA=C.ID_RESPONSABLE)
   INNER JOIN contabilidad.tbl_centrocosto cco on (cco.id_centrocostos=c.id_centrocostos)
   left join creditos.tbl_creditoscompra cc on(c.id__compra=cc.id__compra and c.id_sucursalcompra=c.id_sucursalcompra)
  where egreso=true and CT.DESCRIPCION_CORTA='RBH' ;

select *from compras.tbl_compra

select *from almacen.tbl_cabmovalm
SELECT *FROM PLANILLAS.TBL_PERSONA
SELECT *FROM COMPRAS.TBL_COMPRA
select * from ventas.v_valesconsumofact  where id_cliente= '2009'  and id_familia::integer in (3) order by id_vale

select * from ventas.v_valesconsumofact  where id_cliente= '2563'  and id_familia::integer in (3) order by id_vale

CREATE OR REPLACE VIEW ventas.v_valesconsumofact
 AS
 SELECT
 v.id_vale,
 v.id_sucrusal_vale,
        CASE
            WHEN v.fec_emision IS NOT NULL THEN to_char(v.fec_emision, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_emision,
    v.concepto,
        CASE
            WHEN v.fec_vencimiento IS NOT NULL THEN to_char(v.fec_vencimiento, 'dd/mm/yyyy'::text)
            ELSE '01/01/1900'::text
        END AS fec_vencimiento,
    v.imp_vale,
    v.id_direccion,
    v.id_moneda,
    COALESCE(v.nro_vale, ''::text) AS nro_vale,
    v.imp_pendiente,
    v.id_cliente,
    p.doc_persona,
    p.nombre_razon AS cliente,
    v.id_autoriza,
    v.vehiculo,
    v.placa,
    v.conductor,
    v.serie_vale,
    v.id_comprobante,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(v.kilometraje, ''::character varying) AS kilometraje,
    v.fec_emision AS fecha,
    (LPAD(v.serie_vale::text,4,'0') || '.'::text) || LPAD(v.nro_vale::text,7,'0') AS vale_id,
    (((c.descripcion_corta::text || '/'::text) || LPAD(v.serie_vale::text,4,'0')) || '-'::text) || LPAD(v.nro_vale::text,7,'0') AS vale,
        CASE date_part('month'::text, v.fec_emision)
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
    date_part('year'::text, v.fec_emision)::text AS anio,
    prod.id_familia,
    prod.descripcion_larga as producto,
    COALESCE(v.id_clientefactura, '') as id_clientefactura,
    COALESCE(v.id_direccionfactura,0) as id_direccionfactura,
    COALESCE(cf.doc_persona,'') as doc_clientefactura,
    COALESCE(cf.nombre_razon,'') AS clienefactura
   FROM ventas.tbl_valesconsumo v
   JOIN planillas.tbl_persona p ON p.id_persona::text = v.id_cliente::text
   JOIN common.tbl_estado e ON e.id_estado = v.id_estado
   JOIN common.tbl_comprobante c ON c.id_comprobante = v.id_comprobante
   inner join ventas.tbl_detvale d on(v.id_vale=d.id_vale and  v.id_sucrusal_vale=d.id_sucrusal_vale)
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = d.id_producto::text AND dp.id_unidadventa = d.id_unidadventa
   JOIN almacen.tbl_producto prod ON prod.id_producto::text = dp.id_producto::text
   left join planillas.tbl_persona cf ON cf.id_persona::text = v.id_clientefactura::text
  where v.id_cliente='17' (v.id_vale::text || v.id_sucrusal_vale::text)
  not in (select (fv.id_vale::text || fv.id_sucrusal_vale::text) from VENTAS.TBL_FACVALE fv where fv.id_estado=1)
   order by case when length(trim(v.serie_vale))=0 then '0' else v.serie_vale end  ::integer,v.nro_vale::integer

select *from  VENTAS.TBL_FACVALE fv where fv.id_vale=63

select * from ventas.v_valesconsumofact   where id_cliente= '2563'
select * from VENTAS.TBL_FACVALE fv

CREATE OR REPLACE VIEW ventas.v_listar_cant_ventas_mensuales_vendedor
AS
 SELECT crosstab.vendedor,
    COALESCE(crosstab.ene, 0::numeric) AS ene,
    COALESCE(crosstab.feb, 0::numeric) AS feb,
    COALESCE(crosstab.mar, 0::numeric) AS mar,
    COALESCE(crosstab.abr, 0::numeric) AS abr,
    COALESCE(crosstab.may, 0::numeric) AS may,
    COALESCE(crosstab.jun, 0::numeric) AS jun,
    COALESCE(crosstab.jul, 0::numeric) AS jul,
    COALESCE(crosstab.ago, 0::numeric) AS ago,
    COALESCE(crosstab.sep, 0::numeric) AS sep,
    COALESCE(crosstab.oct, 0::numeric) AS oct,
    COALESCE(crosstab.nov, 0::numeric) AS nov,
    COALESCE(crosstab.ago, 0::numeric) AS dic,
    COALESCE(crosstab.ene, 0::numeric) + COALESCE(crosstab.feb, 0::numeric) + COALESCE(crosstab.mar, 0::numeric) + COALESCE(crosstab.abr, 0::numeric) + COALESCE(crosstab.may, 0::numeric) + COALESCE(crosstab.jun, 0::numeric) + COALESCE(crosstab.jul, 0::numeric) + COALESCE(crosstab.ago, 0::numeric) + COALESCE(crosstab.sep, 0::numeric) + COALESCE(crosstab.oct, 0::numeric) + COALESCE(crosstab.nov, 0::numeric) + COALESCE(crosstab.ago, 0::numeric) AS total
   FROM crosstab('(select personal.NOMBRES || '' '' || personal.ape_paterno || '' '' || personal.ape_materno, date_part(''month'',fecha_emision), count(idfacturacion)
		  from ventas.facturacion f
		  inner join ventas.tbl_detventas df on (f.id_facturacion=df.id_facturacion)
		  inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
		   where  date_part(''year'',fecha_emision::date)=date_part(''year'',now()::date) and anulado=''N''
		  group by personal.NOMBRES,personal.ape_paterno,personal.ape_materno, date_part(''month'',fecha_emision) order by 1) '::text, 'select m from generate_series(1,13) m'::text) crosstab(vendedor text, ene numeric(14,3), feb numeric(14,3), mar numeric(14,3), abr numeric(14,3), may numeric(14,3), jun numeric(14,3), jul numeric(14,3), ago numeric(14,3), sep numeric(14,3), oct numeric(14,3), nov numeric(14,3), dic numeric(14,3), total numeric(14,3));

select *from almacen.v_inventario

create or replace  view almacen.v_inventario
as
select
iv.fecha,
iv.glosa as decs_inventario ,
a.descalmacen as almacen,
e.des_estado as estado,
iv.id_inventario,
iv.id_almacen,
e.id_estado,
s.id_empresa
from almacen.tbl_inventario iv
inner join almacen.tbl_almacen a on (a.id_almacen=iv.id_almacen)
inner join common.tbl_estado e on (e.id_Estado=iv.id_estado)
inner join common.tbl_sucursal s on(s.id_sucursal=a.id_sucursal)

select *from almacen.tbl_inventario
update almacen.tbl_inventario set id_estado=1

select id_almacen,count(id_almacen) from almacen.tbl_existencia group by id_almacen

delete from almacen.tbl_existencia where id_estado<>1

delete from almacen.tbl_existencia  where exists(select * from almacen.tbl_detproducto dp where dp.id_producto=tbl_existencia.id_producto and  dp.id_estado<>1)

select* from almacen.tbl_detproducto dp where dp.id_estado<>1
select *from ventas.v_detcotizaprevente

CREATE OR REPLACE VIEW almacen.v_detproducto
AS
 SELECT
   dp.id_unidadventa,
   dp.id_producto,
   p.id_familia,
   trim(p.codigo)|| ' - >'|| p.descripcion_larga as producto,
   f.descripcion_larga as familia,
   g.descripcion_larga as  marca,
   pre.coste as costounitario,
   u.desc_larga as nom_unidad,
   u.desc_corta as unidad,
   dp.unidad_inventario,
   dp.val_unidad,
   dp.val_minimo,
   p.stockh,
   p.id_estado,
   pre.costo,
   p.codigo,
   p.gestiona_series,
   p.cod_barra,
   P.gestiona_lotes
   FROM almacen.tbl_producto p
   JOIN almacen.tbl_detproducto dp ON p.id_producto=dp.id_producto
   inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
   INNER JOIN ALMACEN.TBL_PRECIO PRE  ON (PRE.ID_PRODUCTO=DP.ID_PRODUCTO AND DP.id_unidadventa=PRE.id_unidadventa)
   INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
   INNER JOIN ALMACEN.TBL_MARCA G ON (G.ID_MARCA=P.ID_MARCA)
   where p.id_estado=1 and dp.id_estado=1

select *from almacen.tbl_producto

select * from almacen.v_producto_serach   where  upper(producto || familia) ilike '%40000106 - >WHISKY OLD TIMES BLACK 750ML               %'

CREATE OR REPLACE VIEW almacen.v_producto_serach
AS
 SELECT
   p.id_producto,
   trim(p.codigo)|| ' - >'|| p.descripcion_larga as producto,
   f.descripcion_larga as familia,
   g.descripcion_larga as  marca,
   p.id_familia,
   p.stockh,
   p.id_estado
   FROM almacen.tbl_producto p
   INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
   INNER JOIN ALMACEN.TBL_MARCA G ON (G.ID_MARCA=P.ID_MARCA)
   where p.id_estado=1

select * from almacen.v_detproducto   where  upper(producto || familia) ilike '%%'

select *from almacen.tbl_producto
SELECT *FROM ALMACEN.TBL_PRECIO

CREATE OR REPLACE VIEW almacen.v_detproducto_inventario
AS
 SELECT
   dp.id_unidadventa,
   dp.id_producto,
   p.id_familia,
   p.descripcion_larga as producto,
   f.descripcion_larga as familia,
   g.descripcion_larga as grupo,
   p.costounitario,
   u.desc_larga as nom_unidad,
   u.desc_corta as unidad,
   dp.unidad_inventario,
   dp.val_unidad,
   dp.val_minimo
   --ex.id_inventario,
  -- ex.id_almacen
   FROM almacen.tbl_producto p
   JOIN almacen.tbl_detproducto dp ON p.id_producto=dp.id_producto
   --inner join almacen.tbl_existencia ex on (dp.id_producto=ex.id_producto and dp.id_unidadventa=ex.id_unidadventa)
   inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
   INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
   INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)

create or replace view almacen.v_inventario_actual
as
SELECT ex.id_almacen,ex.id_producto,ex.id_unidadventa,ex.id_inventario,ex.id_estado
FROM ALMACEN.TBL_EXISTENCIA ex
inner join almacen.tbl_inventario iv on (iv.id_inventario=ex.id_inventario and iv.id_almacen=ex.id_almacen)
inner join almacen.tbl_programainventario piv on(piv.id_inventario=iv.id_inventario)
where piv.id_estado=1

select *from almacen.v_progrmacionesinventario
select *from almacen.tbl_almacen
select *from almacen.tbl_unidad
select *from almacen.tbl_detproducto dp

CREATE OR REPLACE VIEW ALMACEN.V_DOCUMENTOINVENTARIO
AS
select
a.descalmacen as almacen,
(c.descripcion_CORTA ||'/'|| cinv.serie||'-' || cinv.numero) as documento,
cinv.fecha,
cinv.descripcion,
u.camp2 as usuario,
e.des_estado as estado,
a.id_almacen,
cinv.id_inventario,
cinv.serie,
cinv.numero,
cinv.id_comprobante,
s.id_empresa
 from ALMACEN.TBL_CABINVENTARIO cinv
inner join almacen.tbl_inventario inv on (inv.id_inventario=cinv.id_inventario and inv.id_almacen=cinv.id_almacen)
inner join almacen.tbl_almacen a on (a.id_almacen=inv.id_almacen)
inner join common.tbl_comprobante c on (c.id_comprobante=cinv.id_comprobante)
inner join seguridad.tbl_usuario u on (u.id_usuario=cinv.id_usuario)
inner join common.tbl_estado e on(e.id_estado=cinv.id_estado)
inner join common.tbl_sucursal s on (s.id_sucursal=a.id_sucursal)

SELECT *FROM ALMACEN.TBL_CABINVENTARIO cinv

create or replace view almacen.v_detinventario
as
select
p.id_producto,
p.descripcion_larga as producto,
p.stockh,
u.desc_corta as unidad,
0.00 as conteo,
dinv.cantidad_fisica,
dinv.id_unidadventa,
dinv.item,
dinv.id_inventario,
dinv.serie,
dinv.numero,
dinv.id_almacen,
dinv.id_comprobante,
f.descripcion_larga as familia,
g.descripcion_larga as grupo,
p.costounitario,
E.DES_ESTADO AS ESTADO,
E.ID_ESTADO,
p.codigo
 from almacen.tbl_detinventario dinv
inner join almacen.tbl_detproducto dp on (dp.id_producto=dinv.id_producto and dp.id_unidadventa=dinv.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=DINV.ID_ESTADO)

update almacen.tbl_producto set stockh=0

select *from almacen.tbl_detinventario

create or replace view almacen.v_consolidadoinv
as
select
a.descalmacen as almacen,
iv.fecha,
p.id_producto,
p.descripcion_larga as producto,
u.desc_corta as unidad,
sum(x.cantidad) as conteo,
dinv.cantidad_sistema as sistema,
(sum(dinv.cantidad_fisica)-dinv.cantidad_sistema) diferencia,
iv.id_inventario,
iv.id_almacen,
dp.id_unidadventa
 from  almacen.tbl_inventario iv
inner join almacen.tbl_almacen a on (a.id_almacen=iv.id_almacen)
inner join ALMACEN.TBL_CABINVENTARIO cinv on (iv.id_inventario=cinv.id_inventario and iv.id_almacen=cinv.id_almacen)
inner join almacen.tbl_detinventario dinv on (cinv.id_inventario=dinv.id_inventario and  cinv.serie=dinv.serie and
						cinv.numero=dinv.numero and  cinv.id_almacen=dinv.id_almacen and  cinv.id_comprobante=dinv.id_comprobante)
JOIN LATERAL almacen.fn_stock(dinv.id_producto, dinv.id_unidadventa, dinv.id_almacen, dinv.cantidad_fisica) x(product_id, unit_id, val_unit, stock, cantidad) ON x.product_id::text = dinv.id_producto::text
inner join almacen.tbl_inventario inv on (inv.id_inventario=cinv.id_inventario and inv.id_almacen=cinv.id_almacen)
inner join common.tbl_comprobante c on (c.id_comprobante=cinv.id_comprobante)
inner join seguridad.tbl_usuario us on (us.id_usuario=cinv.id_usuario)
inner join common.tbl_estado e on(e.id_estado=cinv.id_estado)
inner join almacen.tbl_detproducto dp on (dp.id_producto=dinv.id_producto and dp.id_unidadventa=x.unit_id)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
INNER JOIN COMMON.TBL_ESTADO Es ON (Es.ID_ESTADO=DINV.ID_ESTADO)
where dinv.id_estado=1
group by
a.descalmacen ,
iv.fecha,
p.id_producto,
u.desc_corta,
p.descripcion_larga,
dinv.cantidad_sistema,
iv.id_inventario,
iv.id_almacen,
dp.id_unidadventa;

select *from almacen.tbl_detinventario dinv

create or replace view almacen.v_progrmacionesinventario
as
select
	id_inventario,
	descripcion,
	fecha::date as fecha,
	e.des_estado as estado,
	inv.id_estado
from  almacen.tbl_programainventario inv
inner join common.tbl_estado e on (e.id_estado=inv.id_estado)

select *from almacen.tbl_programainventario

update almacen.tbl_programainventario set fecha='01/01/2015'

create or replace view almacen.v_inven_almacen
as
select a.descalmacen,pi.descripcion,a.id_almacen,i.id_inventario from almacen.tbl_inventario i
inner join almacen.tbl_almacen a on (a.id_almacen=i.id_almacen)
inner join almacen.tbl_programainventario pi on (pi.id_inventario=i.id_inventario)

select * from almacen.v_inven_almacen   where id_inventario=1

SELECT *FROM ALMACEN.v_inventario

create or replace view almacen.v_inven_almacen
as
select a.descalmacen,pi.descripcion,a.id_almacen,i.id_inventario from almacen.tbl_inventario i
inner join almacen.tbl_almacen a on (a.id_almacen=i.id_almacen)
inner join almacen.tbl_programainventario pi on (pi.id_inventario=i.id_inventario)

drop view almacen.v_existencias_inventario_producto;

create or replace  view almacen.v_existencias_inventario_producto
as
 SELECT i.id_inventario,
    pi.descripcion as inventario ,--|| '(' || U.DESC_CORTA || ')' AS inventario,
    i.fecha,
    a.descalmacen,
    COALESCE(ex.stock_fisico,0) as stock_fisico,
    a.id_almacen,
    ex.id_unidadventa,
    ex.id_producto,
    ex.id_estado,
    suc.id_empresa,
    U.DESC_CORTA as unidad,
    EX.UND_INVENTARIO
   FROM almacen.tbl_existencia ex
   INNER JOIN ALMACEN.TBL_UNIDAD U ON (U.ID_UNIDADVENTA=EX.ID_UNIDADVENTA)
   JOIN almacen.tbl_inventario i ON i.id_inventario = ex.id_inventario AND i.id_almacen = ex.id_almacen
   JOIN almacen.tbl_almacen a ON a.id_almacen = i.id_almacen
   JOIN almacen.tbl_programainventario pi ON pi.id_inventario = i.id_inventario
   inner join common.tbl_sucursal suc on (suc.id_sucursal=a.id_sucursal)
order by ex.id_almacen,EX.ID_UNIDADVENTA;

SELECT *FROM ALMACEN.TBL_UNIDAD

ALTER TABLE VENTAS.TBL_FACTURACION ADD COLUMN id_vendedor          VARCHAR(15) NOT NULL DEFAULT '1' ;

ALTER TABLE VENTAS.TBL_FACTURACION
	ADD FOREIGN KEY (id_vendedor) REFERENCES PLANILLAS.TBL_PERSONA (id_persona) ON DELETE SET NULL;

select *from ventas.tbl_facturacion
select *from creditos.tbl_credito
select *from common.tbl_moneda
selec

CREATE OR REPLACE VIEW creditos.v_listar_ctas_corriente_clientes
AS
select
(c.descripcion_corta::text || fac.serie_facturacion::text) || fac.numdoc_facturacion::text AS comprobante,
cred.fec_emision,
m.simbolo as moneda,
fac.imp_total as total_venta,
(select sum(ct.imp_cuota)from creditos.tbl_cuota ct where (cred.id_credito=ct.id_credito and  cred.id_sucursal_credito=ct.id_sucursal_credito)) as credito,
COALESCE((select sum(mov.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mov on (mov.id_movimcaja=dp.id_movimcaja and  mov.id_sucursal=dp.id_sucursal)
where cred.id_credito=dp.id_credito and  cred.id_sucursal_credito=dp.id_sucursal_credito),0.00) as pagos,

(select sum(ct.imp_cuota)from creditos.tbl_cuota ct where (cred.id_credito=ct.id_credito and  cred.id_sucursal_credito=ct.id_sucursal_credito))-
COALESCE((select sum(mov.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mov on (mov.id_movimcaja=dp.id_movimcaja and  mov.id_sucursal=dp.id_sucursal)
where cred.id_credito=dp.id_credito and  cred.id_sucursal_credito=dp.id_sucursal_credito),0.00) as saldo,
 (select ct.fec_vencimiento from creditos.tbl_cuota ct
 where (cred.id_credito=ct.id_credito and  cred.id_sucursal_credito=ct.id_sucursal_credito) order by nro_cuota desc limit 1) as fec_vencimeinto,
 cli.doc_persona as doc_cliente,
 cli.nombre_razon as cliente,
 dir.direccion,
 dis.distrito,
 vend.nombre_razon as vendor,
 cta.nro_cuota,
 cta.fec_vencimiento as vencimiento_cuota,
 cta.imp_capital,
 cta.imp_interes,
 cta.imp_total,
 COALESCE((select sum(mov.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mov on (mov.id_movimcaja=dp.id_movimcaja and  mov.id_sucursal=dp.id_sucursal)
where cta.id_credito=dp.id_credito and  cta.id_sucursal_credito=dp.id_sucursal_credito and cta.id_cuotas=dp.id_cuotas),0.00) as pagos_cuota,
cta.imp_total-COALESCE((select sum(mov.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mov on (mov.id_movimcaja=dp.id_movimcaja and  mov.id_sucursal=dp.id_sucursal)
where cta.id_credito=dp.id_credito and  cta.id_sucursal_credito=dp.id_sucursal_credito and cta.id_cuotas=dp.id_cuotas),0.00)  as saldo_cuota
 from
 ventas.tbl_facturacion fac
inner join creditos.tbl_ventacredito fc on (fac.id_sucursal=fc.id_sucursal and fac.id_facturacion=fc.id_facturacion)
inner join creditos.tbl_credito cred on (cred.id_credito=fc.id_credito and  cred.id_sucursal_credito=fc.id_sucursal_credito)
INNER JOIN COMMON.TBL_COMPROBANTE C ON c.id_comprobante  = fac.id_comprobante
inner JOIN common.tbl_moneda m ON m.id_moneda= fac.id_moneda
inner JOIN ventas.tbl_direccion dir ON dir.id_direccion= fac.id_direccion and dir.id_persona=fac.id_cliente
inner JOIN planillas.tbl_persona cli ON cli.id_persona = dir.id_persona
JOIN PLANILLAS.TBL_PERSONA vend ON vend.id_persona = fac.id_vendedor
inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
inner join ventas.tbl_zona z on (z.id_zona=sec.id_zona)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
inner join creditos.tbl_cuota cta on (cred.id_credito=cta.id_credito and  cred.id_sucursal_credito=cta.id_sucursal_credito)
order by fac.id_cliente,comprobante,nro_cuota

CREATE OR REPLACE VIEW VENTAS.V_VALIDESCOTIZA
AS
SELECT ID_VALIDES,DESCRIPCION,DIAS ID_ESTADO FROM VENTAS.TBL_TIEMPOVALIDES

CREATE OR REPLACE VIEW VENTAS.V_TIEMPOENTREGA
AS
SELECT ID_TIEMPO,DESCRIPCION,DIAS,ID_ESTADO FROM VENTAS.TBL_TIEMPOENTREGA

select *from ventas.tbl_direccion
select *from planillas.tbl_persona

   JOIN almacen.serie_producto ON facturacion.idfacturacion = serie_producto.idfacturacion
  WHERE facturacion.anulado = 'N'::bpchar;
 SELECT
  facturacion.idcliente,
    facturacion.idruta,
    ctas_xcobrar.idcuenta_xcobrar,
    (tipcomprobante.abreviatura::text || facturacion.nro_serie::text) || facturacion.nro_comprobante::text AS comprobante,
    tipcomprobante.idtipcomprobante,
    tipcomprobante.abreviatura,
    facturacion.nro_serie,
    facturacion.nro_comprobante,
    ( SELECT
                CASE
                    WHEN ctas_xcobrar.fecha_emicion IS NULL THEN '1111-11-11 00:00:00'::timestamp without time zone
                    ELSE ctas_xcobrar.fecha_emicion
                END AS fecha_emision) AS fecha_emision,
    ( SELECT
                CASE
                    WHEN ctas_xcobrar.fecha_caducidad IS NULL THEN '1111-11-11 00:00:00'::timestamp without time zone
                    ELSE ctas_xcobrar.fecha_caducidad
                END AS fecha_emision) AS fecha_caducidad,
    divisa.nom_abrevia,
    ctas_xcobrar.capital,
    ctas_xcobrar.amortizacion,
    ctas_xcobrar.capital - ctas_xcobrar.amortizacion + (( SELECT sum(cuota.monto_interes) AS sum
           FROM creditos.cuota
          WHERE cuota.idcuenta_xcobrar = ctas_xcobrar.idcuenta_xcobrar)) AS credito,
    ( SELECT
                CASE
                    WHEN (( SELECT sum(cuota.monto_cancelado) AS sum
                       FROM creditos.cuota
                      WHERE cuota.idcuenta_xcobrar = ctas_xcobrar.idcuenta_xcobrar)) IS NULL THEN 0::numeric
                    ELSE ( SELECT sum(cuota.monto_cancelado) AS sum
                       FROM creditos.cuota
                      WHERE cuota.idcuenta_xcobrar = ctas_xcobrar.idcuenta_xcobrar)
                END AS "case") AS pagos,
    ( SELECT
                CASE
                    WHEN (( SELECT sum(cuota.total_cuota - cuota.monto_cancelado) AS sum
                       FROM creditos.cuota
                      WHERE cuota.idcuenta_xcobrar = ctas_xcobrar.idcuenta_xcobrar)) IS NULL THEN 0::numeric
                    ELSE ( SELECT sum(cuota.total_cuota - cuota.monto_cancelado) AS sum
                       FROM creditos.cuota
                      WHERE cuota.idcuenta_xcobrar = ctas_xcobrar.idcuenta_xcobrar)
                END AS "case") AS saldo,
    facturacion.idformapago,
    ctas_xcobrar.periodo_pagos,
    ctas_xcobrar.tasa_interes,
    ctas_xcobrar.meses_pago_interes,
    ctas_xcobrar.capital - ctas_xcobrar.amortizacion AS total_pagar,
    ( SELECT cuota.fecha_vencimiento
           FROM creditos.cuota
          WHERE cuota.idcuenta_xcobrar = ctas_xcobrar.idcuenta_xcobrar
          ORDER BY cuota.nrocuota DESC
         LIMIT 1) AS fec_vencimiento,
    cliente.nro_documento,
    cliente.nombre AS cliente,
    dircli.direccion,
    distrito.nombre AS distrito,
    facturacion.idfacturacion,
        CASE
            WHEN facturacion.estado_credito = 'S'::bpchar THEN facturacion.total + (( SELECT sum(c.monto_interes) AS sum
               FROM creditos.ctas_xcobrar cc
          JOIN creditos.cuota c ON cc.idcuenta_xcobrar = c.idcuenta_xcobrar
         WHERE cc.idfacturacion = facturacion.idfacturacion))
            ELSE facturacion.total
        END AS total_facturacion,
    ( SELECT c.fecha_vencimiento
           FROM creditos.ctas_xcobrar cc
      JOIN creditos.cuota c ON cc.idcuenta_xcobrar = c.idcuenta_xcobrar
     WHERE cc.idfacturacion = facturacion.idfacturacion
     ORDER BY c.nrocuota DESC
    LIMIT 1) AS fec_vencimiento_credito,
    (((((('Nro.Chasis :  '::text || serie_producto.nro_chasis::text) || '   Nro .Motor : '::text) || serie_producto.nro_motor::text) || '   Modelo : '::text) || serie_producto.modelo::text) || '   Color : '::text) || serie_producto.color::text AS datos_prod,
    'Vendedor : '::text || ((((personal.nombres::text || ' '::text) || personal.ape_paterno::text) || ' '::text) || personal.ape_materno::text) AS vendedor,
    distrito.idprovincia,
    distrito.iddistrito,
    serie_producto.modelo,
    cliente.telefono
   FROM creditos.ctas_xcobrar
   JOIN ventas.facturacion ON ctas_xcobrar.idfacturacion = facturacion.idfacturacion
   JOIN tipcomprobante ON facturacion.idtipcomprobante = tipcomprobante.idtipcomprobante
   JOIN divisa ON facturacion.iddivisa = divisa.iddivisa
   JOIN ventas.dircli ON facturacion.idruta = dircli.idruta AND facturacion.idcliente::text = dircli.idcliente::text AND facturacion.iddircliente::bpchar = dircli.iddircliente::bpchar
   JOIN ventas.cliente ON dircli.idcliente::text = cliente.idcliente::text
   JOIN ventas.ruta ON dircli.idruta = ruta.idruta
   JOIN zona ON ruta.idzona = zona.idzona
   JOIN distrito ON zona.iddistrito = distrito.iddistrito
   JOIN personal.personal ON personal.idpersonal::text = facturacion.idpersonal::text
   JOIN almacen.serie_producto ON facturacion.idfacturacion = serie_producto.idfacturacion
  WHERE facturacion.anulado = 'N'::bpchar;

select *from ventas.V_CABCOTIZACION

select * from  VENTAS.V_CABCOTIZACION  where id_usuario='1'

CREATE OR REPLACE VIEW VENTAS.V_CABCOTIZACION
AS
SELECT (C.DESCRIPCION_CORTA || '' || CP.SERIE || '' || CP.NUMERO) AS DOCUMENTO,
CP.FECHA,
P.DOC_PERSONA,
P.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
TE.DESCRIPCION AS TIEMPO_ENTREGA,
TPV.DESCRIPCION AS VALIDES,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
U.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
CP.SERIE,
CP.NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
cp.atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_valides,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
'Pre-ventas'::text as preventa,
DIR.DIRECCION,
(cp.id_cotizapreventa::text || cp.id_sucursal::text) as idpk_cotizacion,
CP.ID_COMPROBANTE,
cp.id_tranzaccion,
SUC.ID_EMPRESA
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN ventas.tbl_tiempoentrega TE ON(TE.id_tiempo=CP.id_tiempo)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN ventas.tbl_tiempovalides TPV ON (TPV.id_valides=CP.id_valides)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
WHERE CP.COTIZACION=TRUE;

SELECT *FROM VENTAS.V_IMPPREVENTAS

CREATE OR REPLACE VIEW VENTAS.V_IMPPREVENTAS
AS
SELECT (CP.SERIE || '' || CP.NUMERO) AS nro_documento,
	CP.FECHA,
	P.DOC_PERSONA,
	CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN cp.dni_cliente::text
            ELSE btrim(P.doc_persona::text)
        END AS documento,
        CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN btrim(cp.nomape_cliente)
            ELSE btrim(p.nombre_razon::text)
        END AS cliente,
	(((((DIR.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS direccion,
	M.SIMBOLO AS MONEDA,
	TV.DESCRIPCION_LARGA AS TIPO_VENTA,
	CP.IMP_BRUTO,
	CP.IMP_DSCTO,
	CP.VALOR_VENTA,
	CP.IMP_IGV,
	CP.IMP_TOTAL,
	U.CAMP2 AS USUARIO,
	CP.SERIE,
	CP.NUMERO,
	CP.ID_VENDEDOR,
	cp.atencion_para,
	cp.glosa,
	'Pre-ventas'::text as preventa,
	(cp.id_cotizapreventa::text || cp.id_sucursal::text) as idpk_cotizacion,
	CP.ID_COMPROBANTE,
	cp.id_tranzaccion,
	SUC.ID_EMPRESA,
	df.cantidad,
	df.precio,
	pr.codigo ||'-' ||  CASE
	    WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
	    ELSE split_part(pr.descripcion_larga::text, ','::text, 1) || COALESCE(
	    CASE
		WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
		ELSE NULL::text
	    END, ''::text)
	END ||
	CASE
	    WHEN df.precio = 0::numeric THEN '
	TRANSFERENCIA GRATUITA'::text
	    ELSE ''::text
	END AS producto,
	df.imp_total AS tot_detalle,
	un.desc_corta AS unidad,
	split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
	df.ancho,
	df.largo,
	'SON :'::text || fu_numero_letras(cp.imp_total) AS tot_letras,
	f.descripcion_larga as familia
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
INNER JOIN ventas.tbl_detpreventacotiza df on cp.id_cotizapreventa=df.id_cotizapreventa and  cp.id_sucursal=df.id_sucursal
JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
JOIN almacen.tbl_producto pr ON pr.id_producto::text = dp.id_producto::text
JOIN almacen.tbl_familia f on   f.id_familia=pr.id_familia
JOIN almacen.tbl_unidad un ON un.id_unidadventa = df.id_unimedventa
 JOIN ventas.tbl_sector sec ON dir.id_sector = sec.id_sector
JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
WHERE preventa=true
order by f.id_familia asc
;

select *from almacen.tbl_familia

select *from ventas.V_PREVENTAPNL

select *from ventas.tbl_detpreventacotiza

SELECT *FROM   ventas.tbl_cotizacionpreventa CP

select *from VENTAS.V_items

CREATE OR REPLACE VIEW VENTAS.V_items
AS
SELECT
	id_cotizapreventa,
	id_producto,
	id_unidadventa,
	id_unidaditem,
	id_listaprecio,
	item,
	id_items,
	id_cateintem,
	cantidad,
	precio,
	ancho,
	largo,
	largo || ' X ' || ancho AS MEDIDA,
	area,
	id_estado,
	precio*area as total,
	id_facturacion,
	id_sucursalfac,
	id_ordeproduccion,
	COALESCE(id_retazo,0) as id_retazo,
	COALESCE(id_movimiento,0) AS id_movimiento
  FROM ventas.tbl_items;

select *from ventas.tbl_items

CREATE OR REPLACE VIEW VENTAS.V_CABCOTIZACIONPNL
AS
SELECT (C.DESCRIPCION_CORTA || '' || CP.SERIE || '' || CP.NUMERO) AS DOCUMENTO,
CP.FECHA,
PER.DOC_PERSONA,
PER.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
TE.DESCRIPCION AS TIEMPO_ENTREGA,
TPV.DESCRIPCION AS VALIDES,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
USS.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
CP.SERIE,
CP.NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
cp.atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_valides,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
'Pre-ventas'::text as preventa,
DIR.DIRECCION,
cp.id_cotizapreventa::text  as idpk_cotizacion,
CP.ID_COMPROBANTE,
cp.id_tranzaccion,
SUC.ID_EMPRESA,
dp.item,
dp.tipo,
dp.id_producto,
p.descripcion_larga as producto,
u.desc_corta as unidad,
dp.cantidad,
dp.lp,
dp.precio,
'0.00'::text as porcent_dscto,
dp.imp_total as imp_totaldet,
'+'::text as agregar,
dp.id_unidadventa,
dp.id_listaprecio,
dp.imp_total as subtotaldet,
'18.00'::text as porcent_igvdet,
dp.cantidad*dp.precio as imp_brutodet,
dp.cantidad as cantidad_edita,
p.servicio as ctrl_stock,
p.costounitario as costo_almdet,
dp.id_estado as id_estadodet,
dprod.val_unidad,
dprod.val_minimo,
dp.imp_igv AS imp_igvdet,
dp.imp_dscto as imp_dsctodet,
2 as op,
(dp.id_producto::text ||',' || dp.id_unidadventa::text ||',' || dp.id_listaprecio::text || ',' || dp.id_almacen) as id_old,
dp.id_almacen,
dp.id_unimedventa,
detp.val_unidad as valor_unidadventa,
CP.COTIZACION,
cp.preventa
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN ventas.tbl_detpreventacotiza dp ON (CP.id_cotizapreventa=DP.id_cotizapreventa)
inner join almacen.tbl_precio pre on (pre.id_producto=dp.id_producto and  pre.id_unidadventa=dp.id_unidadventa and  pre.id_listaprecio=dp.id_listaprecio)
inner join almacen.tbl_detproducto dprod on (dprod.id_producto=pre.id_producto and dp.id_unidadventa=pre.id_unidadventa and dprod.unidad_inventario=true)
inner join  almacen.tbl_producto p on (p.id_producto=dprod.id_producto)
inner join  almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unimedventa)
inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=dp.id_unimedventa)
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN ventas.tbl_tiempoentrega TE ON(TE.id_tiempo=CP.id_tiempo)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN ventas.tbl_tiempovalides TPV ON (TPV.id_valides=CP.id_valides)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO USS ON (USS.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL);

WHERE CP.COTIZACION=TRUE;

select  *from ventas.tbl_detpreventacotiza where id_cotizapreventa  in (select id_cotizapreventa from ventas.tbl_facturacion order by id_cotizapreventa asc)

select *from ventas.V_PREVENTAPNL

CREATE OR REPLACE VIEW VENTAS.V_PREVENTAPNL
AS
SELECT   CP.SERIE || '-' || CP.NUMERO AS DOCUMENTO,
CP.FECHA,
PER.DOC_PERSONA,
PER.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
USS.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
CP.SERIE,
CP.NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
cp.atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_valides,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
DIR.DIRECCION,
cp.id_cotizapreventa::text  as idpk_cotizacion,
CP.ID_COMPROBANTE,
cp.id_tranzaccion,
SUC.ID_EMPRESA,
dp.item,
dp.tipo,
dp.id_producto,
case when p.codigo='TXT-01' then dp.descripcion_linea ELSE  p.descripcion_larga END as producto,
u.desc_corta as unidad,
dp.cantidad,
dp.lp,
dp.precio,
'0.00'::text as porcent_dscto,
dp.imp_total as imp_totaldet,
'+'::text as agregar,
dp.id_unidadventa,
dp.id_listaprecio,
dp.imp_total as subtotaldet,
'18.00'::text as porcent_igvdet,
dp.cantidad*dp.precio as imp_brutodet,
dp.cantidad as cantidad_edita,
p.servicio as ctrl_stock,
p.costounitario as costo_almdet,
dp.id_estado as id_estadodet,
dprod.val_unidad,
dprod.val_minimo,
dp.imp_igv AS imp_igvdet,
dp.imp_dscto as imp_dsctodet,
2 as op,
(dp.id_producto::text ||',' || dp.id_unidadventa::text ||',' || dp.id_listaprecio::text || ',' || dp.id_almacen) as id_old,
dp.id_almacen,
dp.id_unimedventa,
dprod.val_unidad as valor_unidadventa,
CP.COTIZACION,
cp.preventa,
p.codigo,
TE.DESCRIPCION AS TIEMPO_ENTREGA,
TPV.DESCRIPCION AS VALIDES,
suc.direccion as direccion_sucursal,
suc.telefono,
suc.celular,
suc.email
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN ventas.tbl_detpreventacotiza dp ON (CP.id_cotizapreventa=DP.id_cotizapreventa and dp.id_estado=1)
inner join almacen.tbl_precio pre on (pre.id_producto=dp.id_producto and  pre.id_unidadventa=dp.id_unidadventa and  pre.id_listaprecio=dp.id_listaprecio and pre.id_estado=1)
inner join almacen.tbl_detproducto dprod on (dprod.id_producto=pre.id_producto and dprod.id_unidadventa=pre.id_unidadventa and dprod.id_estado=1)
inner join  almacen.tbl_producto p on (p.id_producto=dprod.id_producto)
inner join  almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN ventas.tbl_tiempoentrega TE ON(TE.id_tiempo=CP.id_tiempo)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN ventas.tbl_tiempovalides TPV ON (TPV.id_valides=CP.id_valides)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO USS ON (USS.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
order by dp.item asc

select *from almacen.tbl_existencia where id_producto in('654','665','622','646')

SELECT *FROM COMMON.TBL_SUCURSAL
select * from ventas.V_TIEMPOENTREGA
select * from ventas.V_VALIDESCOTIZA

select from ventas.tbl_sector
select * from ventas.v_zona_sector  where id_distrito = '220101'

select * from creditos.v_cuenta_corriente_clientes  where cliente ilike '%%'

select *from ventas.tbl_detpreventacotiza where  id_cotizapreventa=8334 and  id_sucursal=1 order by item

select *from ventas.tbl_direccion

SELECT nombre_razon::tsquery FROM PLANILLAS.TBL_PERSONA

SELECT *FROM VENTAS.TBL_DIRECCION

select *from ventas.tbl_detpreventacotiza dp

select id_facturacion from ventas.tbl_facturacion where numdoc_facturacion='0003323'

delete from ventas.tbl_facturacion where id_facturacion=13
select *from ventas.tbl_detfacturacion where id_facturacion=13

delete from ventas.tbl_detfacturacion  where id_facturacion=14

delete from  caja.tbl_movcaja where id_facturacion=13
delete from caja.tbl_detmovpago where id_movimcaja=12

select *from caja.tbl_movcaja where id_facturacion=13
select * from caja.tbl_detmovpago where id_movimcaja=13

select * from ventas.tbl_detpreventacotiza   where id_estado=1 and id_cotizapreventa::text || id_sucursal::text='1211'

select *from ventas.tbl_facturacion where id_cotizapreventa=121

select * from ventas.v_detcotizaprevente dp  where  dp.id_cotizapreventa::text='435'  and dp.id_producto='TXT-01'

select DF.ID_PRODUCTO, ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum)
 FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
where  f.id_cotizapreventa::text || f.id_sucursal::text='4351'  and f.id_estado=1
GROUP BY DF.ID_PRODUCTO

SELECT *FROM ventas.tbl_detpreventacotiza WHERE id_cotizapreventa::text='435'

select * from ventas.v_editfacturacion  where (id_facturacion::text || id_sucursal::text)='6981'

/*

CREATE OR REPLACE VIEW ventas.v_detcotizaprevente
 AS
 SELECT dp.item,
    dp.tipo,
    dp.id_producto,
        CASE
            WHEN btrim(dp.id_producto::text) = 'TXT-01'::text THEN dp.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) || ','::text) || COALESCE(
            CASE
                WHEN dp.ancho > 0::numeric AND dp.largo > 0::numeric THEN split_part(dp.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END AS producto,
    u.desc_corta AS unidad,
    dp.cantidad,
    dp.lp,
    dp.precio,
    '0.00'::text AS porcent_dscto,
    dp.imp_total,
    '+'::text AS agregar,
    dp.id_unidadventa,
    dp.id_listaprecio,
    dp.imp_total AS subtotal,
    '18.00'::text AS porcent_igv,
    dp.cantidad * dp.precio AS imp_bruto,
    dp.cantidad AS cantidad_edita,
    p.servicio AS ctrl_stock,
    p.costounitario AS costo_alm,
    dp.id_estado,
    dprod.val_unidad,
    dprod.val_minimo,
    dp.imp_igv,
    dp.imp_dscto,
    2 AS op,
    (((((dp.id_producto::text || ','::text) || dp.id_unidadventa::text) || ','::text) || dp.id_listaprecio::text) || ','::text) || COALESCE(dp.id_almacen,0) AS id_old,
    dp.id_cotizapreventa,
    dp.id_sucursal,
    dp.id_cotizapreventa::text || dp.id_sucursal::text AS id_cotizacion,
    dp.id_almacen,
    dp.id_unimedventa,
    detp.val_unidad AS valor_unidadventa,
    dp.ancho,
    dp.largo,
    dp.cantidad -
        CASE
            WHEN dp.id_producto::text <> 'TXT-01'::text THEN COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
          JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
         WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND dp.item = df.item), 0::numeric)
            ELSE COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
          JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
         WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad AND dp.item = df.item), 0::numeric)
        END AS cantidad_pendiente
   FROM ventas.tbl_detpreventacotiza dp
   JOIN almacen.tbl_precio pre ON pre.id_producto::text = dp.id_producto::text AND pre.id_unidadventa = dp.id_unidadventa AND pre.id_listaprecio = dp.id_listaprecio AND dp.id_estado = 1
   JOIN almacen.tbl_detproducto dprod ON dprod.id_producto::text = pre.id_producto::text AND dprod.id_unidadventa = pre.id_unidadventa AND dprod.unidad_inventario = true
   JOIN almacen.tbl_producto p ON p.id_producto::text = dprod.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unimedventa
   JOIN almacen.tbl_detproducto detp ON detp.id_producto::text = dp.id_producto::text AND detp.id_unidadventa = dp.id_unimedventa
  ORDER BY dp.item;

*/

select *from ventas.v_detcotizaprevente

select * from ventas.v_detcotizaprevente   where id_cotizapreventa=2296 and  id_sucursal=1

CREATE OR REPLACE VIEW ventas.v_detcotizaprevente AS
 SELECT dp.item,
    dp.tipo,
    dp.id_producto,
        CASE
            WHEN btrim(p.codigo::text) = 'TXT-01'::text THEN dp.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) || ','::text) || COALESCE(
            CASE
                WHEN dp.ancho > 0::numeric AND dp.largo > 0::numeric THEN split_part(dp.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END AS producto,
    u.desc_corta AS unidad,
    dp.cantidad,
    dp.lp,
    dp.precio,
    '0.00'::text AS porcent_dscto,
    dp.imp_total,
    '+'::text AS agregar,
    dp.id_unidadventa,
    dp.id_listaprecio,
    dp.imp_total AS subtotal,
    '0.00'::text AS porcent_igv,
    dp.cantidad * dp.precio AS imp_bruto,
    dp.cantidad AS cantidad_edita,
    p.servicio AS ctrl_stock,
    pre.costo AS costo_alm,  --select *from almacen.tbl_precio where id_producto='20'
    dp.id_estado,
    dprod.val_unidad,
    dprod.val_minimo,
    dp.imp_igv,
    dp.imp_dscto,
    2 AS op,
    COALESCE((((((dp.id_producto::text || ','::text) || dp.id_unidadventa::text) || ','::text) || dp.id_listaprecio::text) || ','::text) || COALESCE(dp.id_almacen,1)::TEXT,'') AS id_old,
    dp.id_cotizapreventa,
    dp.id_sucursal,
    dp.id_cotizapreventa::text || dp.id_sucursal::text AS id_cotizacion,
    dp.id_almacen,
    dp.id_unimedventa,
    COALESCE(detp.val_unidad, 1::numeric)::numeric(20,4) AS valor_unidadventa,
    dp.ancho,
    dp.largo,
    dp.cantidad -
        CASE
            WHEN p.codigo::text <> 'TXT-01'::text THEN COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND dp.item = df.item), 0::numeric)
            ELSE COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad AND dp.item = df.item), 0::numeric)
        END AS cantidad_pendiente,
    detp.id_tipoventa,
    p.sujet_percepcion,
    COALESCE(dp.porcent_percepcion, 0::numeric) AS porcent_percepcion,
    COALESCE(dp.imp_percepcion, 0::numeric) AS imp_percepcion,
        CASE
            WHEN dp.porcent_percepcion > 0::numeric THEN dp.precio / (1::numeric + dp.porcent_percepcion / 100::numeric)
            ELSE dp.precio
        END AS presinprecep,
        CASE
            WHEN dp.porcent_percepcion > 0::numeric THEN dp.precio / (1::numeric + dp.porcent_percepcion / 100::numeric)
            ELSE dp.precio
        END * dp.cantidad AS totsinpercep,
    p.gestiona_series,
    COALESCE(dp.id_retazo, 0::bigint) AS id_retazo,
    dprod.ctl_stock
   FROM ventas.tbl_detpreventacotiza dp
     JOIN almacen.tbl_precio pre ON pre.id_producto::text = dp.id_producto::text AND pre.id_unidadventa = dp.id_unidadventa AND pre.id_listaprecio = dp.id_listaprecio AND dp.id_estado = 1
     JOIN almacen.tbl_detproducto dprod ON dprod.id_producto::text = pre.id_producto::text AND dprod.id_unidadventa = pre.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dprod.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unimedventa
     LEFT JOIN almacen.tbl_detproducto detp ON detp.id_producto::text = dp.id_producto::text AND detp.id_unidadventa = dp.id_unimedventa
  ORDER BY dp.item;

CREATE OR REPLACE VIEW ventas.v_detallecomanda
AS
 SELECT dp.item,
    dp.tipo,
    dp.id_producto,
        CASE
            WHEN btrim(dp.id_producto::text) = 'TXT-01'::text THEN dp.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) || ','::text) || COALESCE(
            CASE
                WHEN dp.ancho > 0::numeric AND dp.largo > 0::numeric THEN split_part(dp.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END AS producto,
    u.desc_corta AS unidad,
    dp.cantidad,
    dp.lp,
    dp.precio,
    '0.00'::text AS porcent_dscto,
    dp.imp_total,
    '+'::text AS agregar,
    dp.id_unidadventa,
    dp.id_listaprecio,
    dp.imp_total AS subtotal,
    '18.00'::text AS porcent_igv,
    dp.cantidad * dp.precio AS imp_bruto,
    dp.cantidad AS cantidad_edita,
    p.servicio AS ctrl_stock,
    p.costounitario AS costo_alm,
    dp.id_estado,
    dprod.val_unidad,
    dprod.val_minimo,
    dp.imp_igv,
    dp.imp_dscto,
    2 AS op,
    (((((dp.id_producto::text || ','::text) || dp.id_unidadventa::text) || ','::text) || dp.id_listaprecio::text) || ','::text) || dp.id_almacen AS id_old,
    dp.id_cotizapreventa,
    dp.id_sucursal,
    dp.id_cotizapreventa::text || dp.id_sucursal::text AS id_cotizacion,
    dp.id_almacen,
    dp.id_unimedventa,
    COALESCE(detp.val_unidad, 1::numeric)::numeric(20,4) AS valor_unidadventa,
    dp.ancho,
    dp.largo,
    dp.cantidad -
        CASE
            WHEN dp.id_producto::text <> 'TXT-01'::text THEN COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text), 0::numeric)
            ELSE COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad), 0::numeric)
        END AS cantidad_pendiente,
        detp.ID_TIPOVENTA,
	p.sujet_percepcion,
	COALESCE(dp.porcent_percepcion,0) as porcent_percepcion,
	COALESCE(dp.imp_percepcion,0) as imp_percepcion,
	case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end  as presinprecep,
	((case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end) * dp.cantidad)  as totsinpercep,
	p.gestiona_series,
	COALESCE(id_retazo,0) as id_retazo
   FROM ventas.tbl_detpreventacotiza dp
     JOIN almacen.tbl_precio pre ON pre.id_producto::text = dp.id_producto::text AND pre.id_unidadventa = dp.id_unidadventa AND pre.id_listaprecio = dp.id_listaprecio AND dp.id_estado = 1
     JOIN almacen.tbl_detproducto dprod ON dprod.id_producto::text = pre.id_producto::text AND dprod.id_unidadventa = pre.id_unidadventa --AND dprod.unidad_inventario = true
     JOIN almacen.tbl_producto p ON p.id_producto::text = dprod.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unimedventa
     LEFT JOIN almacen.tbl_detproducto detp ON detp.id_producto::text = dp.id_producto::text AND detp.id_unidadventa = dp.id_unimedventa
  ORDER BY dp.item;

select *from ventas.tbl_detpreventacotiza dp

select *
from
ventas.tbl_detpreventacotiza dp
inner join almacen.tbl_precio pre on (pre.id_producto=dp.id_producto and  pre.id_unidadventa=dp.id_unidadventa and  pre.id_listaprecio=dp.id_listaprecio)
inner join almacen.tbl_detproducto dprod on (dprod.id_producto=pre.id_producto and dprod.id_unidadventa=pre.id_unidadventa and dprod.unidad_inventario=true)
inner join  almacen.tbl_producto p on (p.id_producto=dprod.id_producto)
inner join  almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unimedventa)
inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=dp.id_unimedventa)
--where id_cotizapreventa=15 and  id_sucursal=1

select *from ventas.tbl_cotizacionpreventa  where id_cotizapreventa=15 and  id_sucursal=1

select * from ventas.v_impdocventas   where  id_facturacion::text ||  id_sucursal::text='11'

select *from ventas.tbl_detfacturacion

select * from ventas.v_detcotizaprevente   where id_cotizapreventa::text || id_sucursal::text='21'

select *from ventas.tbl_detpreventacotiza dp
select *from almacen.tbl_detproducto

delete from ventas.tbl_cotizacionpreventa
delete from ventas.tbl_detpreventacotiza;

select *from ventas.V_CABPREVENTA

select * from ventas.V_CABPREVENTA   where doc_persona || cliente||documento ilike '%%' and id_empresa=1  and (FECHA::date>= '01/07/2018' and FECHA::date<= '29/07/2018')

delete from caja.tbl_detmovpago;
delete from caja.tbl_movcaja;
delete from ventas.tbl_detfacturacion;
delete from ventas.tbl_facturacion;

select *from  VENTAS.V_CABPREVENTA

CREATE OR REPLACE  VIEW VENTAS.V_CABPREVENTA
AS
SELECT (COALESCE(C.DESCRIPCION_CORTA,'') || '' || COALESCE(CP.SERIE,'') || '' || COALESCE(CP.NUMERO,'')) AS DOCUMENTO,
CP.FECHA,
case when trim(cp.id_cliente)='000' then cp.DNI_CLIENTE else  trim(P.DOC_PERSONA) end as DOC_PERSONA ,
CASE WHEN trim(cp.id_cliente)='000' then trim(cp.NOMAPE_CLIENTE) else  trim(P.NOMBRE_RAZON)  end AS CLIENTE,
M.SIMBOLO AS MONEDA,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
U.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
lpad(CP.SERIE,4,'0')::CHAR(4) AS SERIE,
COALESCE(CP.NUMERO,'0') as NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
COALESCE(cp.atencion_para,'') AS atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
COALESCE((CTC.DESCRIPCION_CORTA || '' ||cot.SERIE || '' || Cot.NUMERO),'S/C') as cotizacion,
(( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
      JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa=dp.id_cotizapreventa and p.id_sucursal=dp.id_sucursal
     WHERE p.id_cotizapreventa = cp.id_cotizapreventa and p.id_sucursal=cp.id_sucursal and dp.id_estado=1)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE f.id_cotizapreventa = cp.id_cotizapreventa and f.id_sucursalpreventa=cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente,
CP.SERIE::integer as serie_prev,
CP.NUMERO::integer  as numero_prev   ,
SUC.ID_EMPRESA,
COALESCE(cp.TIPDOCUMENTO,'') as TIPDOCUMENTO,
cp.id_comprobante,
cp.BLOQUEAR_ENCAJA,
--dir.direccion,
 CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN cp.direccion_cliente::text
            ELSE btrim(dir.direccion::text)
        END AS direccion,
COALESCE(cp.imp_percepcion,0)::numeric(20,4) as imp_percepcion,
COALESCE(cp.imp_neto,0)::numeric(20,4) as imp_neto,
COALESCE(ms.nro_mesa,'') as mesa,
COALESCE(CP.TELEFONO_CLI,'') as TELEFONO_CLI,
ms.id_mesa,
mc.id_mesacomanda,
cp.orden_compra
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
LEFT JOIN restaurant.tbl_comandamesa MC ON MC.id_cotizapreventa=CP.id_cotizapreventa
LEFT JOIN restaurant.tbl_mesa ms on ms.id_mesa=mc.id_mesa
LEFT JOIN ventas.tbl_cotizacionpreventa COT ON (CP.id_cotizacion=COT.id_cotizapreventa)
LEFT JOIN COMMON.TBL_COMPROBANTE CTC ON(CTC.ID_COMPROBANTE=COT.ID_COMPROBANTE)
where cp.preventa=true
order by cp.serie::integer desc,cp.numero::integer desc;

select * from creditos.tbl_detpagocuota   where  id_cuotas=4567 and id_estado=1
union
select * from creditos.tbl_detpagocuota   where  id_cuotas=4566 and id_estado=1

select * from creditos.v_cuotas_x_cobrar   where id_credito::text || id_sucursal_credito::text in('45611')

select *from restaurant.tbl_comandamesa

select *from ventas.V_CABPREVENTA

select *from VENTAS.V_IMP_CABPREVENTA_TICKET

CREATE OR REPLACE VIEW ventas.v_imp_cabpreventa_ticket
AS
 SELECT (((COALESCE(c.descripcion_corta, ''::bpchar)::text || ''::text) || COALESCE(cp.serie, ''::bpchar)::text) || ''::text) || COALESCE(cp.numero, ''::bpchar)::text AS documento,
    cp.fecha,
        CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN cp.dni_cliente::text
            ELSE btrim(p.doc_persona::text)
        END AS doc_persona,
        CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN btrim(cp.nomape_cliente)
            ELSE btrim(p.nombre_razon::text)
        END AS cliente,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    cp.imp_dscto AS imp_dsctocab,
    cp.valor_venta,
    cp.imp_igv,
    cp.imp_total,
    u.camp2 AS usuario,
    e.des_estado AS estado,
    lpad(cp.serie::text, 4, '0'::text)::character(4) AS serie,
    COALESCE(cp.numero, '0'::bpchar) AS numero,
    vend.nombre_razon AS vendedor,
    cp.glosa,
    COALESCE((((ctc.descripcion_corta::text || ''::text) || cot.serie::text) || ''::text) || cot.numero::text, 'S/C'::text) AS cotizacion,
    cp.serie::integer AS serie_prev,
    cp.numero::integer AS numero_prev,
    suc.id_empresa,
    COALESCE(cp.tipdocumento, ''::text) AS tipdocumento,
     CASE
            WHEN btrim(cp.id_cliente::text) = '000'::text THEN cp.direccion_cliente::text
            ELSE btrim(dir.direccion::text)
        END AS direccion,
    --dir.direccion,
    COALESCE(cp.imp_percepcion, 0::numeric)::numeric(20,4) AS imp_percepcion,
    COALESCE(cp.imp_neto, 0::numeric)::numeric(20,4) AS imp_neto,
    cp.id_sucursal,
    dp.item,
    dp.tipo,
    dp.id_producto,
        CASE
            WHEN btrim(dp.id_producto::text) = 'TXT-01'::text THEN dp.descripcion_linea
            ELSE (split_part(pr.descripcion_larga::text, ','::text, 1) || ','::text) || COALESCE(
            CASE
                WHEN dp.ancho > 0::numeric AND dp.largo > 0::numeric THEN split_part(dp.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END AS producto,
    un.desc_corta AS unidad,
    dp.cantidad,
    dp.precio,
    dp.imp_total AS imptotal_det,
    dp.imp_total AS subtotal_det,
    dp.cantidad * dp.precio AS impbruto_dscto,
    dp.cantidad AS cantidad_edita,
    dp.imp_igv AS impigvdet,
    dp.imp_dscto AS impdscto_det,
    dp.cantidad -
        CASE
            WHEN dp.id_producto::text <> 'TXT-01'::text THEN COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND dp.item = df.item), 0::numeric)
            ELSE COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad AND dp.item = df.item), 0::numeric)
        END AS cantidad_pendiente,
    detp.id_tipoventa,
    pr.sujet_percepcion,
    COALESCE(dp.porcent_percepcion, 0::numeric) AS porcent_percepcion,
    COALESCE(dp.imp_percepcion, 0::numeric) AS imp_percepcion_det,
        CASE
            WHEN dp.porcent_percepcion > 0::numeric THEN dp.precio / (1::numeric + dp.porcent_percepcion / 100::numeric)
            ELSE dp.precio
        END AS presinprecep,
        CASE
            WHEN dp.porcent_percepcion > 0::numeric THEN dp.precio / (1::numeric + dp.porcent_percepcion / 100::numeric)
            ELSE dp.precio
        END * dp.cantidad AS totsinpercep,
    suc.direccion AS direccion_suc,
    suc.telefono,
    suc.celular,
    cp.id_cotizapreventa,
    z.mesa,
    cp.telefono_cli,
    '' as obs_det
   FROM ventas.tbl_cotizacionpreventa cp
     JOIN common.tbl_comprobante c ON c.id_comprobante = cp.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = cp.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = cp.id_moneda
     JOIN common.tbl_estado e ON e.id_estado = cp.id_estado
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = cp.id_direccion AND dir.id_persona::text = cp.id_cliente::text
     JOIN planillas.tbl_persona p ON p.id_persona::text = dir.id_persona::text
     JOIN seguridad.tbl_usuario u ON u.id_usuario = cp.id_usuarior
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = cp.id_vendedor::text
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = cp.id_sucursal
     JOIN ventas.tbl_detpreventacotiza dp ON dp.id_cotizapreventa = cp.id_cotizapreventa
     JOIN almacen.tbl_precio pre ON pre.id_producto::text = dp.id_producto::text AND pre.id_unidadventa = dp.id_unidadventa AND pre.id_listaprecio = dp.id_listaprecio AND dp.id_estado = 1
     JOIN almacen.tbl_detproducto dprod ON dprod.id_producto::text = pre.id_producto::text AND dprod.id_unidadventa = pre.id_unidadventa
     JOIN almacen.tbl_producto pr ON pr.id_producto::text = dprod.id_producto::text
     JOIN almacen.tbl_unidad un ON un.id_unidadventa = dp.id_unimedventa
     LEFT JOIN almacen.tbl_detproducto detp ON detp.id_producto::text = dp.id_producto::text AND detp.id_unidadventa = dp.id_unimedventa
     LEFT JOIN ventas.tbl_cotizacionpreventa cot ON cp.id_cotizacion = cot.id_cotizapreventa
     LEFT JOIN common.tbl_comprobante ctc ON ctc.id_comprobante = cot.id_comprobante
     LEFT JOIN(
	select
	mc.id_cotizapreventa,
	mc.id_mesa,
	MS.nro_mesa as mesa,
	mc.nombre_union
	 FROM restaurant.tbl_comandamesa mc
	 INNER JOIN RESTAURANT.TBL_MESA MS ON MS.ID_MESA=MC.ID_MESA
     ) as z on z.id_cotizapreventa=cp.id_cotizapreventa

  WHERE cp.preventa = true AND NOT (EXISTS ( SELECT 1
           FROM ventas.tbl_facturacion f
             JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
          WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad))
  ORDER BY (cp.serie::integer) DESC, (cp.numero::integer) DESC, dp.item;

create or replace function restaurant.fn_getMesa()

select *from ventas.v_detcotizaprevente_imp

select *from COMMON.TBL_SUCURSAL

CREATE OR REPLACE VIEW ventas.v_detcotizaprevente_imp
AS
 SELECT
    dp.item,
    dp.tipo,
    dp.id_producto,
        CASE
            WHEN btrim(dp.id_producto::text) = 'TXT-01'::text THEN dp.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) || ','::text) || COALESCE(
            CASE
                WHEN dp.ancho > 0::numeric AND dp.largo > 0::numeric THEN split_part(dp.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END AS producto,
    u.desc_corta AS unidad,
    dp.cantidad,
    dp.lp,
    dp.precio,
    '0.00'::text AS porcent_dscto,
    dp.imp_total,
    '+'::text AS agregar,
    dp.id_unidadventa,
    dp.id_listaprecio,
    dp.imp_total AS subtotal,
    case when dp.imp_igv >0 then '18.00'::text else '0.00' end AS porcent_igv,
    dp.cantidad * dp.precio AS imp_bruto,
    dp.cantidad AS cantidad_edita,
    p.servicio AS ctrl_stock,
    p.costounitario AS costo_alm,
    dp.id_estado,
    dprod.val_unidad,
    dprod.val_minimo,
    dp.imp_igv,
    dp.imp_dscto,
    2 AS op,
    (((((dp.id_producto::text || ','::text) || dp.id_unidadventa::text) || ','::text) || dp.id_listaprecio::text) || ','::text) || dp.id_almacen AS id_old,
    dp.id_cotizapreventa,
    dp.id_sucursal,
    dp.id_cotizapreventa::text || dp.id_sucursal::text AS id_cotizacion,
    dp.id_almacen,
    dp.id_unimedventa,
    COALESCE(detp.val_unidad, 1::numeric)::numeric(20,4) AS valor_unidadventa,
    dp.ancho,
    dp.largo,
    dp.cantidad -
        CASE
            WHEN dp.id_producto::text <> 'TXT-01'::text THEN COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND dp.item = df.item), 0::numeric)
            ELSE COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad AND dp.item = df.item), 0::numeric)
        END AS cantidad_pendiente,
        detp.ID_TIPOVENTA,
	p.sujet_percepcion,
	COALESCE(dp.porcent_percepcion,0) as porcent_percepcion,
	COALESCE(dp.imp_percepcion,0) as imp_percepcion,
	case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end  as presinprecep,
	((case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end) * dp.cantidad)  as totsinpercep
   FROM ventas.tbl_detpreventacotiza dp
     JOIN almacen.tbl_precio pre ON pre.id_producto::text = dp.id_producto::text AND pre.id_unidadventa = dp.id_unidadventa AND pre.id_listaprecio = dp.id_listaprecio AND dp.id_estado = 1
     JOIN almacen.tbl_detproducto dprod ON dprod.id_producto::text = pre.id_producto::text AND dprod.id_unidadventa = pre.id_unidadventa --AND dprod.unidad_inventario = true
     JOIN almacen.tbl_producto p ON p.id_producto::text = dprod.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unimedventa
     LEFT JOIN almacen.tbl_detproducto detp ON detp.id_producto::text = dp.id_producto::text AND detp.id_unidadventa = dp.id_unimedventa
     where not exists(select 1 FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad)
  ORDER BY dp.item;

CREATE OR REPLACE VIEW ventas.v_detcotizaprevente_solicitud_credito
AS
 SELECT
    dp.item,
    dp.tipo,
    dp.id_producto,
        CASE
            WHEN btrim(dp.id_producto::text) = 'TXT-01'::text THEN dp.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) || ','::text) || COALESCE(
            CASE
                WHEN dp.ancho > 0::numeric AND dp.largo > 0::numeric THEN split_part(dp.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END AS producto,
    u.desc_corta AS unidad,
    dp.cantidad,
    dp.lp,
    dp.precio,
    '0.00'::text AS porcent_dscto,
    dp.imp_total,
    '+'::text AS agregar,
    dp.id_unidadventa,
    dp.id_listaprecio,
    dp.imp_total AS subtotal,
    case when dp.imp_igv >0 then '18.00'::text else '0.00' end AS porcent_igv,
    dp.cantidad * dp.precio AS imp_bruto,
    dp.cantidad AS cantidad_edita,
    p.servicio AS ctrl_stock,
    p.costounitario AS costo_alm,
    dp.id_estado,
    dprod.val_unidad,
    dprod.val_minimo,
    dp.imp_igv,
    dp.imp_dscto,
    2 AS op,
    (((((dp.id_producto::text || ','::text) || dp.id_unidadventa::text) || ','::text) || dp.id_listaprecio::text) || ','::text) || dp.id_almacen AS id_old,
    dp.id_cotizapreventa,
    dp.id_sucursal,
    dp.id_cotizapreventa::text || dp.id_sucursal::text AS id_cotizacion,
    dp.id_almacen,
    dp.id_unimedventa,
    COALESCE(detp.val_unidad, 1::numeric)::numeric(20,4) AS valor_unidadventa,
    dp.ancho,
    dp.largo,
    dp.cantidad -
        CASE
            WHEN dp.id_producto::text <> 'TXT-01'::text THEN COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND dp.item = df.item), 0::numeric)
            ELSE COALESCE(( SELECT ( SELECT
                            CASE
                                WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                                ELSE sum(df.cantidad)
                            END AS sum) AS sum
               FROM ventas.tbl_facturacion f
                 JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND f.id_estado = 1 AND df.id_estado = 1
              WHERE dp.id_cotizapreventa = f.id_cotizapreventa AND dp.id_sucursal = f.id_sucursalpreventa AND dp.id_producto::text = df.id_producto::text AND df.cantidad = dp.cantidad AND dp.item = df.item), 0::numeric)
        END AS cantidad_pendiente,
        detp.ID_TIPOVENTA,
	p.sujet_percepcion,
	COALESCE(dp.porcent_percepcion,0) as porcent_percepcion,
	COALESCE(dp.imp_percepcion,0) as imp_percepcion,
	case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end  as presinprecep,
	((case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end) * dp.cantidad)  as totsinpercep
   FROM ventas.tbl_detpreventacotiza dp
     JOIN almacen.tbl_precio pre ON pre.id_producto::text = dp.id_producto::text AND pre.id_unidadventa = dp.id_unidadventa AND pre.id_listaprecio = dp.id_listaprecio AND dp.id_estado = 1
     JOIN almacen.tbl_detproducto dprod ON dprod.id_producto::text = pre.id_producto::text AND dprod.id_unidadventa = pre.id_unidadventa --AND dprod.unidad_inventario = true
     JOIN almacen.tbl_producto p ON p.id_producto::text = dprod.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unimedventa
     LEFT JOIN almacen.tbl_detproducto detp ON detp.id_producto::text = dp.id_producto::text AND detp.id_unidadventa = dp.id_unimedventa
  ORDER BY dp.item;

CREATE OR REPLACE  VIEW VENTAS.V_PEDIDOSPENDIENTESFACTURACION
AS
SELECT (COALESCE(C.DESCRIPCION_CORTA,'') || '' || COALESCE(CP.SERIE,'') || '' || COALESCE(CP.NUMERO,'')) AS DOCUMENTO,
CP.FECHA,
case when trim(cp.id_cliente)='000' then cp.DNI_CLIENTE else  trim(P.DOC_PERSONA) end as DOC_PERSONA ,
CASE WHEN trim(cp.id_cliente)='000' then trim(cp.NOMAPE_CLIENTE) else  trim(P.NOMBRE_RAZON)  end AS CLIENTE,
M.SIMBOLO AS MONEDA,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
U.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
lpad(CP.SERIE,4,'0')::CHAR(4) AS SERIE,
COALESCE(CP.NUMERO,'0') as NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
COALESCE(cp.atencion_para,'') AS atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
COALESCE((CTC.DESCRIPCION_CORTA || '' ||cot.SERIE || '' || Cot.NUMERO),'S/C') as cotizacion,
(( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
      JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa=dp.id_cotizapreventa and p.id_sucursal=dp.id_sucursal
     WHERE p.id_cotizapreventa = cp.id_cotizapreventa and p.id_sucursal=cp.id_sucursal and dp.id_estado=1)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE f.id_cotizapreventa = cp.id_cotizapreventa and f.id_sucursalpreventa=cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente,
CP.SERIE::integer as serie_prev,
CP.NUMERO::integer  as numero_prev   ,
SUC.ID_EMPRESA,
COALESCE(cp.TIPDOCUMENTO,'') as TIPDOCUMENTO,
cp.id_comprobante,
cp.BLOQUEAR_ENCAJA,
dir.direccion,
Z.zona,
DIS.distrito,
COALESCE(tr.id_transportista::text,'') as id_transportista,
COALESCE(chofer.nombre_razon,'') as chofer
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN ventas.tbl_sector SEC ON(SEC.ID_SECTOR=DIR.ID_SECTOR)
INNER JOIN ventas.tbl_zona Z ON (Z.ID_ZONA=SEC.ID_ZONA)
INNER JOIN COMMON.TBL_DISTRITO DIS ON(DIS.id_distrito=Z.id_distrito)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
left join ventas.tbl_transportista tr on tr.id_transportista=cp.id_transportista
left JOIN PLANILLAS.TBL_PERSONA chofer ON (chofer.id_persona=tr.id_persona)
LEFT JOIN ventas.tbl_cotizacionpreventa COT ON (CP.id_cotizacion=COT.id_cotizapreventa)
LEFT JOIN COMMON.TBL_COMPROBANTE CTC ON(CTC.ID_COMPROBANTE=COT.ID_COMPROBANTE)
where cp.preventa=true
order by cp.serie::integer desc,cp.numero::integer desc;

select *from ventas.tbl_cotizacionpreventa
select *from planillas.tbl_persona
select *from ventas.tbl_transportista

SELECT
(( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
      JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa=dp.id_cotizapreventa and p.id_sucursal=dp.id_sucursal
     WHERE p.id_cotizapreventa = cp.id_cotizapreventa and p.id_sucursal=cp.id_sucursal and dp.id_estado=1)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE f.id_cotizapreventa = cp.id_cotizapreventa and f.id_sucursalpreventa=cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente
FROM VENTAS.tbl_cotizacionpreventa CP

select * from ventas.v_detcotizaprevente   where id_estado=1 and id_cotizapreventa::text || id_sucursal::text='6661' and cantidad_pendiente>0 limit 6

select * from ventas.V_CABPREVENTA   where id_empresa=1  and BLOQUEAR_ENCAJA =false and COALESCE(documento,'') || COALESCE(doc_persona,'') || COALESCE(cliente,'') ilike '%luis%' and cantidad_pendiente>0

select * FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=CP.ID_SUCURSAL)
LEFT JOIN ventas.tbl_cotizacionpreventa COT ON (CP.id_cotizacion=COT.id_cotizapreventa)
LEFT JOIN COMMON.TBL_COMPROBANTE CTC ON(CTC.ID_COMPROBANTE=COT.ID_COMPROBANTE)
where cp.preventa=true
order by cp.serie::integer desc,cp.numero::integer desc limit 100;

select * from ventas.V_CABPREVENTA   where cantidad_pendiente>0

CREATE  INDEX XIF1TBL_PROVINCIA ON ventas.tbl_cotizacionpreventa
(ID_ESTADO   ASC);

update ventas.tbl_cotizacionpreventa SET TIPDOCUMENTO='BVT'

select * from ventas.V_CABPREVENTA   where SERIE || '-' || NUMERO='0001-0000014'

select *from ventas.v_listar_cabecera_facturacion

select *from ventas.v_detpreventefacturacion limit 10

create or replace view ventas.v_detpreventefacturacion
as
select
dp.item,
dp.tipo,
dp.id_producto,
p.descripcion_larga as producto,
u.desc_corta as unidad,
COALESCE(dp.cantidad,0) -  COALESCE(((SELECT sum(COALESCE(df.cantidad,0))
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE df.id_unidadventa = dp.id_unidadventa AND df.id_producto = dp.id_producto AND f.id_cotizapreventa = dp.id_cotizapreventa and  f.id_sucursalpreventa=dp.id_sucursal)),0) AS cantidad,
dp.lp,
dp.precio,
'0.00'::text as porcent_dscto,
dp.imp_total,
'+'::text as agregar,
dp.id_unidadventa,
dp.id_listaprecio,
dp.imp_total as subtotal,
'18.00'::text as porcent_igv,
dp.cantidad*dp.precio as imp_bruto,
dp.cantidad as cantidad_edita,
p.servicio as ctrl_stock,
p.costounitario as costo_alm,
dp.id_estado,
dprod.val_unidad,
dprod.val_minimo,
dp.imp_igv,
dp.imp_dscto,
2 as op,
(dp.id_producto::text ||',' || dp.id_unidadventa::text ||',' || dp.id_listaprecio::text) as id_old,
dp.id_cotizapreventa,
dp.id_sucursal,
(dp.id_cotizapreventa::text || dp.id_sucursal::text) id_cotizacion,

detp.id_unidadventa as idunimedcontrolventa,
detp.val_unidad as val_controlventa,
dp.ancho,
dp.largo,
p.codigo,
p.sujet_percepcion,
COALESCE(dp.porcent_percepcion,0) as porcent_percepcion,
COALESCE(dp.imp_percepcion,0) as imp_percepcion,
case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end  as presinprecep,
((case when dp.porcent_percepcion>0 then dp.precio/(1+dp.porcent_percepcion/100) else dp.precio end) * dp.cantidad)  as totsinpercep
from
ventas.tbl_detpreventacotiza dp
inner join almacen.tbl_precio pre on (pre.id_producto=dp.id_producto and  pre.id_unidadventa=dp.id_unidadventa and  pre.id_listaprecio=dp.id_listaprecio)
inner join almacen.tbl_detproducto dprod on (dprod.id_producto=pre.id_producto and dp.id_unidadventa=pre.id_unidadventa)
inner join  almacen.tbl_producto p on (p.id_producto=dprod.id_producto)
inner join  almacen.tbl_unidad u on (u.id_unidadventa=pre.id_unidadventa)
inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=dp.id_unimedventa)
order by dp.item asc

CREATE OR REPLACE VIEW VENTAS.V_CABPREVENTA_FACTURACION
AS
SELECT (C.DESCRIPCION_CORTA || '' || CP.SERIE || '' || CP.NUMERO) AS DOCUMENTO,
CP.FECHA,
P.DOC_PERSONA,
P.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
CP.IMP_BRUTO,
CP.IMP_DSCTO,
CP.VALOR_VENTA,
CP.IMP_IGV,
CP.IMP_TOTAL,
U.CAMP2 AS USUARIO,
E.DES_ESTADO AS ESTADO,
CP.SERIE,
CP.NUMERO,
VEND.NOMBRE_RAZON AS VENDEDOR,
CP.ID_VENDEDOR,
cp.atencion_para,
cp.glosa,
cp.id_cliente,
cp.id_direccion,
cp.id_tiempo,
cp.id_moneda,
cp.id_tipoventa,
cp.id_estado,
cp.id_operacion,
cp.id_cotizapreventa,
cp.id_sucursal,
cp.id_cotizacion,
cp.id_sucursalcotizacion,
COALESCE((CTC.DESCRIPCION_CORTA || '' ||cot.SERIE || '' || Cot.NUMERO),'S/C') as cotizacion,
(( SELECT sum(dp.cantidad) AS sum
           FROM ventas.tbl_cotizacionpreventa p
      JOIN ventas.tbl_detpreventacotiza dp ON p.id_cotizapreventa=dp.id_cotizapreventa and p.id_sucursal=dp.id_sucursal
     WHERE p.id_cotizapreventa = cp.id_cotizapreventa and p.id_sucursal=cp.id_sucursal)) - (( SELECT ( SELECT
                        CASE
                            WHEN sum(df.cantidad) IS NULL THEN 0::numeric
                            ELSE sum(df.cantidad)
                        END AS sum) AS sum
           FROM ventas.tbl_facturacion f
      JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion and f.id_sucursal=df.id_sucursal
     WHERE f.id_cotizapreventa = cp.id_cotizapreventa and f.id_sucursalpreventa=cp.id_sucursal AND f.id_estado = 1)) AS cantidad_pendiente
FROM ventas.tbl_cotizacionpreventa CP
INNER JOIN COMMON.TBL_COMPROBANTE C ON(C.ID_COMPROBANTE=CP.ID_COMPROBANTE)
INNER JOIN common.tbl_tipoventa TV ON (TV.id_tipoventa=CP.id_tipoventa)
INNER JOIN common.tbl_moneda  M ON (M.id_moneda=CP.id_moneda)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CP.ID_ESTADO)
INNER JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=CP.id_direccion AND DIR.ID_PERSONA=CP.id_cliente)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=CP.ID_USUARIOR)
INNER JOIN PLANILLAS.TBL_PERSONA vend ON (vend.ID_PERSONA=cp.id_vendedor)
LEFT JOIN ventas.tbl_cotizacionpreventa COT ON (CP.id_cotizacion=COT.id_cotizapreventa)
LEFT JOIN COMMON.TBL_COMPROBANTE CTC ON(CTC.ID_COMPROBANTE=COT.ID_COMPROBANTE)
where cp.preventa=true;

create or  replace view seguridad.v_usuarioalmacen
as
select
ua.id_almacen,
a.descalmacen as almacen,
ua.predeterminado,
'2'::text  as op,
ua.id_usuario,
suc.id_empresa,
suc.id_sucursal
from seguridad.tbl_usuarioalmacen ua
inner join almacen.tbl_almacen a on (a.id_almacen=ua.id_almacen)
inner join common.tbl_sucursal suc on (suc.id_sucursal=a.id_sucursal);

create or replace view ventas.v_detalledocventas
as
select df.item,
    '01'::text AS tipo,
    df.id_producto,
    df.id_almacen,
        CASE
            WHEN btrim(p.codigo::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) ||
            CASE
                WHEN df.ancho > 0::numeric THEN df.ancho::text || 'X'::text
                ELSE ''::text
            END) ||
            CASE
                WHEN df.largo > 0::numeric THEN df.largo::text
                ELSE ''::text
            END
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text ELSE ''::text
        END AS producto,
    u.desc_corta AS unidad,
    df.cantidad - COALESCE(( SELECT sum(dg.cantidad) AS sum
           FROM ventas.tbl_guiaremisionventa grm
             JOIN ventas.tbl_detguiaventa dg ON grm.id_guia = dg.id_guia AND grm.id_sucursal = dg.id_sucursal
          WHERE dg.id_producto::text = df.id_producto::text AND dg.id_unidadventa = df.id_unidadventa AND
          grm.id_facturacion = df.id_facturacion AND grm.id_sucursalfac = df.id_sucursal and grm.id_estado=1), 0::numeric) AS cantidad,
    df.lista,
    df.precio,
    df.imp_dscto,
    df.importe AS tot_detalle,
    '+'::text AS agregar,
    df.id_unidadventa,
    df.id_listaprecio,
    1 AS id_estado,
    '1'::text AS op,
    df.id_facturacion,
    df.id_sucursal,
    df.id_facturacion::text || df.id_sucursal::text AS id_documentoventa,
 df.id_unimedventa,
 DF.VAL_UNIMEDVENTA,
 df.ancho,
 df.largo,
p.gestiona_series
from   ventas.tbl_detfacturacion df
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa);

create or replace view ventas.v_detalle_pedido_ventas
as
select df.item,
    '01'::text AS tipo,
    df.id_producto,
    df.id_almacen,
        CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE (split_part(p.descripcion_larga::text, ','::text, 1) ||
            CASE
                WHEN df.ancho > 0::numeric THEN df.ancho::text || 'X'::text
                ELSE ''::text
            END) ||
            CASE
                WHEN df.largo > 0::numeric THEN df.largo::text
                ELSE ''::text
            END
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text ELSE ''::text
        END AS producto,
    u.desc_corta AS unidad,
    df.cantidad - COALESCE(( SELECT sum(dg.cantidad) AS sum
           FROM ventas.tbl_guiaremisionventa grm
             JOIN ventas.tbl_detguiaventa dg ON grm.id_guia = dg.id_guia AND grm.id_sucursal = dg.id_sucursal
          WHERE dg.id_producto::text = df.id_producto::text AND dg.id_unidadventa = df.id_unidadventa AND
          grm.id_cotizapreventa = df.id_cotizapreventa  and grm.id_estado=1), 0::numeric) AS cantidad,
    1 lista,
    df.precio,
    df.imp_dscto,
    df.imp_total AS tot_detalle,
    '+'::text AS agregar,
    df.id_unidadventa,
    df.id_listaprecio,
    1 AS id_estado,
    '1'::text AS op,
    df.id_cotizapreventa,
    df.id_sucursal,
    df.id_cotizapreventa::text  AS id_documentoventa,
 df.id_unimedventa,
 1 VAL_UNIMEDVENTA,
 df.ancho,
 df.largo,
p.gestiona_series
from   ventas.tbl_detpreventacotiza df
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)

select * from common.V_CONFIGSERIES  where id_sucursal=1 and id_comprobante =17 and serie='0001' and  id_estado =1

select *from ventas.tbl_detpreventacotiza

create or replace view ventas.v_seguimientocotizacion
as
select
	fecha,
	tema,
	fec_proximacita,
	hora_cita,
	id_seguimiento,
	id_cotizapreventa,
	id_sucursal,
	concepto
from ventas.tbl_segimcotizacion

CREATE OR REPLACE VIEW creditos.documentos_x_canjear_creditos AS
 SELECT
    compra.idcompra,
    compra.anio,
    compra.idmeses,
    (((tipcomprobante.abreviatura::text || '/'::text) || compra.serie::text) || '-'::text) || compra.nrocomprobante::text AS doc_compra,
        CASE
            WHEN compra.credito = 'S'::bpchar THEN 'Credito'::text
            ELSE 'Contado'::text
        END AS tip_compra,
    divisa.nom_abrevia,
    compra.total,
    compra.tipo_operacion,
    compra.idproveedor
   FROM compras.compra
   LEFT JOIN creditos.compras_ctasxpagar ON compra.idcompra = compras_ctasxpagar.idcompra AND compra.idmeses = compras_ctasxpagar.idmeses AND compra.anio = compras_ctasxpagar.anio
   JOIN tipcomprobante ON compra.tipo_comprobante = tipcomprobante.idtipcomprobante
   JOIN divisa ON compra.iddivisa = divisa.iddivisa
  WHERE compras_ctasxpagar.idcompra IS NULL AND compra.credito = 'S'::bpchar;

select *from compras.tbl_compra

select *from ventas.v_detcotizaprevente
--pendiente en validar existencia en el creditoscompra
create or replace  view creditos.v_compras_x_canjear
as
select
c.id__compra,
c.anio,
c.id_mes,
(cp.descripcion_corta || '/' || lpad(c.serie,4,'0') || '' || lpad(c.nro_doc_compra,7,'0')) as doc_compra,
tv.descripcion_larga as tipo_compra,
m.simbolo as moneda,
c.imp_total,
c.id_operacion,
c.id_proveedor,
c.id_sucursalcompra,
c.id_Estado,
z.id_estado as id_estados,
c.dias_credito,
c.fec_documento
from
compras.tbl_compra c
left join (
	select
		cc.id__compra,
		cc.id_sucursalcompra,
		ca.id_Estado
	from compras.tbl_compra cc
	inner join creditos.TBL_CREDITOSCOMPRA ca on (cc.id_sucursalcompra=ca.id_sucursalcompra and cc.id__compra=ca.id__compra)
	where cc.id_sucursalcompra=ca.id_sucursalcompra and cc.id__compra=ca.id__compra
) z on z.id__compra=c.id__compra and z.id_sucursalcompra=c.id_sucursalcompra
--left JOIN creditos.TBL_CREDITOSCOMPRA CCC ON (c.id_sucursalcompra=ccc.id_sucursalcompra and c.id__compra=ccc.id__compra)
inner join common.tbl_comprobante cp on (cp.id_comprobante=c.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=c.id_moneda)
inner join common.tbl_tipoventa tv on (tv.id_tipoventa=c.id_tipocompra)
where  (z.id_estado is null or z.id_estado<>1) and
--not exists(select *from compras.tbl_compra cc
	--inner join creditos.TBL_CREDITOSCOMPRA ca (c.id_sucursalcompra=ccc.id_sucursalcompra and c.id__compra=ccc.id__compra)
	--where c.id_sucursalcompra=ca.id_sucursalcompra and c.id__compra=ca.id__compra and c.id_Estado=7)
--(CCC.id__compra is null or ccc.id_sucursalcompra is null)
--and
tv.descripcion_larga ilike '%CREDITO%' and c.id_estado=1

create or replace view contabilidad.v_migrar_concepto
as
 select *from common.tbl_concepto where id>6648 order by id

select *from compras.tbl_compra c

create or replace view creditos.v__provicion__compras
as
select
(cp.descripcion_corta || '/' || lpad(c.serie,4,'0') || '-' || lpad(c.nro_doc_compra,7,'0')) as doc_compra,
tv.descripcion_larga as tipo_compra,
m.simbolo as moneda,
c.imp_total,
c.id_operacion,
c.id_proveedor,
c.id__compra,
c.id_sucursalcompra,
e.des_estado as estado,
c.id_Estado
from
compras.tbl_compra c
inner join common.tbl_comprobante cp on (cp.id_comprobante=c.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=c.id_moneda)
inner join common.tbl_tipoventa tv on (tv.id_tipoventa=c.id_tipocompra)
inner join common.tbl_estado e on (e.id_estado=c.id_estado)
left join caja.tbl_movcaja cm on(c.id__compra=cm.id__compra and c.id_sucursalcompra=cm.id__sucursal__compra and cm.id_estado=1)
where
tv.descripcion_larga ilike '%CONTADO%' and c.id_estado=1

select * from creditos.v_compras_x_canjear  where id_proveedor='4' and id_sucursalcompra=1

select *from common.tbl_estado

select *from creditos.v_compras_x_canjear where id_proveedor='8'

select *from creditos.TBL_CREDITOSCOMPRA where   id__compra=220152134

select *from compras.tbl_compra

select *from common.tbl_tipoventa

select *from common.tbl_comprobante
select *from ventas.tbl_segimcotizacion

select *from ventas.tbl_detfacturacion df

select * from ventas.v_detalledocventas   where id_documentoventa= '201'

select *from planillas.tbl_persona
select *from ventas.tbl_detfacturacion df

SELECT *FROM almacen.v_familia asc

select * from almacen.v_familia  where  descripcion_larga || descripcion_corta || grupo || id_familia ilike '%%' ORDER BY id_familia::integer asc

select *from almacen.tbl_producto

select * from dblink('host=localhost user=postgres password=postgres port=5432  dbname=dba_fernandez',
'select * from almacen.producto') as t1 (idproducto int, descripcion varchar(80));

select * from dblink('host=localhost user=postgres password=postgres port=1433 dbname=dba_data',
'select * from Producto36') as t1 (codigo int, descripcion_larga varchar(31));

SELECT * FROM dblink('dbname=dba_resort_FE host=localhost user=postgres port=1333 password=postgres',
    'SELECT * FROM ""') As
            p(codigo integer,
  codigo2 character varying(20),
  descripcion_larga character varying(61),
  familia integer,
  tipo boolean )

create or replace view v_getdireccionescliente
as
select dc.iddircliente as id_direccion	,dc.direccion,c.nro_documento  as id_persona,1::integer as idestado,z.iddistrito,DC.REFERENCIAS from ventas.cliente c
inner join  ventas.dircli dc on (c.idcliente=dc.idcliente)
inner join ventas.ruta r on (r.idruta=dc.idruta)
inner join zona z on (z.idzona=r.idzona)
where c.idcliente not in ('0')

select *from ventas.dircli
select *from ventas.cliente where idcliente='0'

update ventas.cliente  set nro_documento=idcliente where nro_documento ilike '%.%'

select *from ventas.ruta
select *from zona

select *from planillas.tbl_persona p

ALTER TABLE almacen.tbl_producto ADD COLUMN CODIGO CHAR(30) DEFAULT '';

select

delete from almacen.tbl_existencia
delete from almacen.tbl_detinventario;
delete from ventas.tbl_detpreventacotiza;
delete from ventas.tbl_detfacturacion;
delete from almacen.tbl_precio;
delete from almacen.tbl_detproducto;
delete from almacen.tbl_producto

create or replace view almacen.v_almaceninventario
as
select
a.id_almacen,
a.descalmacen as almacen,
COALESCE(ex.stock_fisico,0)::numeric(20,4) as stock_fisico,
ex.stock_reserva,
ex.stock_reparto,
ex.stocktransito,
pi.descripcion as inventario,
e.des_estado as estado,
pi.id_estado,
ex.id_producto,
ex.id_unidadventa
from almacen.tbl_existencia ex
inner join almacen.tbl_inventario inv on (inv.id_inventario=ex.id_inventario and inv.id_almacen=ex.id_almacen)
inner join almacen.tbl_almacen a on (a.id_almacen=inv.id_almacen)
inner join almacen.tbl_programainventario pi  on (pi.id_inventario=inv.id_inventario)
inner join common.tbl_estado e on (e.id_estado=pi.id_estado)

select *from almacen.v_producto_stock

select *from  almacen.tbl_producto p
select *from almacen.tbl_marca

select *from almacen.v_producto_inventario

select *from almacen.V_PRODUCTOSALMACEN

select id_producto,id_estado from almacen.tbl_existencia where id_producto='199'
delete from almacen.tbl_existencia where id_producto='199'

CREATE OR REPLACE VIEW almacen.v_producto_inventario AS
 SELECT p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    p.descripcion_corta AS nombrecorto,
    m.descripcion_larga AS marca,
    sum(ex.stock_fisico) AS stock_fisico,
    p.id_estado,
    e.des_estado AS estado,
    p.servicio,
    p.impuesto,
    ex.id_inventario,
    p.codigo,
    suc.id_empresa,
    ex.id_almacen,
    p.sujet_percepcion,
    i.imp_igv
   FROM almacen.tbl_producto p
     JOIN common.tbl_igv i ON i.id_igv = p.id_impuesto
     JOIN almacen.tbl_marca m ON m.id_marca = p.id_marca
     JOIN almacen.tbl_detproducto dp ON p.id_producto::text = dp.id_producto::text AND dp.unidad_inventario = true
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
     JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
     JOIN common.tbl_estado e ON p.id_estado = e.id_estado
  GROUP BY p.id_producto, p.descripcion_larga, p.descripcion_corta, m.descripcion_larga, e.des_estado, p.id_estado, ex.id_inventario, suc.id_empresa, ex.id_almacen, i.imp_igv
  ORDER BY p.descripcion_larga;

select *from almacen.v__producto__search  where id_producto='534'

select *from almacen.f_stock_unides('1141',1)

CREATE OR REPLACE FUNCTION almacen.f_stock_unides(__id__producto text,__id__sucursal integer)
returns text as $$
declare
	und text;
	und_senc text;
	dat record;
	und_ret text;
begin
	und:='0';
	und_senc:='0';
	for dat in  select desc_corta as unidad, sum(stock_fisico) as stock ,dp.unidad_inventario as invent
	from almacen.tbl_existencia ex
	inner join almacen.tbl_detproducto dp on (dp.id_producto=ex.id_producto and ex.id_unidadventa=dp.id_unidadventa and dp.id_estado=1)
	inner  JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
	inner join almacen.tbl_unidad u on (u.id_unidadventa=ex.id_unidadventa)
	where ex.id_producto=__id__producto and al.id_sucursal=__id__sucursal  and ex.id_estado=1
	group by desc_corta,dp.unidad_inventario loop
		if dat.invent=true then
			if dat.stock>0 then
				und=to_char(dat.stock,'9,999,999.99') || ' ' || dat.unidad ;
			--else
			--	und=to_char(dat.stock,'0.00') || ' ' || dat.unidad ;
			end if;
		else
			if dat.stock>0 then
				if und_senc<>'0' then
					und_senc=und_senc || ' + ' || trim(to_char(dat.stock,'9,999,999.99')) || ' ' || dat.unidad ;
				else
					und_senc= trim(to_char(dat.stock,'9,999,999.99')) || ' ' || dat.unidad ;
				end if;

			end if;
		end if;

	end loop;
und_ret:=und ||' + '|| und_senc;
return und_ret;
end;$$
language 'plpgsql';

3 GEL. UNIVERSAL FRESA X 250GR+ DULCERA

select *from almacen.v__producto__search

CREATE OR REPLACE VIEW almacen.v__producto__search
AS
 SELECT distinct p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    p.descripcion_corta AS nombrecorto,
    m.descripcion_larga AS marca,
    almacen.f_stock_unides(p.id_producto,al.id_sucursal) AS stock_fisico,
    p.id_estado,
    e.des_estado AS estado,
    p.servicio,
    p.impuesto,
    ex.id_inventario,
    p.codigo,
    suc.id_empresa,
    p.sujet_percepcion,
    i.imp_igv,
    p.vende_pack,
    p.gestiona_lotes,
    p.gestiona_series,
    g.descripcion_larga as grupo,
    suc.id_sucursal,
    cod_barra,
   COALESCE( (
		      select array_to_json(array_agg(row_to_json(d)))::text as compra
		      from (
			select
				dc.id_producto as product_id,
				dc.id_unidadventa as unit_id,
				dc.cantidad,
				und.desc_corta as unidad,
				imp_costofinal as costo
			from compras.tbl_compra c
			inner join compras.tbl_detcompra dc on c.id__compra=dc.id__compra and c.id_sucursalcompra=dc.id_sucursalcompra
			inner join almacen.tbl_unidad und on und.id_unidadventa=dc.id_unidadventa
			where dc.id_producto=p.id_producto
			order by c.fec_documento::Date desc
		      ) d
		    ),'-') as compras,
    f.descripcion_larga as familia,
    ex.costo_promedio as costo,
    ex.id_unidadventa,
    u.desc_corta as unidad
   FROM almacen.tbl_producto p
     JOIN common.tbl_igv i ON i.id_igv = p.id_impuesto
     JOIN almacen.tbl_marca m ON m.id_marca = p.id_marca
     JOIN almacen.tbl_detproducto dp ON p.id_producto::text = dp.id_producto::text AND dp.unidad_inventario = true
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
     JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
     JOIN common.tbl_estado e ON p.id_estado = e.id_estado
     INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
     INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
  GROUP BY p.id_producto, p.descripcion_larga,
  p.descripcion_corta, m.descripcion_larga,
  e.des_estado, p.id_estado, ex.id_inventario, suc.id_empresa,
  ex.id_almacen, i.imp_igv,al.id_sucursal,g.descripcion_larga, suc.id_sucursal,cod_barra,f.descripcion_larga,ex.costo_promedio ,
   ex.id_unidadventa,
    u.desc_corta
  ORDER BY p.descripcion_larga;

select *from almacen.tbl_unidad
select *from almacen.tbl_existencia
select *from compras.tbl_compra

select *from almacen.v__producto__search

CREATE OR REPLACE VIEW almacen.v__producto__search
AS
 SELECT distinct p.id_producto,
    p.descripcion_larga AS nombrecompleto,
    p.descripcion_corta AS nombrecorto,
    m.descripcion_larga AS marca,
    almacen.f_stock_unides(p.id_producto,al.id_sucursal) AS stock_fisico,
    p.id_estado,
    e.des_estado AS estado,
    p.servicio,
    p.impuesto,
    ex.id_inventario,
    p.codigo,
    suc.id_empresa,
    p.sujet_percepcion,
    i.imp_igv,
    p.vende_pack,
    p.gestiona_lotes,
    p.gestiona_series,
    g.descripcion_larga as grupo
   FROM almacen.tbl_producto p
     JOIN common.tbl_igv i ON i.id_igv = p.id_impuesto
     JOIN almacen.tbl_marca m ON m.id_marca = p.id_marca
     JOIN almacen.tbl_detproducto dp ON p.id_producto::text = dp.id_producto::text AND dp.unidad_inventario = true
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
     JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
     JOIN common.tbl_estado e ON p.id_estado = e.id_estado
     INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)
     INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
  GROUP BY p.id_producto, p.descripcion_larga,
  p.descripcion_corta, m.descripcion_larga,
  e.des_estado, p.id_estado, ex.id_inventario, suc.id_empresa, ex.id_almacen, i.imp_igv,al.id_sucursal,g.descripcion_larga
  ORDER BY p.descripcion_larga;

select id_producto,nombrecompleto,grupo from almacen.v__producto__search order by id_producto

select *from almacen.tbl_detproducto
select *from almacen.f_stock_unides('534',1);

select *from almacen.tbl_existencia where id_producto='534'

create or replace  view almacen.v_unidad_vehiculares
as
select
p.id_producto,
p.descripcion_larga as nombreCompleto,
p.descripcion_corta as observaciones,
e.des_estado as estado,
p.id_estado,
p.servicio,
p.impuesto,
p.codigo
from almacen.tbl_producto p
inner join common.tbl_estado e on (p.id_estado=e.id_estado)
order by p.descripcion_larga asc;

select * from ventas.v_guiaremisionventa  where id_facturacionref='1111'

select *from ventas.v_guiaremisionventa

create or replace  view ventas.v_guiaremisionventa
as
select  ( c.descripcion_corta || '/'|| lpad(cab.serie,4,'0') || '-' || lpad(cab.numero,7,'0')) documento,
cab.fecha ,
CASE WHEN trim(f.id_cliente)='000' then trim(cab.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS distinatario,
--p.nombre_razon as distinatario,
cab.direc_partida,
dir.direccion as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
case when trim(f.id_cliente)='000' then cab.DNI_CLIENTE else  trim(p.DOC_PERSONA) end as doc_dictinatario ,
--p.doc_persona as doc_dictinatario,
COALESCE(t.nombre_razon,COALESCE(t.nombres,'') || ' ' || COALESCE(t.apell_paterno,'') || ' ' || COALESCE(t.apell_materno,'')) as transportista,
COALESCE(t.doc_persona,t.dni) as doc_transportista,
cab.id_guia,
cab.id_sucursal,
cab.id_comprobante,
cab.id_tranzaccion,
cab.documento_referencia,
cab.id_motivo ,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.imp_subtotal,
cab.imp_total,
cab.glosa,
cab.id_direccioncli,
cab.id_cliente,
cab.id_transportista,
cab.id_igv,
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
lpad(cab.serie,4,'0') as serie,
lpad(cab.numero,7,'0') as numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placa_transporte,
tr.nro_constanciaincripcion as nro_constinscripcion,
COALESCE(cab.id_facturacion,0) as id_facturacion,
COALESCE(cab.id_sucursalfac,0) as id_sucursalfac,
COALESCE((cf.descripcion_corta || '/'|| lpad(f.serie_facturacion,4,'0') || '-' || lpad(f.numdoc_facturacion,7,'0')),'SIN DOCUMENTO') documento_fact,
cab.id_estado,
(cab.id_guia || '' || cab.id_sucursal) as id_documentoguia,
suc.id_empresa,
lpad(cab.serie,4,'0')  ||'-'||lpad(cab.numero,7,'0') as numero_guia,
tr.nro_licconducir,
e.des_estado as estado,
(cab.id_facturacion::text || cab.id_sucursalfac::text)  as id_facturacionref,
to_char(cab.fecha ,'dd/mm/yyyy') as fecha_report,
cab.id_modalidad,
cab.responsable_recogo
from
ventas.tbl_guiaremisionventa cab
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_direccioncli and  dir.id_persona=cab.id_cliente)
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=TRIM(cab.id_transportista)::INTEGER)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_motivotraslado m on (m.ID_MOTIVO=cab.ID_MOTIVO::integer)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join common.tbl_sucursal suc on (suc.id_sucursal=cab.id_sucursal)
inner join common.tbl_estado e on (e.id_estado=cab.id_estado)
left join ventas.tbl_facturacion f on (f.id_facturacion=cab.id_facturacion and f.id_sucursal=cab.id_sucursalfac)
left  join common.tbl_comprobante cf on (cf.id_comprobante=f.id_comprobante)
order by cab.fecha,cab.serie,cab.numero

select * from ventas.V_DETGUIAVENTA  where id_guia::text || id_sucursal::text ='51'

create or replace  view ventas.v__vales__Carga
as
select  ( c.descripcion_corta || '/'|| lpad(cab.serie,4,'0') || '-' || lpad(cab.numero,7,'0')) documento,
cab.fecha ,
CASE WHEN trim(f.id_cliente)='000' then trim(cab.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS distinatario,
--p.nombre_razon as distinatario,
cab.direc_partida,
dir.direccion as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
case when trim(f.id_cliente)='000' then cab.DNI_CLIENTE else  trim(p.DOC_PERSONA) end as doc_dictinatario ,
COALESCE(t.nombre_razon,COALESCE(t.nombres,'') || ' ' || COALESCE(t.apell_paterno,'') || ' ' || COALESCE(t.apell_materno,'')) as transportista,
COALESCE(t.doc_persona,t.dni) as doc_transportista,
cab.id_guia,
cab.id_sucursal,
cab.documento_referencia,
cab.glosa,
cab.id_transportista,
lpad(cab.serie,4,'0') as serie,
lpad(cab.numero,7,'0') as numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placa_transporte,
tr.nro_constanciaincripcion as nro_constinscripcion,
COALESCE(cab.id_facturacion,0) as id_facturacion,
COALESCE(cab.id_sucursalfac,0) as id_sucursalfac,
COALESCE((cf.descripcion_corta || '/'|| lpad(f.serie_facturacion,4,'0') || '-' || lpad(f.numdoc_facturacion,7,'0')),'SIN DOCUMENTO') documento_fact,
cab.id_estado,
(cab.id_guia || '' || cab.id_sucursal) as id_documentoguia,
suc.id_empresa,
lpad(cab.serie,4,'0')  ||'-'||lpad(cab.numero,7,'0') as numero_guia,
tr.nro_licconducir,
e.des_estado as estado,
(cab.id_facturacion::text || cab.id_sucursalfac::text)  as id_facturacionref,
to_char(cab.fecha ,'dd/mm/yyyy') as fecha_report
from
ventas.tbl_guiaremisionventa cab
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_direccioncli and  dir.id_persona=cab.id_cliente)
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=TRIM(cab.id_transportista)::INTEGER)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_concepto m on (m.id_concepto=cab.id_motivo)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join common.tbl_sucursal suc on (suc.id_sucursal=cab.id_sucursal)
inner join common.tbl_estado e on (e.id_estado=cab.id_estado)
left join ventas.tbl_facturacion f on (f.id_facturacion=cab.id_facturacion and f.id_sucursal=cab.id_sucursalfac)
left  join common.tbl_comprobante cf on (cf.id_comprobante=f.id_comprobante)
order by cab.fecha,cab.serie,cab.numero

select * from ventas.v__transportista

create or replace  view ventas.v__reportguaias__remision
as
select  ( c.descripcion_corta || '/'|| lpad(cab.serie,4,'0') || '-' || lpad(cab.numero,7,'0')) documento,
cab.fecha ,
CASE WHEN trim(f.id_cliente)='000' then trim(cab.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS distinatario,
--p.nombre_razon as distinatario,
cab.direc_partida,
dir.direccion as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
case when trim(f.id_cliente)='000' then cab.DNI_CLIENTE else  trim(p.DOC_PERSONA) end as doc_dictinatario ,
--p.doc_persona as doc_dictinatario,
COALESCE(t.nombre_razon,COALESCE(t.nombres,'') || ' ' || COALESCE(t.apell_paterno,'') || ' ' || COALESCE(t.apell_materno,'')) as transportista,
COALESCE(t.doc_persona,t.dni) as doc_transportista,
cab.id_guia,
cab.id_sucursal,
cab.id_comprobante,
cab.id_tranzaccion,
cab.documento_referencia,
cab.id_motivo,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.imp_subtotal,
cab.imp_total,
cab.glosa,
cab.id_direccioncli,
cab.id_cliente,
cab.id_transportista,
cab.id_igv,
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
lpad(cab.serie,4,'0') as serie,
lpad(cab.numero,7,'0') as numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placa_transporte,
tr.nro_constanciaincripcion as nro_constinscripcion,
COALESCE(cab.id_facturacion,0) as id_facturacion,
COALESCE(cab.id_sucursalfac,0) as id_sucursalfac,
COALESCE((cf.descripcion_corta || '/'|| lpad(f.serie_facturacion,4,'0') || '-' || lpad(f.numdoc_facturacion,7,'0')),'SIN DOCUMENTO') documento_fact,
cab.id_estado,
(cab.id_guia || '' || cab.id_sucursal) as id_documentoguia,
suc.id_empresa,
lpad(cab.serie,4,'0')  ||'-'||lpad(cab.numero,7,'0') as numero_guia,
tr.nro_licconducir,
e.des_estado as estado,
(cab.id_facturacion::text || cab.id_sucursalfac::text)  as id_facturacionref,
case when f.id_tipoventa=1 then f.imp_neto else 0 end as imp_cobranza,
undt.placa,
undt.modelo,
undt.marca,
prod.descripcion_larga as producto,
dgr.cantidad,
f.fecha_Venta,
TV.DESCRIPCION_LARGA AS tipoventa
from
ventas.tbl_guiaremisionventa cab
inner join ventas.tbl_detguiaventa dgr on (cab.id_guia=dgr.id_guia)
inner join almacen.tbl_precio pre on (pre.id_producto=dgr.id_producto and pre.id_unidadventa=dgr.id_unidadventa )
inner join almacen.tbl_producto prod on (prod.id_producto=pre.id_producto)
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_direccioncli and  dir.id_persona=cab.id_cliente)
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=TRIM(cab.id_transportista)::INTEGER)
inner join ventas.tbl_unidadtransporte undt on (undt.id_unidadtransporte=tr.id_unidadtransporte)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_concepto m on (m.id_concepto=cab.id_motivo)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join common.tbl_sucursal suc on (suc.id_sucursal=cab.id_sucursal)
inner join common.tbl_estado e on (e.id_estado=cab.id_estado)
left join ventas.tbl_facturacion f on (f.id_facturacion=cab.id_facturacion and f.id_sucursal=cab.id_sucursalfac)
left  join common.tbl_comprobante cf on (cf.id_comprobante=f.id_comprobante)
LEFT JOIN COMMON.TBL_TIPOVENTA TV ON  TV.ID_TIPOVENTA=F.ID_TIPOVENTA
order by cab.fecha,cab.serie,cab.numero

select *from  ventas.tbl_detguiaventa

select *from ventas.v__reportguaias__remision

select *from ventas.tbl_transportista
select *from ventas.tbl_unidadtransporte

select *from common.tbl_tipoventa
select *from seguridad.V__COMPROBANTES__USUARIO where id_usuario='1' and id_proceso=1

select *from ventas.tbl_unidadtransporte
select distinct id_transportista,placa_transporte from ventas.tbl_guiaremisionventa
select *from ventas.tbl_transportista

select  id_transportista,placa_transporte from ventas.tbl_guiaremisionventa WHERE id_transportista='310' AND placa_transporte ='D2R-703'

UPDATE ventas.tbl_guiaremisionventa SET ID_TRANSPORTISTA='4' WHERE id_transportista='309' AND placa_transporte ='M4D-808';
UPDATE ventas.tbl_guiaremisionventa SET ID_TRANSPORTISTA='1' WHERE id_transportista='309' AND placa_transporte ='D2R-703';
UPDATE ventas.tbl_guiaremisionventa SET ID_TRANSPORTISTA='3' WHERE id_transportista='310' AND placa_transporte ='D2R-703';

select *from ventas.v__transportista
select *from ventas.tbl_guiaremisionventa

select *from ventas.tbl_transportista
select *from ventas.tbl_zona
ventas.tbl_guiaremisionventa cab

select *from common.V_CONFIGSERIES

select *from ventas.tbl_guiaremisionventa cab
select *from ventas.tbl_facturacion

select * from ventas.V_DETGUIAVENTA  where id_guia::text || id_sucursal::text ='11'

select * from ventas.v_editfacturacion  where (id_facturacion::text || id_sucursal::text)='81'

select *from ventas.v_detguiaventa
select *from ventas.v_detalledocventas

CREATE OR REPLACE VIEW VENTAS.V_DETGUIAVENTA
AS
SELECT
dm.ITEM,
(case when dm.modo_texto=true then '02' else '01' end ) as modo_texto,
dm.id_producto,
dm.id_almacen,
case when TRIM(dm.id_producto)='TXT-01' then dm.descripcion_linea else
(split_part(p.descripcion_larga,',',1) || COALESCE((CASE WHEN dm.base>0 AND dm.haltura>0 THEN split_part(dm.descripcion_linea,',',2) END),'') )

 end || case when dm.precio=0 then '' else '' end as producto,
u.desc_corta as unidad,
dm.cantidad,
dm.lp,
dm.precio,
dm.dscto,
dm.IMP_total,
dm.id_unidadventa,
dm.id_listaprecio,
dm.id_estado,
2 as op,
dm.id_guia,
dm.id_sucursal,
 (dm.item::text || ',' || dm.id_producto::text || ',' ||  dm.id_unidadventa::text || ','  || dm.id_listaprecio::text || ',' ||id_almacen::text) as id_old,
 dm.id_inventario,
 (dm.id_guia || '' || dm.id_sucursal) as id_documentoguia,
 COALESCE(dm.base,0) as base,
 COALESCE(dm.haltura,0) as haltura,
 dm.id_unimedventa,
 dm.VAL_UNIMEDVENTA,
p.gestiona_series
 FROM  ventas.tbl_detguiaventa dm
inner join almacen.tbl_precio lp on (lp.id_producto=DM.id_producto and lp.id_unidadventa=dm.id_unidadventa and  lp.id_listaprecio=dm.id_listaprecio)
inner join almacen.tbl_detproducto dp on (dp.id_producto=lp.id_producto and  dp.id_unidadventa=lp.id_unidadventa)
inner join almacen.tbl_producto p  on(p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad  u on (u.id_unidadventa=dp.id_unidadventa)
--inner join almacen.tbl_detproducto detp on (detp.id_producto=dp.id_producto and detp.id_unidadventa=dm.id_unimedventa)
order by dm.item

select * from ventas.v_impguiaremisionventa  where  id_documentoguia='441'

select id_unidadventa from almacen.tbl_existencia where id_producto='912'
select *from almacen.tbl_unidad

select *from common.V_SERIESLIST

select *from almacen.v_precios

UPDATE ventas.tbl_detguiaventa SET ID_UNIMEDVENTA=id_unidadventa

SELECT *FROM ventas.tbl_detguiaventa dm

create or replace  view  ventas.v_listar_ventassinguia
as
select
 tbl_facturacion.id_facturacion,
 tbl_facturacion.fecha_venta,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_facturacion.imp_total,
    tbl_tipocambio.venta,
    tbl_facturacion.id_cliente,
    tbl_facturacion.id_direccion,
    tbl_facturacion.id_estado,
    case when trim(tbl_facturacion.id_cliente)='000' then tbl_facturacion.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_facturacion.id_cliente)='000' then trim(tbl_facturacion.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
   -- tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_facturacion.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     tbl_facturacion.serie_facturacion,
    tbl_facturacion.numdoc_facturacion,
    tbl_estado.des_estado as estado,
    tbl_facturacion.id_sucursal,
    tbl_facturacion.id_tranzaccion,
    tbl_facturacion.id_cotizapreventa,
    tbl_facturacion.id_sucursalpreventa,
    (tbl_facturacion.id_facturacion::text || tbl_facturacion.id_sucursal::text) as id_documentoventa,
    tbl_tipoventa.id_tipoventa,
    tbl_facturacion.id_moneda,
    COALESCE(VEND.doc_persona,'') AS doc_vendedor,
    COALESCE(VEND.nombre_razon,'') as vendedor,
    vend.id_persona as id_vendedor,
    tbl_facturacion.imp_bruto,
    tbl_facturacion.imp_dscto,
    tbl_facturacion.valor_venta,
    tbl_facturacion.imp_neto,
    tbl_facturacion.imp_igv,
    tbl_facturacion.imp_redondeo,
COALESCE((select sum(df.cantidad) from ventas.tbl_detfacturacion df where df.id_facturacion=tbl_facturacion.id_facturacion and df.id_sucursal=tbl_facturacion.id_sucursal),0)-
COALESCE((select sum(dg.cantidad)
	from ventas.tbl_guiaremisionventa grm
	inner join ventas.tbl_detguiaventa dg on(grm.id_guia=dg.id_guia and grm.id_sucursal=dg.id_sucursal)
	where grm.id_facturacion=tbl_facturacion.id_facturacion and grm.id_sucursalfac=tbl_facturacion.id_sucursal and grm.id_estado=1),0) as cantidad_pendiente,
	emp.id_empresa
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_facturacion.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_facturacion.fecha_venta::date,tbl_facturacion.id_comprobante ,tbl_facturacion.serie_facturacion,tbl_facturacion.numdoc_facturacion::NUMERIC;

select * from ventas.V_CABPREVENTA   where id_empresa=1 and  documento || doc_persona || cliente ilike '%%'

create or replace  view  ventas.v_listar_pedidos_singuia
as
select
 tbl_cotizacionpreventa.id_cotizapreventa,
 tbl_cotizacionpreventa.fecha,
    ((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_cotizacionpreventa.serie::text) || tbl_cotizacionpreventa.numero::text AS comprobante,
    tbl_moneda.simbolo AS moneda,
    tbl_cotizacionpreventa.imp_total,
    tbl_tipocambio.venta,
    tbl_cotizacionpreventa.id_cliente,
    tbl_cotizacionpreventa.id_direccion,
    tbl_cotizacionpreventa.id_estado,
    case when trim(tbl_cotizacionpreventa.id_cliente)='000' then tbl_cotizacionpreventa.DNI_CLIENTE else  trim(tbl_persona.DOC_PERSONA) end as DOC_PERSONA ,
    CASE WHEN trim(tbl_cotizacionpreventa.id_cliente)='000' then trim(tbl_cotizacionpreventa.NOMAPE_CLIENTE) else  trim(tbl_persona.NOMBRE_RAZON)  end AS CLIENTE,
   -- tbl_persona.doc_persona,
    --tbl_persona.nombre_razon as cliente,
    tbl_cotizacionpreventa.id_comprobante,
    tbl_tipoventa.descripcion_larga as tipoventa,
     tbl_cotizacionpreventa.serie,
    tbl_cotizacionpreventa.numero,
    tbl_estado.des_estado as estado,
    tbl_cotizacionpreventa.id_sucursal,
    tbl_cotizacionpreventa.id_tranzaccion,
    tbl_tipoventa.id_tipoventa,
    tbl_cotizacionpreventa.id_moneda,
    VEND.doc_persona AS doc_vendedor,
    VEND.nombre_razon as vendedor,
    vend.id_persona as id_vendedor,
    tbl_cotizacionpreventa.imp_bruto,
    tbl_cotizacionpreventa.imp_dscto,
    tbl_cotizacionpreventa.valor_venta,
    tbl_cotizacionpreventa.imp_neto,
    tbl_cotizacionpreventa.imp_igv,

COALESCE((select sum(df.cantidad) from ventas.tbl_detpreventacotiza df where df.id_cotizapreventa=tbl_cotizacionpreventa.id_cotizapreventa and df.id_sucursal=tbl_cotizacionpreventa.id_sucursal),0)-
COALESCE((select sum(dg.cantidad)
	from ventas.tbl_guiaremisionventa grm
	inner join ventas.tbl_detguiaventa dg on(grm.id_guia=dg.id_guia and grm.id_sucursal=dg.id_sucursal)
	where grm.id_cotizapreventa=tbl_cotizacionpreventa.id_cotizapreventa and grm.id_sucursalfac=tbl_cotizacionpreventa.id_sucursal and grm.id_estado=1),0) as cantidad_pendiente,
	emp.id_empresa
   from  ventas.tbl_cotizacionpreventa
   JOIN common.tbl_comprobante ON tbl_cotizacionpreventa.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON tbl_cotizacionpreventa.id_moneda = tbl_moneda.id_moneda
   JOIN common.tbl_tipocambio ON tbl_cotizacionpreventa.id_tipocambio = tbl_tipocambio.id_tipocambio
   JOIN ventas.tbl_direccion ON tbl_cotizacionpreventa.id_direccion = tbl_direccion.id_direccion  AND tbl_cotizacionpreventa.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_cotizacionpreventa.id_tipoventa
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_cotizacionpreventa.id_estado)
   INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=tbl_cotizacionpreventa.ID_VENDEDOR)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_cotizacionpreventa.id_sucursal)
   INNER JOIN common.tbl_empresa emp on (emp.id_empresa=suc.id_empresa)
  ORDER BY tbl_cotizacionpreventa.fecha::date,tbl_cotizacionpreventa.id_comprobante ,tbl_cotizacionpreventa.serie,tbl_cotizacionpreventa.numero::NUMERIC;

select * from compras.v_registrocompras   where id_empresa=2 and  date_part('month'::text, fechareg::date)=1 and tipo_documento || nro_serie || nro_comprobante || doc_cliente || cliente ilike '%%'

select *from compras.v_registrocompras where date_part('month',fecha_emision::date)=1 and date_part('year',fecha_emision::date)=2015 and tipo_documento<>'NCR'

 CREATE OR REPLACE VIEW compras.v_registrocompras
AS
 SELECT c.fec_documento::date AS fecha_emision,
        CASE c.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
	     WHEN 36 THEN '02'::text
	     WHEN 6 THEN '14'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    c.serie AS nro_serie,
    c.nro_doc_compra AS nro_comprobante,
        CASE
            WHEN length(prov.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
    prov.doc_persona AS doc_cliente,
    prov.nombre_razon::text ||
        CASE
            WHEN c.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN c.id_operacion = 2 or c.id_operacion=1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric --select *from compras.tbl_compra
                ELSE c.imp_exonerado *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS va_exonerado,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_afecto *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS va_afecto,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_igv *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS igv,
        CASE
            WHEN c.id_estado = 7 THEN 0::numeric
            ELSE c.imp_total *
            CASE
                WHEN c.id_moneda = 2 THEN c.tipo_cambio
                ELSE 1::numeric
            END
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS total,
    c.id_comprobante,
    c.id_dirproveedor,
    c.id_proveedor,
    c.id_sucursalcompra,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || c.serie::text) || '-'::text) || c.nro_doc_compra::text AS nro_documento,
    'SON :'::text || fu_numero_letras(c.imp_total *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END) AS tot_letras,
    c.imp_venta *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS imp_venta,
    c.imp_igv *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END *
        CASE
            WHEN c.nota_credito = true THEN '-1'::integer
            ELSE 1
        END::numeric AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    ((c.id_compra::text || c.id_sucursalcompra::text) || c.anio::text) || c.id_mes::text AS codigo_compra,
    m.id_moneda,
    c.id_operacion,
    c.id_tipocompra,
    c.id_compra,
    cp.id_comprobante AS idtipcomprobante,
    c.id_estado,
    s.id_empresa,
    c.tipo_cambio AS tipocambio,
    c.referencia_ncr,
    c.fec_ingsistema AS fechareg,
    c.serie_nc,
    c.fecha_nc,
    COALESCE(ref.serie_ref, ''::bpchar) AS serie_ref,
    COALESCE(ref.numero_ref, ''::bpchar) AS numero_ref,
    COALESCE(ref.fecha_ref, ''::text) AS asfecha_ref,
    COALESCE(ref.codigosunat_ref, ''::text) AS codigosunat_ref,
    c.nrooperacion_detatracion,
    c.imp_detraccion,
        CASE
            WHEN COALESCE(c.nrooperacion_detatracion, ''::character varying)::text <> ''::text THEN COALESCE(to_char(c.fec_pago, 'dd/MM/yyyy'::text), ''::text)
            ELSE ''::text
        END AS fec_pago,
        CASE
            WHEN c.id_tipocompra = 1 THEN COALESCE(to_char(c.fec_documento, 'dd/MM/yyyy'::text), ''::text)
            ELSE COALESCE(to_char(c.fec_documento + ((c.dias_credito::text || ' day'::text)::interval), 'dd/MM/yyyy'::text), ''::text)
        END AS fec_vencimiento,
    c.id_mes,
    c.anio,
    c.dias_credito,
    C.egreso
   FROM compras.tbl_compra c
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = c.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = c.id_tipocompra
     JOIN common.tbl_estado e ON e.id_estado = c.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = c.id_dirproveedor AND dc.id_persona::text = c.id_proveedor::text
     JOIN planillas.tbl_persona prov ON prov.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = c.id_sucursalcompra
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = c.id_tipocambio
     LEFT JOIN ( SELECT cref.id__compra,
            cref.id_sucursalcompra,
            cref.serie AS serie_ref,
            cref.nro_doc_compra AS numero_ref,
            to_char(cref.fec_documento, 'dd/MM/yyyy'::text) AS fecha_ref,
            cpref.codigosunat AS codigosunat_ref
           FROM compras.tbl_compra cref
             JOIN common.tbl_comprobante cpref ON cpref.id_comprobante = cref.id_comprobante
          WHERE cref.nota_credito = false AND cref.nota__debito = false) ref ON c.id__compra__ref = ref.id__compra AND c.id__sucursal__ref = ref.id_sucursalcompra
  WHERE c.id_estado = 1
  ORDER BY c.id_comprobante,c.fec_ingsistema;

SELECT *FROM COMPRAS.TBL_COMPRA
select *from compras.tbl_compra

  select *from common.tbl_tipoventa

update compras.tbl_compra set tipo_cambio =3.21

select id_tipocambio, *from compras.tbl_compra

select *from common.tbl_moneda

select *from common.tbl_tipocambio

create or replace view compras.v_registroEgresos
as
select
c.fec_documento::date as fecha_emision,
lpad(c.id_comprobante::text,2,'0') as tipo,
cp.descripcion_corta AS tipo_documento,
lpad(c.serie,4,'0') AS nro_serie,
lpad(c.nro_doc_compra,7,'0') AS nro_comprobante,
case when length(prov.doc_persona)<=8 then 1 else 6 end as tipo_docliente,
    prov.doc_persona AS doc_cliente,
    prov.nombre_razon::text ||
        CASE
            WHEN c.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN c.id_operacion = 2 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_total
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_total
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_igv
            END
            ELSE 0::numeric
        END AS igv,
        CASE
            WHEN c.id_estado = 7 THEN 0::numeric
            ELSE c.imp_total
        END AS total,
    c.id_comprobante,
    c.id_dirproveedor,
    c.id_proveedor,
    c.id_sucursalcompra,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || c.serie::text) || '-'::text) || c.nro_doc_compra::text AS nro_documento,
    'SON :'::text || fu_numero_letras(c.imp_total) AS tot_letras,
    c.imp_venta,
    c.imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    c.id_compra::text || c.id_sucursalcompra::text || c.anio::text || c.id_mes::text AS codigo_compra,
    m.id_moneda,
    c.id_operacion,
    c.id_tipocompra,
    c.id_compra,
    cp.id_comprobante AS idtipcomprobante,
    c.id_estado,
    s.id_empresa
from compras.tbl_compra c
JOIN common.tbl_comprobante cp ON cp.id_comprobante = c.id_comprobante
JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
   JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = c.id_tipocompra
   JOIN common.tbl_estado e ON e.id_estado = c.id_estado
   JOIN ventas.tbl_direccion dc ON dc.id_direccion = c.id_dirproveedor AND dc.id_persona::text = c.id_proveedor::text
   JOIN planillas.tbl_persona prov ON prov.id_persona::text = dc.id_persona::text
   inner join common.tbl_sucursal s on (s.id_sucursal=c.id_sucursalcompra)
   where c.egreso=true
  ORDER BY c.id_comprobante, c.serie, c.nro_doc_compra::integer;

select *from ventas.v_registroventas_exportar
SELECT *FROM COMMON.TBL_COMPROBANTE ORDER BY ID_COMPROBANTE

CREATE OR REPLACE   VIEW ventas.v_registroventas_exportar
AS
 SELECT f.fecha_venta::date AS fecha_emision,
        CASE f.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    lpad(f.serie_facturacion::text, 4, '0'::text) AS nro_serie,
    lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_comprobante,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS doc_cliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END ||
        CASE
            WHEN f.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN f.id_operacion = 2 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_total * (-1)::numeric
                    ELSE f.imp_total
                END
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.valor_venta * (-1)::numeric
                    ELSE f.valor_venta
                END
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_igv * (-1)::numeric
                    ELSE f.imp_igv
                END
            END
            ELSE 0::numeric
        END AS igv,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_total * (-1)::numeric
                ELSE f.imp_total
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS total,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || lpad(f.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.valor_venta * (-1)::numeric
                ELSE f.valor_venta
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS valor_venta,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_igv * (-1)::numeric
                ELSE f.imp_igv
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    f.id_facturacion::text || f.id_sucursal::text AS codigo_venta,
    m.id_moneda,
    f.id_operacion,
    f.id_tipoventa,
    f.id_facturacion,
    cp.id_comprobante AS idtipcomprobante,
    f.id_estado,
    s.id_empresa,
        CASE f.id_estado
            WHEN 1 THEN f.imp_percepcion
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_percepcion,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN (f.imp_igv + f.imp_neto) * (-1)::numeric
                ELSE f.imp_neto
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_neto,
    COALESCE((((cpnc.descripcion_corta::text || '/'::text) || lpad(nc.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS documento_referencia,
    to_char(f.fecha_venta, 'dd/yy/yyyy'::text) AS fecha_grid,
    COALESCE(lpad(nc.serie_facturacion::text, 4, '0'::text),'') AS serie_ref,
    COALESCE(lpad(nc.numdoc_facturacion::text, 7, '0'::text),'') AS numero_ref,
       COALESCE( CASE nc.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END,'') AS tipocomprobante_ref,
    COALESCE(to_char(nc.fecha_venta::date,'dd/MM/yyyy'),'') AS fecha_ref,
     length(btrim(c.doc_persona::text)) AS len,
     f.tipo_cambio,
     f.glosa
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_estado e ON e.id_estado = f.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     LEFT JOIN ventas.tbl_facturacion nc ON nc.id_facturacion = f.id_facturacionref AND f.id_sucursalref = nc.id_sucursal
     LEFT JOIN common.tbl_comprobante cpnc ON cpnc.id_comprobante = nc.id_comprobante
  WHERE f.id_comprobante <> 32
  ORDER BY f.id_comprobante, "right"(f.serie_facturacion::text, 3)::integer, f.numdoc_facturacion::integer;

select *from ventas.tbl_facturacion

select *from ventas.v_registroventas_grid where fecha_emision::date='10/01/2017'

select * from ventas.v_registroventas

SELECT *FROM VENTAS.TBL_FACTURACION WHERE date_part('year',fecha_venta)=2016 and date_part('month',fecha_venta)=12 and id_comprobante=3

update VENTAS.TBL_FACTURACION set serie_facturacion='F002' WHERE date_part('year',fecha_venta)=2016 and date_part('month',fecha_venta)=12 and id_comprobante=3
update VENTAS.TBL_FACTURACION set serie_facturacion='B002' WHERE date_part('year',fecha_venta)=2016 and date_part('month',fecha_venta)=12 and id_comprobante=2

SELECT *FROM VENTAS.TBL_PERCEPCION  WHERE date_part('year',FECHA)=2016 and date_part('month',FECHA)=12

UPDATE VENTAS.TBL_PERCEPCION  SET SERIE ='P001' WHERE date_part('year',FECHA)=2016 and date_part('month',FECHA)=12

select *from  common.tbl_comprobante order by 1

CREATE OR REPLACE VIEW ventas.v_registroventas_grid
AS
 SELECT f.fecha_venta::date AS fecha_emision,
        CASE f.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    lpad(f.serie_facturacion::text, 4, '0'::text) AS nro_serie,
    lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_comprobante,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS doc_cliente,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END ||
        CASE
            WHEN f.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN f.id_operacion = 2 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                    ELSE f.imp_total
                END
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                    ELSE f.valor_venta
                END
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE
                CASE
                    WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                    ELSE f.imp_igv
                END
            END
            ELSE 0::numeric
        END AS igv,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_total * '-1'::integer::numeric
                ELSE f.imp_total
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS total,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || lpad(f.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(f.numdoc_facturacion::text, 7, '0'::text) AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.valor_venta * '-1'::integer::numeric
                ELSE f.valor_venta
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS valor_venta,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN f.imp_igv * '-1'::integer::numeric
                ELSE f.imp_igv
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    f.id_facturacion::text || f.id_sucursal::text AS codigo_venta,
    m.id_moneda,
    f.id_operacion,
    f.id_tipoventa,
    f.id_facturacion,
    cp.id_comprobante AS idtipcomprobante,
    f.id_estado,
    s.id_empresa,
        CASE f.id_estado
            WHEN 1 THEN COALESCE(f.imp_percepcion, 0::numeric)
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_percepcion,
        CASE f.id_estado
            WHEN 1 THEN
            CASE
                WHEN f.id_comprobante = 19 THEN (f.imp_igv + f.imp_neto) * '-1'::integer::numeric
                ELSE f.imp_neto
            END
            WHEN 7 THEN 0::numeric
            WHEN 3 THEN 0::numeric
            ELSE 0::numeric
        END AS imp_neto,
    COALESCE((((cpnc.descripcion_corta::text || '/'::text) || lpad(nc.serie_facturacion::text, 4, '0'::text)) || '-'::text) || lpad(nc.numdoc_facturacion::text, 7, '0'::text), ''::text) AS documento_referencia,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/mm/yyyy'::text) AS fecha_grid,
    row_number() OVER (PARTITION BY (f.fecha_venta::date) ORDER BY (f.fecha_venta::date), f.id_comprobante, (right(f.serie_facturacion,3)::integer), (f.numdoc_facturacion::integer)) AS row_number,
    to_char(f.fecha_venta::date::timestamp with time zone, 'dd/mm/yyyy'::text) AS fecha_grid1,
    sum(f.imp_neto) OVER (PARTITION BY (f.fecha_venta::date) ORDER BY (f.fecha_venta::date), f.id_comprobante, (right(f.serie_facturacion,3)::integer), (f.numdoc_facturacion::integer)) AS sum
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_estado e ON e.id_estado = f.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     LEFT JOIN ventas.tbl_facturacion nc ON nc.id_facturacion = f.id_facturacionref AND f.id_sucursalref = nc.id_sucursal
     LEFT JOIN common.tbl_comprobante cpnc ON cpnc.id_comprobante = nc.id_comprobante
  WHERE f.id_comprobante <> 32
  ORDER BY (f.fecha_venta::date), f.id_comprobante, (right(f.serie_facturacion,3)::integer), (f.numdoc_facturacion::integer);

select * from ventas.v_listar_cabecera_facturacion   where id_empresa=1 and cliente||COMPROBANTE ilike '%1555%' limit 100

update ventas.tbl_facturacion set valor_venta=604.58,imp_igv=108.83,imp_total=713.41 where id_facturacion=116

select *from ventas.cliente

select *from tipventa

select distinct anulado from ventas.facturacion where anulado<>'N' limit 50

select *from compras.tipooperacion_compra order by idtipo_operacion

select prosrc from pg_proc
select *from ventas.v_items

CREATE OR REPLACE VIEW ALMACEN.V_COLORES
AS
 SELECT est.id_color,
    est.descripcion_larga,
    est.descripcion_corta,
    e.id_estado,
    e.des_estado AS estado
   FROM almacen.tbl_color est
   JOIN common.tbl_estado e ON est.id_estado = e.id_estado;

select *from  almacen.tbl_color

SELECT *FROM VENTAS.TBL_FACTURACION WHERE imp_igv>0

UPDATE VENTAS.TBL_FACTURACION SET ID_OPERACION=1 WHERE imp_igv>0

select *from common.tbl_operacion

SELECT * FROM dblink('dbname=dba_fernandez host=localhost user=postgres port=5432 password=postgres',
    'SELECT * FROM ""') As
            p(codigo integer,
  codigo2 character varying(20),
  descripcion_larga character varying(61),
  familia integer,
  tipo boolean )

create or replace view common.v_cboempresa
as
select id_empresa as value , nombre as label from common.tbl_empresa

CREATE OR REPLACE   VIEW almacen.v_preciosproducto
AS
 SELECT a.id_producto AS codigo,
    a.nombrecompleto AS producto,
    g.descripcion_larga AS grupo,
    a.familia,
    a.marca,
    c.desc_larga AS unidad,
    b.val_unidad AS valor_unidad,
    b.precio1,
    b.precio2,
    b.precio3,
    f.id_grupo,
    a.id_marca,
    f.id_familia,
    b.coste,
    a.codigo AS codigoprod,
    x.stock_text
   FROM almacen.v_producto a
     JOIN almacen.tbl_precio b ON a.id_producto::text = b.id_producto::text AND b.id_estado = 1
     JOIN almacen.tbl_unidad c ON b.id_unidadventa = c.id_unidadventa
     JOIN almacen.tbl_familia f ON a.id_familia = f.id_familia
     JOIN almacen.tbl_grupo g ON f.id_grupo = g.id_grupo
     INNER JOIN almacen.FN_STOK_REAL('') x on x.product_id=a.id_producto
  ORDER BY (btrim(f.id_familia::text)::integer),a.id_producto-- g.descripcion_larga, a.marca, c.desc_larga;

CREATE OR REPLACE VIEW common.v_ubigeo_provincia
AS
 SELECT p.id_provincia AS id_ubigeo,
    d.departamento,
    p.provincia,
    (((btrim(d.departamento::text) || '-'::text) || btrim(p.provincia::text)) || '-'::text) AS nombre_ubigeo
   FROM common.tbl_dpto d
   JOIN common.tbl_provincia p ON d.id_dpto::text = p.id_dpto::text
  ORDER BY p.id_provincia;

select *from almacen.v_almacen

CREATE OR REPLACE VIEW almacen.v_almacen
 AS
 SELECT a.id_almacen,
    a.descalmacen,
    a.direccion,
    s.id_sucursal,
    s.nombre AS sucursal,
    a.id_distrito,
    u.nombre_ubigeo AS distrito,
    a.isprincipal,
    a.id_encargado,
    (((p.apell_paterno::text || ' '::text) || p.apell_materno::text) || ' '::text) || p.nombres::text AS encargado,
    p.dni AS dni_encargado,
    e.id_empresa,
    e.nombre AS empresa
   FROM almacen.tbl_almacen a
   JOIN common.tbl_sucursal s ON s.id_sucursal = a.id_sucursal
   JOIN common.tbl_empresa e ON e.id_empresa = s.id_empresa
   JOIN common.v_ubigeo u ON a.id_distrito::text = u.id_ubigeo::text
   JOIN planillas.tbl_persona p ON a.id_encargado::text = p.id_persona::text;

select *
 FROM almacen.tbl_almacen a
   JOIN common.tbl_sucursal s ON s.id_sucursal = a.id_sucursal
   JOIN common.tbl_empresa e ON e.id_empresa = s.id_empresa
   JOIN common.v_ubigeo u ON a.id_distrito::text = u.id_ubigeo::text
   JOIN planillas.tbl_persona p ON a.id_encargado::text = p.id_persona::text;

CREATE OR REPLACE  VIEW common.v_ubigeo
AS
 SELECT dis.id_distrito AS id_ubigeo,
    d.departamento,
    p.provincia,
    dis.distrito,
    (((btrim(d.departamento::text) || '-'::text) || btrim(p.provincia::text)) || '-'::text) || btrim(dis.distrito::text) AS nombre_ubigeo,
   p.id_provincia
   FROM common.tbl_dpto d
   JOIN common.tbl_provincia p ON d.id_dpto::text = p.id_dpto::text
   JOIN common.tbl_distrito dis ON p.id_provincia::text = dis.id_provincia::text
  ORDER BY dis.id_distrito;

CREATE OR REPLACE  VIEW ventas.v_listarzona_sector
AS
 SELECT z.id_zona,
    z.zona,
    s.id_sector,
    s.sector,
    z.id_distrito,
    (btrim(z.zona::text) || ' - '::text) || btrim(s.sector::text) AS zona_sector
   FROM ventas.tbl_zona z
   JOIN ventas.tbl_sector s ON z.id_zona = s.id_zona;

CREATE OR REPLACE VIEW ventas.v_zona
AS
 SELECT z.id_zona,
    z.zona,
    dis.id_distrito AS id_ubigeo,
    d.departamento,
    p.provincia,
    dis.distrito,
    (((btrim(d.departamento::text) || ' - '::text) || btrim(p.provincia::text)) || ' - '::text) || btrim(dis.distrito::text) AS nombre_ubigeo
   FROM common.tbl_dpto d
   JOIN common.tbl_provincia p ON d.id_dpto::text = p.id_dpto::text
   JOIN common.tbl_distrito dis ON p.id_provincia::text = dis.id_provincia::text
   JOIN ventas.tbl_zona z ON z.id_distrito::text = dis.id_distrito::text
  ORDER BY dis.id_distrito;

CREATE OR REPLACE VIEW ventas.v_zona_sector
AS
 SELECT s.id_sector,
    z.zona,
    s.sector,
    z.id_distrito,
    (btrim(z.zona::text) || ' - '::text) || btrim(s.sector::text) AS zona_sector,
	z.id_zona
   FROM ventas.tbl_zona z
   JOIN ventas.tbl_sector s ON z.id_zona = s.id_zona;

CREATE OR REPLACE VIEW molino.v_infochacra
AS
 SELECT ifc.id_infochacra,
    ifc.id_sucursal,
    p.doc_persona AS doc_beneficiario,
    p.nombre_razon AS beneficiario,
    ifc.fecha_visita,
    ifc.fecha_siembra,
    ifc.fecha_cosecha,
    ifc.semilla_certificada,
    tbl_marca.descripcion_larga AS variedad,
    (btrim(tbl_distrito.distrito::text) || '->'::text) || tbl_zona.zona::text AS zona,
    ifc.ubicacion,
    rec.nombre_razon AS recorredor,
    ifc.num_hectarias,
    ifc.toneladas_xhectaria,
    ifc.edad_cultivo,
    tbl_tiposiembra.descripcion_larga AS siembra,
    tbl_tipocosecha.descripcion_larga AS cosecha,
    tbl_campana.descripcion_larga AS "campaña",
    ifc.id_zona,
    ifc.id_estado,
    ifc.id_dirproveedor,
    ifc.id_proveedor,
    ifc.id_recorredor,
    ifc.id_calificacion,
    ifc.id_variedad,
    ifc.id_tipocosecha,
    ifc.id_tipsiembra,
    ifc.id_campana,
    rec.doc_persona AS doc_reccoredor,
    tbl_distrito.id_distrito,
    tbl_distrito.distrito
   FROM molino.tbl_infochacra ifc
   JOIN almacen.tbl_marca ON tbl_marca.id_marca = ifc.id_variedad
   JOIN ventas.tbl_direccion dp ON dp.id_direccion = ifc.id_dirproveedor AND dp.id_persona::text = ifc.id_proveedor::text
   JOIN planillas.tbl_persona p ON p.id_persona::text = dp.id_persona::text
   JOIN ventas.tbl_zona ON tbl_zona.id_zona = ifc.id_zona
   JOIN common.tbl_distrito ON tbl_distrito.id_distrito::text = tbl_zona.id_distrito::text
   JOIN molino.tbl_campana ON tbl_campana.id_campana = ifc.id_campana
   JOIN molino.tbl_tipocosecha ON tbl_tipocosecha.id_tipocosecha = ifc.id_tipocosecha
   JOIN molino.tbl_tiposiembra ON tbl_tiposiembra.id_tipsiembra = ifc.id_tipsiembra
   JOIN planillas.tbl_persona rec ON rec.id_persona::text = ifc.id_recorredor::text;

create or replace view ventas.v_listar_ventasporcliente
as
select
    tbl_persona.doc_persona,
    tbl_persona.nombre_razon as cliente,
    sum(tbl_facturacion.valor_venta) as valor_venta,
    sum(tbl_facturacion.imp_igv) as imp_igv,
    sum(tbl_facturacion.imp_total) as imp_total
   from  ventas.tbl_facturacion
   JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
   JOIN ventas.tbl_direccion ON tbl_facturacion.id_direccion = tbl_direccion.id_direccion  AND tbl_facturacion.id_cliente = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_facturacion.id_estado)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_facturacion.id_sucursal)
   group by tbl_persona.doc_persona,tbl_persona.nombre_razon
  ORDER BY TRIM(tbl_persona.nombre_razon) asc

create or replace view compras.v_listar_comprasproveedor
as
select
    tbl_persona.doc_persona,
    tbl_persona.nombre_razon as proveedor,
    sum(tbl_compra.imp_venta) as valor_venta,
    sum(tbl_compra.imp_igv) as imp_igv,
    sum(tbl_compra.imp_total) as imp_total
   from  compras.tbl_compra
   JOIN common.tbl_comprobante ON tbl_compra.id_comprobante = tbl_comprobante.id_comprobante
   JOIN ventas.tbl_direccion ON tbl_compra.id_dirproveedor = tbl_direccion.id_direccion  AND tbl_compra.id_proveedor = tbl_direccion.id_persona
   JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
   inner join common.tbl_estado on (tbl_estado.id_estado=tbl_compra.id_estado)
   INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=tbl_compra.id_sucursalcompra)
   group by tbl_persona.doc_persona,tbl_persona.nombre_razon
  ORDER BY TRIM(tbl_persona.nombre_razon) asc

CREATE OR REPLACE VIEW creditos.v_creditos_x_pagar
AS
         SELECT (((tbl_comprobante.descripcion_corta::text || '/'::text) || fac.serie::text) || '-'::text) || fac.nro_doc_compra::text AS documento,
            cred.fec_emision AS fec_credito,
            cli.nombre_razon AS proveedor,
            ( SELECT c.fec_vencimiento
                   FROM creditos.tbl_cuota c
                  WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
                  ORDER BY c.nro_cuota DESC
                 LIMIT 1) AS fec_vencimiento,
            tbl_moneda.simbolo AS moneda,

            COALESCE(( SELECT sum(c.imp_cuota) AS sum
                   FROM creditos.tbl_cuota c
                  WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS credito,

            0 AS pagos,
            COALESCE(( SELECT sum(c.imp_cuota) AS sum
                   FROM creditos.tbl_cuota c
                  WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
                   FROM creditos.tbl_cuota c
              JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
         JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
        WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0::numeric) AS saldo,
            fac.imp_total + COALESCE(( SELECT sum(c.imp_interes) AS sum
                   FROM creditos.tbl_cuota c
                  WHERE cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito), 0.00) AS total_venta,
            tbl_tipoventa.descripcion_larga::text AS tipo_venta,
            fac.id_compra,
            fac.id_sucursalcompra,
            fac.id_proveedor,
            fac.id_dirproveedor,
            cred.id_credito,
            cred.id_sucursal_credito,
            tbl_comprobante.descripcion_corta AS comprobante,
            fac.serie,
            fac.nro_doc_compra,
            cli.doc_persona AS dni
           FROM compras.tbl_compra fac
      JOIN creditos.tbl_creditoscompra vc ON fac.id_sucursalcompra=vc.id_sucursalcompra and  fac.id__compra=vc.id__compra
   JOIN creditos.tbl_credito cred ON cred.id_credito = vc.id_credito AND cred.id_sucursal_credito = vc.id_sucursal_credito
   JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
   JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
   JOIN ventas.tbl_direccion dir ON dir.id_persona::text = fac.id_proveedor::text AND dir.id_direccion = fac.id_dirproveedor
   JOIN planillas.tbl_persona cli ON cli.id_persona::text = dir.id_persona::text
   JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipocompra

create or replace  view creditos.v_creditoscompra
as
select
(cp.descripcion_corta || '/' || lpad(c.serie,4,'0') || lpad(c.nro_doc_compra,7,'0')) as documento,
cc.importe_documento,
c.anio,
c.id_mes,
c.id_compra,
c.id_sucursalcompra,
0::integer op_inic,
2::integer as op,
cc.id_creditoscompra,
cc.id_credito,
cc.id_sucursal_credito
from
creditos.tbl_creditoscompra cc
inner join compras.tbl_compra c on (c.id_sucursalcompra=cc.id_sucursalcompra and c.anio=cc.anio and c.id_compra=cc.id_compra and c.id_mes=cc.id_mes)
inner join common.tbl_comprobante cp on (cp.id_comprobante=c.id_comprobante)

CREATE OR REPLACE VIEW CREDITOS.V_CABCREDITO
AS
SELECT
C.ID_CREDITO,
C.ID_SUCURSAL_CREDITO,
C.FEC_EMISION,
C.IMP_CREDITO,
C.NRO_CUOTAS,
C.IMP_RECARGO,
C.IMP_CUOTACAPITAL,
C.IMP_CUOTA,
C.IMP_AMORTIZACION,
C.INTERVALO_CUOTA,
C.NRO_CUOTAS_PAGO_INTERES,
C.DIAS_GRACIA,
C.ID_ESTADO,
C.ID_PRODCREDITOS,
cc.anio,
cc.id_mes,
cc.id_compra,
cc.id_sucursalcompra
FROM CREDITOS.TBL_CREDITO C
INNER JOIN creditos.tbl_creditoscompra cc ON (C.id_credito=CC.id_credito AND C.id_sucursal_credito=CC.id_sucursal_credito)

create or replace view creditos.v_cuotas
as
select
c.nro_cuota,
c.nro_letra,
c.fec_vencimiento,
c.imp_capital,
c.imp_interes,
c.imp_cuota,
COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	--inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)),0) as pagos,
c.imp_total,
c.intervalo_dias,
c.id_estado,
c.id_cuotas,
2::integer op,
c.id_sucursal_credito,
c.id_credito
from creditos.tbl_cuota c
order by c.nro_cuota asc

create or replace view produccion.v_planproducciom
as
select
(c.descripcion_corta || '' || pp.serie || pp.numero) as documento,
pp.fecha,
PP.nom_planproduccion,
cli.nombre_razon as cliente,
pp.fecha_inicio,
pp.fecha_fin,
per.nombre_razon as vendedor,
e.des_estado as estado,
e.id_estado,
pp.id_plan,
pp.serie,
pp.numero,
pp.id_comprobante,
pp.id_moneda,
dir.id_direccion,
pp.id_persona as id_cliente,
pp.id_vendedor,
pp.id_tranzaccion,
pp.imp_totalcosto,
pp.imp_totalventa,
pp.observaciones,
s.id_sucursal,
s.nombre as sucursal,
s.id_empresa,
cli.doc_persona as doc_cliente
from
produccion.tbl_planproduccion pp
inner join ventas.tbl_direccion dir on (dir.id_direccion=pp.id_direccion)
inner join planillas.tbl_persona cli on(cli.id_persona=dir.id_persona)
inner join common.tbl_comprobante c on (c.id_comprobante=pp.id_comprobante)
INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=PP.ID_VENDEDOR)
inner join common.tbl_estado e on (e.id_estado=pp.id_estado)
inner join common.tbl_sucursal s on (s.id_sucursal=pp.id_sucursal)

CREATE OR REPLACE VIEW planillas.v_personalemp
AS
 SELECT p.id_persona,
    p.doc_persona,
    (p.apell_paterno || ' ' || p.apell_materno || ' ' || p.nombres)  as colaborado
   FROM planillas.tbl_persona p
where p.empleado is true

select *from planillas.tbl_persona

create or replace view produccion.v_ordenproduccion
as
select
(c.descripcion_corta || '' || op.serie || op.numero) as documento,
op.fecha,
p.descripcion_larga as producto,
op.cantidad_producir,
u.desc_larga as unidad,
op.fecha_inicio,
op.fecha_fin,
(per.apell_paterno || ' ' || per.apell_materno || ' ' || per.nombres) as responsable,
e.des_estado as estado,
op.serie,
op.numero,
op.id_comprobante,
op.id_direccion,
op.id_cliente,
op.id_ordeproduccion,
case when op.id_plan is null then 0 else op.id_plan end as id_plan,
op.id_estado,
op.id_producto,
op.id_unidadventa,
op.id_vendedor,
op.serie_lote,
op.inicio_lote,
op.fin_lote,
op.id_responsableproduccion,
op.id_sucursal,
s.id_empresa,
op.imp_totalcosto,
op.imp_totalventa,
op.observaciones,
cli.doc_persona as doc_cliente,
COALESCE(PP.NOM_PLANPRODUCCION,'') as NOM_PLANPRODUCCION,
cli.nombre_razon as cliente,
op.medida_altura,
op.medida_ancho,
op.medida_altura || ' X ' ||op.medida_ancho as medida,
op.medidas_plancha,
op.cantidad_plancha,
op.numeracion,
op.perforacion,
op.nro_colores,
p.servicio as ctrl_stock,
dp.val_unidad,
dp.val_minimo,
op.id_facturacion,
op.id_sucursalfac,
dir.direccion as dir_cliente,
op.imp_dscto,
op.imp_venta,
op.imp_igv,
op.imp_total
from
produccion.tbl_ordenproduccion op
left JOIN produccion.tbl_planproduccion pp ON(PP.ID_PLAN=OP.ID_PLAN)
inner join common.tbl_sucursal s on(s.id_sucursal=op.id_sucursal)
inner join common.tbl_comprobante c on (c.id_comprobante=op.id_comprobante)
inner join ventas.tbl_direccion dir on (dir.id_direccion=op.id_direccion and dir.id_persona=op.id_cliente)
inner join planillas.tbl_persona cli on (cli.id_persona=op.id_cliente)
inner join planillas.tbl_persona per on (per.id_persona=op.id_responsableproduccion)
inner join common.tbl_prioridad pri on (pri.id_prioridad=op.id_prioridad)
inner join almacen.tbl_detproducto dp on (dp.id_producto=op.id_producto and dp.id_unidadventa=op.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
inner join common.tbl_estado e on (e.id_estado=op.id_estado)
order by op.id_ordeproduccion

create or replace view produccion.v_ordenproduccionrpt
as
select
(c.descripcion_corta || '' || op.serie || op.numero) as documento,
op.fecha,
p.descripcion_larga as producto,
op.cantidad_producir,
u.desc_larga as unidad,
op.fecha_inicio,
op.fecha_fin,
(per.apell_paterno || ' ' || per.apell_materno || ' ' || per.nombres) as responsable,
e.des_estado as estado,
op.serie,
op.numero,
op.id_comprobante,
op.id_direccion,
op.id_cliente,
op.id_ordeproduccion,
case when op.id_plan is null then 0 else op.id_plan end as id_plan,
op.id_estado,
op.id_producto,
op.id_unidadventa,
op.id_vendedor,
op.serie_lote,
op.inicio_lote,
op.fin_lote,
op.id_responsableproduccion,
op.id_sucursal,
s.id_empresa,
op.imp_totalcosto,
op.imp_totalventa,
op.observaciones,
cli.doc_persona as doc_cliente,
PP.NOM_PLANPRODUCCION,
cli.nombre_razon as cliente,
op.medida_altura,
op.medida_ancho,
op.medida_altura || ' X ' ||op.medida_ancho as medida,
op.medidas_plancha,
op.cantidad_plancha,
op.numeracion,
op.perforacion,
op.nro_colores,
p.servicio as ctrl_stock,
dp.val_unidad,
dp.val_minimo,
op.id_facturacion,
op.id_sucursalfac,
dir.direccion as dir_cliente,
tlf.telefono
from
produccion.tbl_ordenproduccion op
INNER JOIN produccion.tbl_planproduccion pp ON(PP.ID_PLAN=OP.ID_PLAN)
inner join common.tbl_sucursal s on(s.id_sucursal=op.id_sucursal)
inner join common.tbl_comprobante c on (c.id_comprobante=op.id_comprobante)
inner join ventas.tbl_direccion dir on (dir.id_direccion=op.id_direccion and dir.id_persona=op.id_cliente)
inner join planillas.tbl_persona cli on (cli.id_persona=op.id_cliente)
inner join planillas.tbl_persona per on (per.id_persona=op.id_responsableproduccion)
inner join common.tbl_prioridad pri on (pri.id_prioridad=op.id_prioridad)
inner join almacen.tbl_detproducto dp on (dp.id_producto=op.id_producto and dp.id_unidadventa=op.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad u on (u.id_unidadventa=dp.id_unidadventa)
inner join common.tbl_estado e on (e.id_estado=op.id_estado)
left join common.tbl_telefono tlf on(dir.id_direccion=tlf.id_direccion and dir.id_persona=tlf.id_persona and tlf.predeterminado=true)

select * from common.tbl_telefono

DECLARE i integer;
select i=1, FOR i IN 1..10  LOOP '1' END LOOP ; from  almacen.tbl_detproducto

select * from VENTAS.V_DIRECCION  where id_persona='20543372460'

CREATE OR REPLACE VIEW PRODUCCION.V_DETPRODUCCION
AS
SELECT
dp.item,
dp.modo_texto as tipo,
dp.id_producto,
dp.id_almacen,
dp.descripcion_linea as producto,
0::text as stock,
(select u.desc_larga from almacen.tbl_unidad u where u.id_unidadventa=dp.id_unidadproduccion) as unidad,
dp.cantidad,
dp.costo_unitario,
dp.precio_pvunitario,
dp.imp_totcosto,
dp.imp_totpv,
'+'::text as agregar,
dp.id_unidadkardex,
dp.id_listaprecio,
'0.00'::text subtotal,
'0.00'::text porcentigv,
'0.00'::text as imp_bruto,
dp.cantidad as cantidad_editada,
p.servicio as ctrl_stock,
dp.costo_unitario as costo_alm,
dp.id_estado,
pre.val_unidad,
pre.val_minimo_venta,
'0.00'::text imp_igv,
'0.00'::text imp_dscto,
2::integer op,
''::text as id_old,
dp.id_unidadproduccion,
(select detp.val_unidad from  almacen.tbl_detproducto detp inner join almacen.tbl_unidad u on(u.id_unidadventa=detp.id_unidadventa)
where detp.id_unidadventa=dp.id_unidadproduccion and detp.id_producto=dp.id_producto) as val_unidadproduccion,
dp.id_ordeproduccion
FROM  produccion.tbl_detordenproduc dp
inner join almacen.tbl_precio pre on (pre.id_producto=dp.id_producto and pre.id_unidadventa=dp.id_unidadkardex and pre.id_listaprecio=dp.id_listaprecio)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)

CREATE OR REPLACE VIEW seguridad.v_usuario
AS
 SELECT u.id_usuario,
    u.camp2 AS usuario,
    u.camp1,
    u.id_persona,
    u.online,
    u.rpta,
    u.fec_registro,
    u.id_estado,
    u.id_perfil,
    u.lista_precio,
    ua.id_almacen,
    u.clave_credito,
    u.autoriza_credito,
    u.controla_stock,
    u.anular_docsventa,
    u.anular_docscompra,
    u.anular_guiasventa,
    u.anular_cuotaporcobrar,
    u.anular_movcoutas,
    u.generar_descargocuotas,
    u.generar_anticipos,
    u.serie_pedido,
    u.editar_cuotas,
    p.doc_persona as doc_colaborador,
    p.nombre_razon as colaborador,
    u.modifica_precio,
    u.aprobar_lineacredito,
    u.otorga_descuentos,
    u.editar_pedidos,
    u.editar_ventas,
    u.solicitar_clave,
    u.todas_ventas,
    u.visualiza_liquidacioncaja,
    u.visualiza_costo,
    u.unsolomenu ,
    u.multi_pago,
    u.precio_minimo,
    u.comprobante_predeterminado,
    u.mov_caja_obligatorio,
    u.modifica_correlativo
   FROM seguridad.tbl_usuario u
   LEFT JOIN seguridad.v_usuarioalmacen ua ON ua.id_usuario = u.id_usuario AND ua.predeterminado = true
   inner join planillas.tbl_persona p on (p.id_persona=u.id_persona)

select *from common.tbl_formapago

select *from common.tbl_tipoventa

select *from almacen.tbl_precio where id_producto='1382'
select *from seguridad.v_usuario_colaborador

select *from planillas.tbl_persona
alter table seguridad.tbl_usuario add column clave_credito text default '';
alter table seguridad.tbl_usuario add column autoriza_credito boolean default false;
alter table seguridad.tbl_usuario add column controla_stock boolean default false;
alter table seguridad.tbl_usuario add column anular_docsventa boolean default false;
alter table seguridad.tbl_usuario add column anular_docscompra boolean default false;
alter table seguridad.tbl_usuario add column anular_guiasventa boolean default false;
alter table seguridad.tbl_usuario add column anular_cuotaporcobrar boolean default false;
alter table seguridad.tbl_usuario add column anular_movcoutas boolean default false;
alter table seguridad.tbl_usuario add column generar_descargocuotas boolean default false;
alter table seguridad.tbl_usuario add column generar_anticipos boolean default false;
alter table seguridad.tbl_usuario add column serie_pedido text default '';
alter table seguridad.tbl_usuario add column editar_cuotas  boolean default false;

alter table ventas.tbl_detfacturacion add column   id_unimedventa integer DEFAULT 1;

alter table PRODUCCION.TBL_ORDENPRODUCCION add COLUMN		medidas_plancha      text DEFAULT '' ;
alter table PRODUCCION.TBL_ORDENPRODUCCION add COLUMN		cantidad_plancha     INTEGER DEFAULT 0;
alter table PRODUCCION.TBL_ORDENPRODUCCION add COLUMN		numeracion           boolean DEFAULT FALSE ;
alter table PRODUCCION.TBL_ORDENPRODUCCION add COLUMN		perforacion          boolean DEFAULT FALSE ;

create or replace view produccion.v_cambiosunat
as
SELECT id_cambio, descripcion_larga, descripcion_corta, id_estado
  FROM produccion.tbl_cambiosunat;

create or replace view produccion.v_copias
as
select
n.descripcion_larga as copia,
cl.descripcion_larga as color,
cs.descripcion_larga as cambio_sunat,
cs.id_cambio,
cl.id_color,
n.nro_copia,
c.id_estado,
'2'::text as op,
c.id_copias,
c.id_ordeproduccion
from
produccion.tbl_copias c
inner join produccion.tbl_nrocopia n on(n.nro_copia=c.nro_copia)
inner join almacen.tbl_color cl on (cl.id_color=c.id_color)
inner join produccion.tbl_cambiosunat cs on(cs.id_cambio=c.id_cambio)

drop view seguridad.v_usuariosucursal;

create or replace  view seguridad.v_usuariosucursal
as
select
s.id_sucursal,
s.nombre as sucursal,
e.nombre as empresa,
1::integer as op,
us.id_estado,
us.id_usscusucursal,
us.id_usuario,
e.id_empresa,
s.direccion,
trim(e.ruc) as ruc,
e.afecto_percepcion,
e.Nro_resolucion as nroresolucion,
e.emisor_electronico,
e.uss_services,
e.pwd_services,
e.uss_sunat ,
e.pwd_sunat,
e.email_facturacion,
e.pwd_facturacion  ,
e.smtp_facturacion ,
trim(e.port_facturacion) as port_facturacion,
e.endpoint_mobil,
e.genera_mobil,
correo_ssl
from
seguridad.tbl_usuariosucursal us
inner join common.tbl_sucursal s on (s.id_sucursal=us.id_sucursal)
inner join common.tbl_empresa e on (e.id_empresa=s.id_empresa)

select *from ventas.tbl_resumen
select *from common.tbl_empresa
select *from  seguridad.v_usuariosucursal

select * from common.v_listaconfigseries  where id_empresa=1 and comprobante || serie || sucursal ilike  '%%' order by id_configserie

create or replace view caja.v_docsmovcaja
as
select
 cp.descripcion_corta::text || '/'::text || mv.serie::text || '-'::text || mv.numero::text AS documento,
cli.doc_persona,
cli.nombre_razon as cliente,
suc.nombre as pvta,
mv.fecha_mov
FROM ventas.tbl_direccion dir
JOIN planillas.tbl_persona cli ON cli.id_persona = dir.id_persona
JOIN ventas.tbl_sector sec ON dir.id_sector = sec.id_sector
JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
JOIN common.tbl_distrito dis ON dis.id_distrito = z.id_distrito
JOIN common.tbl_provincia prov ON prov.id_provincia = dis.id_provincia
JOIN common.tbl_dpto dep ON dep.id_dpto = prov.id_dpto
JOIN ventas.tbl_facturacion fac ON dir.id_direccion= fac.id_direccion AND dir.id_direccion= fac.id_direccion
INNER JOIN  creditos.tbl_ventacredito fcred on (fac.id_sucursal=fcred.id_sucursal and fac.id_facturacion=fcred.id_facturacion)
INNER JOIN creditos.tbl_credito CRE ON CRE.id_credito= FCRED.id_credito AND CRE.id_sucursal_credito=FCRED.id_sucursal_credito
INNER JOIN creditos.tbl_cuota c ON cre.id_credito = c.id_credito and cre.id_sucursal_credito=c.id_sucursal_credito
INNER JOIN planillas.tbl_persona col ON col.id_persona= fac.id_vendedor::text
INNER JOIN creditos.tbl_detpagocuota DPC ON (C.id_cuotas=dpc.id_cuotas and c.id_credito=dpc.id_credito and c.id_sucursal_credito=dpc.id_sucursal_credito)
INNER JOIN caja.tbl_movcaja MV ON (MV.id_movimcaja=DPC.id_movimcaja AND MV.id_sucursal=DPC.id_sucursal)
INNER JOIN caja.tbl_cajabanco CB ON (CB.id_cajabanco=MV.id_caja_destino)
INNER JOIN SEGURIDAD.TBL_USUARIO U ON (U.ID_USUARIO=MV.ID_USUARIO)
INNER JOIN COMMON.TBL_COMPROBANTE CP ON  (CP.ID_COMPROBANTE=MV.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=MV.ID_MONEDA)
INNER JOIN COMMON.TBL_SUCURSAL SUC ON  SUC.ID_SUCURSAL=MV.ID_SUCURSAL
INNER JOIN COMMON.TBL_TIPOVENTA TV ON TV.ID_TIPOVENTA=FAC.ID_TIPOVENTA

explain ANALYZE SELECT *FROM almacen.v_ventasxproducto;
/*
create or replace view almacen.v_ventasxproducto
as
select
f.numdoc_facturacion,
f.serie_facturacion,
f.id_comprobante,
f.id_direccion,
f.id_cliente,
f.id_sucursal,
c.doc_persona as documento,
c.nombre_razon as cliente,
dc.direccion,
f.fecha_venta,
cp.descripcion_corta || '/' ||f.serie_facturacion ||'-'||f.numdoc_facturacion as nro_documento,
f.valor_venta,
f.imp_igv,
f.imp_total,
df.cantidad,
df.precio,
p.descripcion_larga || case when df.precio=0 then E'\nTRANSFERENCIA GRATUITA' else '' end as producto,
df.importe as tot_detalle,
u.desc_corta as unidad,
m.simbolo as moneda,
f.id_facturacion,
df.id_producto id_producto,
df.id_almacen,
df.id_unidadventa,
f.id_estado,
df.imp_dscto,
df.imp_igv as imp_igvdetalle,
df.item,
p.impuesto,
p.servicio,
tp.coste,
tp.val_unidad,
tp.val_minimo_venta,
cp.descripcion_larga as nom_comprobante,
case when f.imp_igv>0 then null  else 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO' end as mensaje,
fa.descripcion_larga as familia,
fa.id_familia
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on(cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda  m on(m.id_moneda=f.id_moneda)
inner join ventas.tbl_direccion dc on (dc.id_direccion=f.id_direccion and  dc.id_persona=f.id_cliente)
inner join planillas.tbl_persona c on (c.id_persona=dc.id_persona)
inner join ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion  and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_precio tp on (tp.id_listaprecio=df.id_listaprecio and tp.id_producto=df.id_producto and tp.id_unidadventa=df.id_unidadventa)
--inner join almacen.tbl_detproducto dp on (dp.id_producto=tp.id_producto and  dp.id_unidadventa=tp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=tp.id_producto)
inner join almacen.tbl_familia fa on (fa.id_familia=p.id_familia)
inner join almacen.tbl_unidad u on (u.id_unidadventa=df.id_unimedventa)

*/

explain ANALYZE SELECT *FROM almacen.v_ventasxproducto;

select *from almacen.v_ventasxproducto

select * from almacen.v_ventasxproducto   where id_sucursal=1 and id_producto='42' and fecha_venta>='01/05/2016' and fecha_venta<='31/05/2016' and documento || cliente || nro_documento ilike '%%'

select *from ALMACEN.V_PRECIOSPRODUCTO

select  *from almacen.v_ventasxproducto

CREATE OR REPLACE VIEW almacen.v_ventasxproducto
AS
 SELECT f.numdoc_facturacion,
    f.serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END::character varying(12) AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END::character varying(100) AS cliente,
    dc.direccion,
    f.fecha_venta,
    (((cp.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
    case when p.codigo='TXT-01' then DF.descripcion_linea else p.descripcion_larga::text end ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe-COALESCE(nc.importe,0) AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    fa.descripcion_larga AS familia,
    fa.id_familia,
    s.id_empresa,
    df.id_unimedventa,
    tv.descripcion_larga AS tipoventa,
    dis.distrito,
    to_char(f.fecha_venta, 'dd/MM/yyyy'::text) AS fechatext,
    vend.nombre_razon AS vendedor,
    btrim(p.codigo::text) AS codigo_prod,
    z.zona,
    sec.sector,
    f.id_vendedor,
    tp.costo,
    bimestral(f.fecha_venta::date) as bimestre,
    quincena(f.fecha_venta::date) as quincena,
    to_char(now(),'q') as trimestre,
    date_part('month',f.fecha_venta)::integer as mes,
    date_part('year',f.fecha_venta)::integer as anio

   FROM ventas.tbl_facturacion f
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp on emp.id_empresa=s.id_empresa
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dc.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = tp.id_producto::text
     JOIN almacen.tbl_familia fa ON fa.id_familia = p.id_familia
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
  LEFT JOIN (
     select id_facturacion ,id_sucursal,dfn.id_producto,dfn.id_unidadventa,dfn.cantidad,dfn.importe from  ventas.tbl_facturacion n
     inner join ventas.tbl_detfacturacion dfn on n.id_facturacion=dfn.id_facturacion and n.id_sucursal=dfn.id_sucursal
	where n.id_estado=1
     ) nc ON nc.id_facturacion = f.id_facturacionref AND f.id_sucursalref = nc.id_sucursal and nc.id_producto=df.id_producto and nc.id_unidadventa=df.id_unidadventa

  WHERE f.id_estado = 1 AND df.id_estado = 1/* AND NOT ((f.id_facturacion::text || f.id_sucursal::text) || btrim(df.id_producto::text) IN ( SELECT (ff.id_facturacionref::text || ff.id_sucursalref::text) || btrim(dff.id_producto::text)
           FROM ventas.tbl_facturacion ff
             JOIN ventas.tbl_detfacturacion dff ON ff.id_facturacion = dff.id_facturacion AND ff.id_sucursal = dff.id_sucursal
          WHERE ff.nota_credito = true))*/
  ORDER BY p.id_producto, (f.fecha_venta::date) DESC;

select *from ventas.v_ventasdetallada
select *from common.tbl_empresa

select *from ventas.tbl_Detfacturacion

select replace(upper((uuid_in((md5(((random())::text || (now())::text)))::cstring))::text),'-','')

CREATE OR REPLACE VIEW ventas.v_ventasdetallada
AS
 SELECT f.numdoc_facturacion,
    f.serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END::character varying(12) AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END::character varying(100) AS cliente,
    dc.direccion,
    f.fecha_venta,
    (((cp.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
    case when p.codigo='TXT-01' then DF.descripcion_linea else p.descripcion_larga::text end ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe  AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    fa.descripcion_larga AS familia,
    fa.id_familia,
    s.id_empresa,
    df.id_unimedventa,
    tv.descripcion_larga AS tipoventa,
    dis.distrito,
    to_char(f.fecha_venta, 'dd/MM/yyyy'::text) AS fechatext,
    vend.nombre_razon AS vendedor,
    btrim(p.codigo::text) AS codigo_prod,
    z.zona,
    sec.sector,
    f.id_vendedor,
    tp.costo,
    bimestral(f.fecha_venta::date) as bimestre,
    quincena(f.fecha_venta::date) as quincena,
    to_char(now(),'q') as trimestre,
    date_part('month',f.fecha_venta)::integer as mes,
    date_part('year',f.fecha_venta)::integer as anio,
    emp.nombre as empresa,
    emp.ruc as ruc_empresa,
    s.direccion as dir_sucursal,
    f.id_facturacion::text || f.id_sucursal::text as id_comprobanteventa,
    f.id_tipoventa,
    case when f.id_tipoventa=1 then f.imp_total else 0.00 end	as imp_contado,
    case when f.id_tipoventa=2 then f.imp_total else 0.00 end	as imp_credito,
    case when f.id_tipoventa=1 then df.importe else 0.00 end	as imp_contado_det,
    case when f.id_tipoventa=2 then df.importe else 0.00 end	as imp_credito_det
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp on emp.id_empresa=s.id_empresa
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dc.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = tp.id_producto::text
     JOIN almacen.tbl_familia fa ON fa.id_familia = p.id_familia
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text

  WHERE f.id_estado = 1 AND df.id_estado = 1 and f.nota_credito is false/* AND NOT ((f.id_facturacion::text || f.id_sucursal::text) || btrim(df.id_producto::text) IN ( SELECT (ff.id_facturacionref::text || ff.id_sucursalref::text) || btrim(dff.id_producto::text)
           FROM ventas.tbl_facturacion ff
             JOIN ventas.tbl_detfacturacion dff ON ff.id_facturacion = dff.id_facturacion AND ff.id_sucursal = dff.id_sucursal
          WHERE ff.nota_credito = true))*/
  ORDER BY (f.fecha_venta::date) asc,serie_facturacion,(f.id_facturacion::text || f.id_sucursal::text)::bigint asc,  p.id_producto  asc;

select *from ventas.tbl_detfacturacion

select *from ventas.ventaDetalladaXdocumento

create or replace view ventas.v_detalleventasxliquidacion
as
 SELECT f.numdoc_facturacion,
    f.serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END::character varying(12) AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END::character varying(100) AS cliente,
    dc.direccion,
    f.fecha_venta,
    (((cp.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
    p.descripcion_larga::text ||
        CASE
            WHEN df.precio = 0::numeric THEN '
TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    fa.descripcion_larga AS familia,
    fa.id_familia,
    s.id_empresa,
    df.id_unimedventa,
    tv.descripcion_larga AS tipoventa,
    dis.distrito,
    to_char(f.fecha_venta, 'dd/MM/yyyy'::text) AS fechatext,
    vend.nombre_razon AS vendedor,
    btrim(p.codigo::text) AS codigo_prod,
    z.zona,
    sec.sector,
    f.id_vendedor,
    tp.costo,
    bimestral(f.fecha_venta::date) as bimestre,
    quincena(f.fecha_venta::date) as quincena,
    to_char(now(),'q') as trimestre,
    date_part('month',f.fecha_venta)::integer as mes,
    date_part('year',f.fecha_venta)::integer as anio,
    mc.liquidacion_id,
    ef.des_estado as estado
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dc.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = tp.id_producto::text
     JOIN almacen.tbl_familia fa ON fa.id_familia = p.id_familia
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN COMMON.TBL_ESTADO EF ON ef.id_estado=f.id_estado
     JOIN CAJA.TBL_MOVCAJA MC ON f.ID_FACTURACION=mc.id_facturacion and f.id_sucursal=mc.id_sucursal
  WHERE  df.id_estado = 1 AND NOT ((f.id_facturacion::text || f.id_sucursal::text) || btrim(df.id_producto::text) IN ( SELECT (ff.id_facturacionref::text || ff.id_sucursalref::text) || btrim(dff.id_producto::text)
           FROM ventas.tbl_facturacion ff
             JOIN ventas.tbl_detfacturacion dff ON ff.id_facturacion = dff.id_facturacion AND ff.id_sucursal = dff.id_sucursal
          WHERE ff.nota_credito = true))
  ORDER BY f.id_sucursal,f.id_facturacion, (f.fecha_venta::date) DESC;

select *from common.tbl_estado

select to_char(now(),'q')

select *from ventas.tbl_detfacturacion

select * from almacen.v_ventasxproducto   where id_producto='1' and fecha_venta>='01/11/2016' and fecha_venta<='30/11/2016'
SELECT *FROM VENTAS.TBL_SECTOR
SELECT *FROM COMMON.TBL_TIPOVENTA
select *from ventas.V_CABPREVENTA

select *from compras.v_comprasxproducto

select *from compras.tbl_detcompra

CREATE OR REPLACE VIEW compras.v_comprasxproducto
AS
 SELECT f.nro_doc_compra,
    f.serie,
    f.id_comprobante,
    f.id_dirproveedor,
    f.id_proveedor,
    f.id_sucursalcompra,
    c.doc_persona AS documento,
    c.nombre_razon AS proveedor,
    dc.direccion,
    f.fec_documento,
    (((cp.descripcion_corta::text || '/'::text) || f.serie::text) || '-'::text) || f.nro_doc_compra::text AS nro_documento,
    case when f.id_moneda=1 then f.imp_venta else f.imp_venta *f.tipo_cambio end AS valor_venta,
    case when f.id_moneda=1 then f.imp_igv else f.imp_igv*f.tipo_cambio end as imp_igv,
    case when f.id_moneda=1 then f.imp_total else f.imp_total*f.tipo_cambio   end  as imp_total,
    df.cantidad,
    case when f.id_moneda=1 then df.precio else df.precio*tipo_cambio end as precio,
    p.descripcion_larga::text ||
        CASE
            WHEN df.precio = 0::numeric THEN '
TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.imp_incluido AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_compra,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    0.00 AS coste,
    dp.val_unidad,
    dp.val_minimo,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    fa.descripcion_larga AS familia,
    fa.id_familia,
    p.codigo,
    df.imp_flete,
    (case when f.id_moneda=1 then df.precio else df.precio*tipo_cambio end) +df.imp_flete as imp_costo,
    f.anio::text || lpad(f.id_mes::text,2,'0') ||'-'|| f.id_compra as Periodo
   FROM compras.tbl_compra f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_dirproveedor AND dc.id_persona::text = f.id_proveedor::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN compras.tbl_detcompra df ON f.id_sucursalcompra = df.id_sucursalcompra   AND f.id__compra = df.id__compra
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = df.id_producto::text AND dp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_familia fa ON fa.id_familia = p.id_familia
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
  WHERE df.id_estado = 1 AND f.id_estado = 1 order by p.id_producto;

select *from compras.tbl_compra

select lpad('4',5,'0')
select *from almacen.tbl_detproducto
select *from compras.tbl_compra
select *from compras.tbl_detcompra

select * from ventas.v_listar_cabecera_facturacion

select *from almacen.tbl_familia

select *from COMPRAS.V_ORDENCOMPRA

CREATE OR REPLACE VIEW COMPRAS.V_ORDENCOMPRA
AS
SELECT
oc.id_cotizaorden,
(cp.descripcion_corta || oc.serie || oc.numero) as orden_compra,
oc.fecha_registro,
prov.doc_persona as rucprov,
prov.nombre_razon as proveedor,
oc.fecha_entrega,
m.simbolo as moneda,
oc.imp_total,
e.des_estado as estado,
oc.id_estado,
oc.id_proveedor,
oc.id_dirproveedor,
cli.doc_persona as ruccli,
cli.nombre_razon as cliente,
oc.id_direccionfactura,
oc.id_clientefactura,
res.nombre_razon as responsable,
oc.id_responsablecompra,
sol.nombre_razon as solicitante,
oc.id_solicitoordencompra,
oc.imp_bruto,
oc.imp_dscto,
oc.valor_venta,
oc.imp_igv,
oc.imp_persepcion,
oc.serie,
oc.numero,
oc.lugar_entrega,
oc.id_comprobante,
oc.id_sucursal,
oc.tipo_cambio
FROM
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cp on (cp.id_comprobante=oc.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=oc.id_moneda)
inner join common.tbl_estado e on (e.id_estado=oc.id_estado)
inner join ventas.tbl_direccion dirprov on (dirprov.id_direccion=oc.id_dirproveedor and dirprov.id_persona=oc.id_proveedor)
inner join planillas.tbl_persona prov on (prov.id_persona=dirprov.id_persona)
inner join ventas.tbl_direccion dircli on (dircli.id_direccion=oc.id_direccionfactura)
inner join planillas.tbl_persona cli on (cli.id_persona=dircli.id_persona)
inner join planillas.tbl_persona res on (res.id_persona=oc.id_responsablecompra)
inner join planillas.tbl_persona sol on (sol.id_persona=oc.id_solicitoordencompra)

select * from compras.V_ORDENCOMPRARPT   where id_cotizaorden=12

CREATE OR REPLACE VIEW COMPRAS.V_SEARCHORDENCOMPRA
AS
SELECT
oc.id_cotizaorden,
(cp.descripcion_corta || oc.serie || oc.numero) as orden_compra,
oc.fecha_registro,
prov.doc_persona as rucprov,
prov.nombre_razon as proveedor,
oc.fecha_entrega,
m.simbolo as moneda,
oc.imp_total,
e.des_estado as estado,
oc.id_estado,
oc.id_proveedor,
oc.id_dirproveedor,
cli.doc_persona as ruccli,
cli.nombre_razon as cliente,
oc.id_direccionfactura,
oc.id_clientefactura,
res.nombre_razon as responsable,
oc.id_responsablecompra,
sol.nombre_razon as solicitante,
oc.id_solicitoordencompra,
oc.imp_bruto,
oc.imp_dscto,
oc.valor_venta,
oc.imp_igv,
oc.imp_persepcion,
oc.serie,
oc.numero,
oc.lugar_entrega,
((select sum(det.cantidad) from compras.tbl_detordencotizacomp det where (det.id_cotizaorden=oc.id_cotizaorden))-
COALESCE((select sum(dmov.cantidad)from almacen.tbl_cabmovalm mov
inner join almacen.tbl_detmovalm dmov on (mov.id_movimiento=dmov.id_movimiento)
where mov.schema='compras' and mov.tabla='tbl_ordencotizacompra' and oc.id_cotizaorden::text=mov.codigorefk AND mov.id_estado=1),0)) as cantidadpendiente
FROM
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cp on (cp.id_comprobante=oc.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=oc.id_moneda)
inner join common.tbl_estado e on (e.id_estado=oc.id_estado)
inner join ventas.tbl_direccion dirprov on (dirprov.id_direccion=oc.id_dirproveedor and dirprov.id_persona=oc.id_proveedor)
inner join planillas.tbl_persona prov on (prov.id_persona=dirprov.id_persona)
inner join ventas.tbl_direccion dircli on (dircli.id_direccion=oc.id_direccionfactura)
inner join planillas.tbl_persona cli on (cli.id_persona=dircli.id_persona)
inner join planillas.tbl_persona res on (res.id_persona=oc.id_responsablecompra)
inner join planillas.tbl_persona sol on (sol.id_persona=oc.id_solicitoordencompra)

select *from compras.tbl_ordencotizacompra oc
COALESCE((select sum(det.cantidad) from
compras.tbl_ordencotizacompra oc
inner join compras.tbl_detordencotizacomp det on (det.id_cotizaorden=oc.id_cotizaorden)
where oc.id_cotizaorden::text=cvm.codigorefk and cvm.schema='compras' and cvm.tabla='tbl_compra'),0) as ordencompra

select *from compras.V_DETORDENCOMPRA

select * from compras.V_ORDENCOMPRARPT   where id_cotizaorden=1

select * from compras.V_ORDENCOMPRA  where orden_compra || rucprov||proveedor ilike '%%'

CREATE OR REPLACE  VIEW COMPRAS.V_DETORDENCOMPRA
AS
SELECT
doc.id_cotizaorden,
doc.item,
case when doc.modo_texto=true then 'T-Texto' else '-Regular' end as modo_texto,
p.id_producto,
p.descripcion_larga as producto,
u.desc_corta as unidad,
doc.cantidad,
doc.costo_unitario,
doc.porcent_dscto,
doc.imp_igv,
doc.valor_venta,
doc.total,
'+'::text as agregad,
doc.imp_dscto,
doc.imp_bruto,
doc.id_unidad,
doc.id_listaprecio,
doc.porcent_igv,
doc.cantidad as cantidad_editada,
p.servicio as ctrl_stcok,
prec.coste as costo_almacen,
doc.id_estado,
prec.val_unidad,
prec.val_minimo_venta,
'2'::text as op,
(doc.id_producto || ';'|| doc.id_unidad ||';'|| doc.id_listaprecio) as id_old,
doc.total_dolares*tipo_cambio as total_dolares,
doc.peso
FROM compras.tbl_ordencotizacompra oc
inner join COMPRAS.tbl_detordencotizacomp doc on oc.id_cotizaorden=doc.id_cotizaorden
inner join almacen.tbl_precio prec on (prec.id_producto=doc.id_producto and  prec.id_unidadventa=doc.id_unidad and  prec.id_listaprecio=doc.id_listaprecio)
inner join almacen.tbl_producto p on (p.id_producto=prec.id_producto)
inner join almacen.tbl_unidad u  on (u.id_unidadventa=doc.id_unidad)

CREATE OR REPLACE VIEW COMPRAS.V_ORDENCOMPRARPT
AS
SELECT
oc.id_cotizaorden,
(cp.descripcion_corta || oc.serie || oc.numero) as orden_compra,
oc.fecha_registro,
coalesce(prov.doc_persona,'') as rucprov,
coalesce(prov.nombre_razon,'') as proveedor,
coalesce(dirprov.direccion,'') as dirprov,
oc.fecha_entrega,
m.simbolo as moneda,
TC.descripcion_larga as tipo_compra,
oc.imp_total,
e.des_estado as estado,
oc.id_estado,
oc.id_proveedor,
oc.id_dirproveedor,
cli.doc_persona as ruccli,
cli.nombre_razon as cliente,
dircli.direccion as direccion_clie,
oc.id_direccionfactura,
oc.id_clientefactura,
res.nombre_razon as responsable,
oc.id_responsablecompra,
sol.nombre_razon as solicitante,
oc.id_solicitoordencompra,
oc.imp_bruto,
oc.imp_dscto,
oc.valor_venta,
oc.imp_igv,
oc.imp_persepcion,
oc.serie,
oc.numero,
oc.lugar_entrega,
doc.item,
p.id_producto,
p.descripcion_larga as producto,
u.desc_corta as unidad,
doc.cantidad as cantidad_det,
doc.costo_unitario as costo_unitario_det,
doc.porcent_dscto as porcent_dscto_det,
doc.imp_igv as imp_igv_det,
doc.valor_venta as valor_venta_det,
doc.total,
doc.imp_dscto as imp_dscto_det,
doc.imp_bruto as imp_bruto_det,
doc.id_unidad,
doc.id_listaprecio,
doc.porcent_igv,
doc.cantidad as cantidad_editada,
p.servicio as ctrl_stcok,
prec.coste as costo_almacen,
doc.id_estado AS id_estado_det,
prec.val_unidad,
prec.val_minimo_venta,
oc.observaciones
FROM
compras.tbl_ordencotizacompra oc
inner join COMPRAS.tbl_detordencotizacomp doc on (oc.id_cotizaorden=doc.id_cotizaorden)
inner join almacen.tbl_precio prec on (prec.id_producto=doc.id_producto and  prec.id_unidadventa=doc.id_unidad and  prec.id_listaprecio=doc.id_listaprecio)
inner join almacen.tbl_producto p on (p.id_producto=prec.id_producto)
inner join almacen.tbl_unidad u  on (u.id_unidadventa=doc.id_unidad)
inner join common.tbl_comprobante cp on (cp.id_comprobante=oc.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=oc.id_moneda)
inner join common.tbl_estado e on (e.id_estado=oc.id_estado)
INNER JOIN COMMON.TBL_TIPOVENTA TC ON (TC.ID_TIPOVENTA=OC.ID_TIPOVENTA)
inner join ventas.tbl_direccion dirprov on (dirprov.id_direccion=oc.id_dirproveedor and dirprov.id_persona=oc.id_proveedor)
inner join planillas.tbl_persona prov on (prov.id_persona=dirprov.id_persona)
inner join ventas.tbl_direccion dircli on (dircli.id_direccion=oc.id_direccionfactura)
inner join planillas.tbl_persona cli on (cli.id_persona=dircli.id_persona)
inner join planillas.tbl_persona res on (res.id_persona=oc.id_responsablecompra)
inner join planillas.tbl_persona sol on (sol.id_persona=oc.id_solicitoordencompra)

select *from common.tbl_tipoventa
select *from compras.tbl_ordencotizacompra oc

CREATE OR REPLACE  VIEW COMPRAS.V_SEARCHDETORDENCOMPRA
AS
SELECT
doc.id_cotizaorden,
doc.item,
case when doc.modo_texto=true then 'T-Texto' else '-Regular' end as modo_texto,
p.id_producto,
p.descripcion_larga as producto,
u.desc_corta as unidad,
doc.cantidad- COALESCE(((SELECT sum(dmov.cantidad) AS sum
           FROM almacen.tbl_cabmovalm mov
      JOIN almacen.tbl_detmovalm dmov ON mov.id_movimiento = dmov.id_movimiento
     WHERE dmov.id_unidadingreso = doc.id_unidad AND dmov.id_producto = doc.id_producto AND
mov.codigorefk = doc.id_cotizaorden::text and tabla='tbl_ordencotizacompra' and schema='compras'  and mov.id_estado=1)),0) as cantidad_disponible,
doc.costo_unitario,
doc.porcent_dscto,
doc.imp_igv,
doc.valor_venta,
doc.total,
'+'::text as agregad,
doc.imp_dscto,
doc.imp_bruto,
doc.id_unidad,
doc.id_listaprecio,
doc.porcent_igv,
doc.cantidad as cantidad_editada,
p.servicio as ctrl_stcok,
prec.coste as costo_almacen,
doc.id_estado,
prec.val_unidad,
prec.val_minimo_venta,
'2'::text as op,
(doc.id_producto || ';'|| doc.id_unidad ||';'|| doc.id_listaprecio) as id_old,
p.gestiona_lotes,
p.gestiona_series
FROM COMPRAS.tbl_detordencotizacomp doc
inner join almacen.tbl_precio prec on (prec.id_producto=doc.id_producto and  prec.id_unidadventa=doc.id_unidad and  prec.id_listaprecio=doc.id_listaprecio)
inner join almacen.tbl_producto p on (p.id_producto=prec.id_producto)
inner join almacen.tbl_unidad u  on (u.id_unidadventa=doc.id_unidad)

create or replace  view caja.vrpt_liquidacion_ventas_contado
as
select
com.descripcion_corta as comprobante,
(fac.serie_facturacion || '-' ||fac.numdoc_facturacion) as nro_facturacion,
cli.nombre_razon || '->' || mov.glosa as cliente,
m.simbolo as moneda,
mov.id_persona as id_vendedor,
fac.imp_total,
fp.descripcion as formapago,
COALESCE(dmov.nro_operacion,'') as nro_operacion,
case when m.id_moneda=1 then dmov.imp_pago else 0.00 end as imp_soles,
case when m.id_moneda=2 then dmov.imp_pago  else 0.00  end as imp_dolares,
dmov.id_formapago,
mov.id_turno,
mov.fecha_mov::date as fecha_mov,
mov.id_caja_destino as id_caja,
mov.id_movimcaja,
mov.id_sucursal,
(commov.descripcion_corta || '/' || mov.serie || '-' || mov.numero) as comprobante_mov,
'000' as id_concepto,
'Por documento' as concepto,
case when m.id_moneda=1 then dmov.imp_pago else 0.00 end as importe_contable
from ventas.tbl_facturacion fac
inner join common.tbl_comprobante com on (com.id_comprobante=fac.id_comprobante)
inner join ventas.tbl_direccion dir on (dir.id_direccion=fac.id_direccion and  dir.id_persona=fac.id_cliente)
inner join caja.tbl_movcaja mov  on (fac.id_sucursal=fac.id_sucursal and  fac.id_facturacion=mov.id_facturacion)
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join caja.tbl_detmovpago dmov on (mov.id_movimcaja=dmov.id_movimcaja and  mov.id_sucursal=dmov.id_sucursal)
inner join common.tbl_moneda m on (m.id_moneda=dmov.id_moneda)
inner join common.tbl_formapago  fp on (fp.id_formapago=dmov.id_formapago)
inner join common.tbl_tipocambio tc on (tc.id_tipocambio=mov.id_tipocambio)
inner join common.tbl_comprobante commov on (commov.id_comprobante=mov.id_comprobante)
union all
select
commov.descripcion_corta as comprobante,
mov.glosa as nro_facturacion,
cli.nombre_razon  || '->' || mov.glosa as cliente ,
m.simbolo as moneda,
mov.id_persona as id_vendedor,
dmov.imp_pago as imp_total,
case when mov.signo=-1 then 'Egresos' else  fp.descripcion end as formapago,
COALESCE(dmov.nro_operacion,'') as nro_operacion,
case when m.id_moneda=1 then  (case when mov.signo=-1 then dmov.imp_pago*-1 else dmov.imp_pago end ) else 0.00 end as imp_soles,
case when m.id_moneda=2 then (case when mov.signo=-1 then dmov.imp_pago*-1 else dmov.imp_pago end ) else 0.00  end as imp_dolares,
case when mov.signo=-1 then '99' else  dmov.id_formapago end as id_formapago,
mov.id_turno,
mov.fecha_mov::Date as fecha_mov,
mov.id_caja_destino as id_caja,
mov.id_movimcaja,
mov.id_sucursal,
(commov.descripcion_corta || '/' || mov.serie || '-' || mov.numero) as comprobante_mov,
cto.id_concepto,
cto.descripcion_larga as concepto,
case when mov.id_comprobante=4 then  0  else (case when m.id_moneda=1 then  (case when mov.signo=-1 then dmov.imp_pago*-1 else dmov.imp_pago end ) else 0.00 end ) end as importe_contable
from caja.tbl_movcaja mov
inner join planillas.tbl_persona cli on (cli.id_persona=mov.id_personaingdiv)
inner join caja.tbl_detmovpago dmov on (mov.id_movimcaja=dmov.id_movimcaja and  mov.id_sucursal=dmov.id_sucursal)
inner join common.tbl_moneda m on (m.id_moneda=dmov.id_moneda)
inner join common.tbl_formapago  fp on (fp.id_formapago=dmov.id_formapago)
inner join common.tbl_tipocambio tc on (tc.id_tipocambio=mov.id_tipocambio)
inner join common.tbl_comprobante commov on (commov.id_comprobante=mov.id_comprobante)
inner join common.tbl_concepto cto on (cto.id_concepto=mov.id_concepto)
order by id_formapago,id_concepto

select *from common.v_concepto

CREATE OR REPLACE VIEW common.v_concepto
AS
 SELECT est.id as id_concepto,
    est.descripcion_larga,
    COALESCE(est.descripcion_corta, ''::character varying) AS descripcion_corta,
    est.tipo_trans,
        CASE
            WHEN est.tipo_trans = 'I'::bpchar THEN 'INGRESO'::text
            ELSE 'SALIDA'::text
        END AS tipo_trans_completa,
    est.comentario,
    em.id_origen,
    em.descripcion_larga AS origen,
    est.presupuesto,
    est.presu_dias,
    est.ajustar,
    e.id_estado,
    e.des_estado AS estado,
    COALESCE(em.descripcion_corta,'') as abrev_origen,
    est.enterprise_id
   FROM common.tbl_concepto est
   JOIN common.tbl_origen em ON est.id_origen::text = em.id_origen::text
   JOIN common.tbl_estado e ON est.id_estado = e.id_estado;

select *from common.v_transaccion

CREATE OR REPLACE VIEW common.v_transaccion
AS
 SELECT est.id_tranzaccion,
    est.descripcion_larga || '('|| cast(est.id_tranzaccion as text)||')' descripcion_larga ,
    est.descripcion_corta,
    est.modulo,
    e.id_estado,
    e.des_estado AS estado,
    est.tipo as tipo_tranzaccion
   FROM common.tbl_tranzaccion est
   JOIN common.tbl_estado e ON e.id_estado = est.id_estado
	order by est.id_tranzaccion
   ;

ALTER TABLE ALMACEN.TBL_CABMOVALM ADD COLUMN id_cotizaorden       BIGINT NULL ;
ALTER TABLE ALMACEN.TBL_CABMOVALM ADD COLUMN id_ordeproduccion    bigint NULL ;

CREATE  INDEX XIF18ALMACEN_TBL_CABMOVIMIENTO ON ALMACEN.TBL_CABMOVALM
(id_cotizaorden   ASC);

ALTER TABLE ALMACEN.TBL_CABMOVALM
	ADD FOREIGN KEY (id_cotizaorden) REFERENCES COMPRAS.TBL_ORDENCOTIZACOMPRA (id_cotizaorden) ON DELETE SET NULL;

select *from ALMACEN.V_NOTAINGRESO

select * from almacen.V_NOTAINGRESO   where id_sucursal=1 and DOCUMENTO || PROVEEDOR || DOC_PROVEEDOR ilike '%%' order by FECHA,numero desc limit 100

CREATE OR REPLACE VIEW ALMACEN.V_NOTAINGRESO
AS
SELECT
(CVM.SERIE || '-' || CVM.NUMERO) AS DOCUMENTO,
COALESCE(CVM.FECHA,now()) as Fecha,
PROV.NOMBRE_RAZON AS PROVEEDOR,
M.SIMBOLO,
TC.VENTA AS TIPO_CAMBIO,
CVM.IMP_NETO,
E.DES_ESTADO AS ESTADO,
E.ID_ESTADO,
PROV.DOC_PERSONA AS DOC_PROVEEDOR,
id_movimiento,
CVM.serie,
CVM.numero,
CVM.id_comprobante       ,
CVM.id_comprobanteref    ,
CVM.id_almdestino        ,
CVM.id_tranzaccion       ,
COALESCE(CVM.doc_referencia,'') as doc_referencia       ,
CVM.id_motivo            ,
CVM.fec_llegada          ,
CVM.imp_bruto            ,
CVM.imp_dscto            ,
CVM.porcent_dscto	     ,
CVM.valor_venta          ,
CVM.imp_igv              ,
CVM.glosa                ,
CVM.id_sucursal          ,
CVM.id_dirclientprov     ,
CVM.id_clientprov        ,
CVM.id_igv               ,
CVM.id_tipocambio        ,
CVM.id_moneda   ,
CVM.id_vendedor,
I.IMP_IGV AS PORCENT_IGV,
cvm.id_operacion,
cvm.val_ventaexonerado,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_cotizaorden=cvm.id_cotizaorden ),'') as ordencompra,
ALM.DESCALMACEN AS ALMACEN,
ALM.ID_ALMACEN,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
produccion.tbl_ordenproduccion oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_ordeproduccion=cvm.id_ordeproduccion ),'') as Ordenproduccion,
COALESCE(cvm.id_ordeproduccion,0) as id_ordeproduccion,
COALESCE(cvm.id_cotizaorden,0) AS id_ordencompra,
S.ID_EMPRESA,
COALESCE(CVM.serie_guia,'') as serie_guia,
CVM.serie_comprobante,
CVM.numero_comprobante,
CVM.id_comprobanteguia,
CASE WHEN LENGTH(TRIM(CVM.numero_comprobante))>0 THEN CREF.descripcion_corta ||'/'||CVM.serie_comprobante ||'-'||CVM.numero_comprobante ELSE '-' END  AS NRO_COMPROBANTE
FROM almacen.tbl_cabmovalm CVM
INNER JOIN PLANILLAS.TBL_PERSONA PROV ON (CVM.id_clientprov=PROV.ID_PERSONA)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=CVM.ID_COMPROBANTE)
LEFT JOIN  COMMON.TBL_COMPROBANTE CREF ON (CREF.ID_COMPROBANTE=CVM.ID_COMPROBANTEREF)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=CVM.ID_MONEDA)
INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=CVM.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CVM.ID_ESTADO)
INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=CVM.ID_IGV)
INNER JOIN ALMACEN.TBL_ALMACEN ALM ON (ALM.ID_ALMACEN=CVM.ID_ALMDESTINO)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=CVM.id_sucursal) and cvm.ingreso=true

select *from ALMACEN.V_NOTAINGRESO_REFCOMPRA

CREATE OR REPLACE VIEW ALMACEN.V_NOTAINGRESO_REFCOMPRA
AS
SELECT
(CVM.SERIE || '-' || CVM.NUMERO) AS DOCUMENTO,
CVM.FECHA,
PROV.NOMBRE_RAZON AS PROVEEDOR,
M.SIMBOLO,
TC.VENTA AS TIPO_CAMBIO,
CVM.IMP_NETO,
E.DES_ESTADO AS ESTADO,
E.ID_ESTADO,
PROV.DOC_PERSONA AS DOC_PROVEEDOR,
id_movimiento,
CVM.serie,
CVM.numero,
CVM.id_comprobante       ,
CVM.id_comprobanteref    ,
CVM.id_almdestino        ,
CVM.id_tranzaccion       ,
COALESCE(CVM.doc_referencia,'') as doc_referencia       ,
CVM.id_motivo            ,
CVM.fec_llegada          ,
CVM.imp_bruto            ,
CVM.imp_dscto            ,
CVM.porcent_dscto	     ,
CVM.valor_venta          ,
CVM.imp_igv              ,
CVM.glosa                ,
CVM.id_sucursal          ,
CVM.id_dirclientprov     ,
CVM.id_clientprov        ,
CVM.id_igv               ,
CVM.id_tipocambio        ,
CVM.id_moneda   ,
CVM.id_vendedor,
I.IMP_IGV AS PORCENT_IGV,
cvm.id_operacion,
cvm.val_ventaexonerado,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_cotizaorden=cvm.id_cotizaorden ),'') as ordencompra,
ALM.DESCALMACEN AS ALMACEN,
ALM.ID_ALMACEN,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
produccion.tbl_ordenproduccion oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_ordeproduccion=cvm.id_ordeproduccion ),'') as Ordenproduccion,
COALESCE(cvm.id_ordeproduccion,0) as id_ordeproduccion,
COALESCE(cvm.id_cotizaorden,0) AS id_ordencompra,
S.ID_EMPRESA,
COALESCE(CVM.serie_guia,'') as serie_guia,
CVM.serie_comprobante,
CVM.numero_comprobante,
CVM.id_comprobanteguia,
CASE WHEN LENGTH(TRIM(CVM.numero_comprobante))>0 THEN CREF.descripcion_corta ||'/'||CVM.serie_comprobante ||'-'||CVM.numero_comprobante ELSE '-' END  AS NRO_COMPROBANTE,
DIR.DIRECCION
FROM almacen.tbl_cabmovalm CVM
INNER JOIN VENTAS.TBL_DIRECCION DIR ON (DIR.ID_DIRECCION=CVM.id_dirclientprov AND DIR.ID_PERSONA=CVM.id_clientprov)
INNER JOIN PLANILLAS.TBL_PERSONA PROV ON (PROV.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=CVM.ID_COMPROBANTE)
LEFT JOIN  COMMON.TBL_COMPROBANTE CREF ON (CREF.ID_COMPROBANTE=CVM.ID_COMPROBANTEREF)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=CVM.ID_MONEDA)
INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=CVM.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CVM.ID_ESTADO)
INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=CVM.ID_IGV)
INNER JOIN ALMACEN.TBL_ALMACEN ALM ON (ALM.ID_ALMACEN=CVM.ID_ALMDESTINO)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=CVM.id_sucursal) and cvm.ingreso=true
WHERE  CVM.ing_conversion=false and
not exists(
	select *from compras.tbl_compra cp
	where cp.id_estado=1 and cp.id__compra=CVM.id_movimientoref and cp.id_sucursalcompra=CVM.id_sucursalref and CVM.schema='compras' and CVM.tabla='tbl_compra')

select *from ALMACEN.V_NOTAINGRESO_LIST

CREATE OR REPLACE VIEW ALMACEN.V_NOTAINGRESO_LIST
AS
SELECT (cvm.serie::text || '-'::text) || cvm.numero::text AS documento,
    cvm.fecha,
    prov.nombre_razon AS proveedor,
    m.simbolo,
    tc.venta AS tipo_cambio,
    cvm.imp_neto,
    e.des_estado AS estado,
    e.id_estado,
    prov.doc_persona AS doc_proveedor,
    cvm.id_movimiento,
    cvm.serie,
    cvm.numero,
    cvm.id_comprobante,
    cvm.id_comprobanteref,
    cvm.id_almdestino,
    cvm.id_tranzaccion,
    COALESCE(cvm.doc_referencia, ''::character varying) AS doc_referencia,
    cvm.id_motivo,
    cvm.fec_llegada,
    cvm.imp_bruto,
    cvm.imp_dscto,
    cvm.porcent_dscto,
    cvm.valor_venta,
    cvm.imp_igv,
    cvm.glosa,
    cvm.id_sucursal,
    cvm.id_dirclientprov,
    cvm.id_clientprov,
    cvm.id_igv,
    cvm.id_tipocambio,
    cvm.id_moneda,
    cvm.id_vendedor,
    i.imp_igv AS porcent_igv,
    cvm.id_operacion,
    cvm.val_ventaexonerado,
    COALESCE(( SELECT (((cop.descripcion_corta::text || '/'::text) || oc.serie::text) || '-'::text) || oc.numero::text
           FROM compras.tbl_ordencotizacompra oc
             JOIN common.tbl_comprobante cop ON cop.id_comprobante = oc.id_comprobante
          WHERE oc.id_cotizaorden = cvm.id_cotizaorden), ''::text) AS ordencompra,
    alm.descalmacen AS almacen,
    alm.id_almacen,
    COALESCE(( SELECT (((cop.descripcion_corta::text || '/'::text) || oc.serie::text) || '-'::text) || oc.numero::text
           FROM produccion.tbl_ordenproduccion oc
             JOIN common.tbl_comprobante cop ON cop.id_comprobante = oc.id_comprobante
          WHERE oc.id_ordeproduccion = cvm.id_ordeproduccion), ''::text) AS ordenproduccion,
    COALESCE(cvm.id_ordeproduccion, 0::bigint) AS id_ordeproduccion,
    COALESCE(cvm.id_cotizaorden, 0::bigint) AS id_ordencompra,
    s.id_empresa,
    COALESCE(cvm.serie_guia, ''::bpchar) AS serie_guia,
    cvm.serie_comprobante,
    cvm.numero_comprobante,
    cvm.id_comprobanteguia,
        CASE
            WHEN length(btrim(cvm.numero_comprobante::text)) > 0 THEN (((cref.descripcion_corta::text || '/'::text) || cvm.serie_comprobante::text) || '-'::text) || cvm.numero_comprobante::text
            ELSE '-'::text
        END AS nro_comprobante,
    dir.direccion,
    COALESCE(alor.descalmacen, ''::character varying) AS almorigen,
    tz.descripcion_larga AS tranzaccion
   FROM almacen.tbl_cabmovalm cvm
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = cvm.id_dirclientprov AND dir.id_persona::text = cvm.id_clientprov::text
     JOIN planillas.tbl_persona prov ON prov.id_persona::text = dir.id_persona::text
     JOIN common.tbl_comprobante c ON c.id_comprobante = cvm.id_comprobante
     LEFT JOIN common.tbl_comprobante cref ON cref.id_comprobante = cvm.id_comprobanteref
     JOIN common.tbl_moneda m ON m.id_moneda = cvm.id_moneda
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = cvm.id_tipocambio
     JOIN common.tbl_estado e ON e.id_estado = cvm.id_estado
     JOIN common.tbl_igv i ON i.id_igv = cvm.id_igv
     JOIN almacen.tbl_almacen alm ON alm.id_almacen = cvm.id_almdestino
     LEFT JOIN almacen.tbl_almacen alor ON alor.id_almacen = cvm.id_almorigen
     JOIN common.tbl_sucursal s ON s.id_sucursal = cvm.id_sucursal AND cvm.ingreso = true
     JOIN common.tbl_tranzaccion tz ON tz.id_tranzaccion = cvm.id_tranzaccion
WHERE  CVM.ing_conversion=false and
not exists(
	select *from almacen.tbl_cabmovalm cp
	where cp.id_estado=1 and cp.id_movimiento=CVM.id_movimientoref and cp.id_sucursal=CVM.id_sucursalref and CVM.schema='almacen' and CVM.tabla='tbl_cabmovalm');

CREATE OR REPLACE VIEW ALMACEN.V_NOTASALIDA_LIST
AS
SELECT (cvm.serie::text || '-'::text) || cvm.numero::text AS documento,
    cvm.fecha,
    prov.nombre_razon AS proveedor,
    m.simbolo,
    tc.venta AS tipo_cambio,
    cvm.imp_neto,
    e.des_estado AS estado,
    e.id_estado,
    prov.doc_persona AS doc_proveedor,
    cvm.id_movimiento,
    cvm.serie,
    cvm.numero,
    cvm.id_comprobante,
    cvm.id_comprobanteref,
    cvm.id_almdestino,
    cvm.id_tranzaccion,
    COALESCE(cvm.doc_referencia, ''::character varying) AS doc_referencia,
    cvm.id_motivo,
    cvm.fec_llegada,
    cvm.imp_bruto,
    cvm.imp_dscto,
    cvm.porcent_dscto,
    cvm.valor_venta,
    cvm.imp_igv,
    cvm.glosa,
    cvm.id_sucursal,
    cvm.id_dirclientprov,
    cvm.id_clientprov,
    cvm.id_igv,
    cvm.id_tipocambio,
    cvm.id_moneda,
    cvm.id_vendedor,
    i.imp_igv AS porcent_igv,
    cvm.id_operacion,
    cvm.val_ventaexonerado,
    COALESCE(( SELECT (((cop.descripcion_corta::text || '/'::text) || oc.serie::text) || '-'::text) || oc.numero::text
           FROM compras.tbl_ordencotizacompra oc
             JOIN common.tbl_comprobante cop ON cop.id_comprobante = oc.id_comprobante
          WHERE oc.id_cotizaorden = cvm.id_cotizaorden), ''::text) AS ordencompra,
    alm.descalmacen AS almacen,
    alm.id_almacen,
    COALESCE(( SELECT (((cop.descripcion_corta::text || '/'::text) || oc.serie::text) || '-'::text) || oc.numero::text
           FROM produccion.tbl_ordenproduccion oc
             JOIN common.tbl_comprobante cop ON cop.id_comprobante = oc.id_comprobante
          WHERE oc.id_ordeproduccion = cvm.id_ordeproduccion), ''::text) AS ordenproduccion,
    COALESCE(cvm.id_ordeproduccion, 0::bigint) AS id_ordeproduccion,
    COALESCE(cvm.id_cotizaorden, 0::bigint) AS id_ordencompra,
    s.id_empresa,
    COALESCE(cvm.serie_guia, ''::bpchar) AS serie_guia,
    cvm.serie_comprobante,
    cvm.numero_comprobante,
    cvm.id_comprobanteguia,
        CASE
            WHEN length(btrim(cvm.numero_comprobante::text)) > 0 THEN (((cref.descripcion_corta::text || '/'::text) || cvm.serie_comprobante::text) || '-'::text) || cvm.numero_comprobante::text
            ELSE '-'::text
        END AS nro_comprobante,
    dir.direccion,
    COALESCE(alor.descalmacen, ''::character varying) AS almorigen,
    tz.descripcion_larga AS tranzaccion
   FROM almacen.tbl_cabmovalm cvm
     JOIN ventas.tbl_direccion dir ON dir.id_direccion = cvm.id_dirclientprov AND dir.id_persona::text = cvm.id_clientprov::text
     JOIN planillas.tbl_persona prov ON prov.id_persona::text = dir.id_persona::text
     JOIN common.tbl_comprobante c ON c.id_comprobante = cvm.id_comprobante
     LEFT JOIN common.tbl_comprobante cref ON cref.id_comprobante = cvm.id_comprobanteref
     JOIN common.tbl_moneda m ON m.id_moneda = cvm.id_moneda
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = cvm.id_tipocambio
     JOIN common.tbl_estado e ON e.id_estado = cvm.id_estado
     JOIN common.tbl_igv i ON i.id_igv = cvm.id_igv
     JOIN almacen.tbl_almacen alm ON alm.id_almacen = cvm.id_almorigen
     LEFT JOIN almacen.tbl_almacen alor ON alor.id_almacen = cvm.id_almorigen
     JOIN common.tbl_sucursal s ON s.id_sucursal = cvm.id_sucursal
     JOIN common.tbl_tranzaccion tz ON tz.id_tranzaccion = cvm.id_tranzaccion
WHERE   cvm.salida=true

select *from almacen.tbl_cabmovalm

select * from almacen.V_NOTAINGRESO   where id_empresa=1 and DOCUMENTO || PROVEEDOR || DOC_PROVEEDOR ilike '%00002%' order by FECHA,numero desc limit 100

select *from common.tbl_comprobante order by id_comprobante desc

SELECT * FROM ALMACEN.TBL_ALMACEN

select * FROM almacen.tbl_cabmovalm CVM

select *from common.tbl_comprobante

CREATE OR REPLACE  VIEW ALMACEN.V_DETNOTAINGRESO
AS
SELECT
DA.item,
case when da.modotexto=true then 'T-Texto' else '-Regular' end as modotexto,
da.id_producto,
da.descripcion_linea,
U.desc_corta as unidad,
da.cantidad,
da.precio,
da.porcent_dscto,
da.imp_igv,
da.imp_valorventa,
da.total,
'+'::text agregar,
da.imp_dscto,
da.imp_bruto,
da.id_unidadkardex,
1::integer id_listaprecio,
da.porcent_igv,
(da.cantidad*dpv.val_unidad)::numeric(20,4)  as cantidad_editada,
p.servicio as ctrl_stock,
0::numeric as costo_almacen,
da.id_estado,
dp.val_unidad,
dp.val_minimo,
2::integer as  op,
(da.id_producto::text ||','|| da.id_unidadkardex::text || ',' || da.id_inventario::text || ',' || da.id_almacen::text) as id_old,
da.id_unidadingreso,
dpv.val_unidad as val_unidadcontrol,
da.id_movimiento,
da.observaciones,
da.lp,
da.id_lote,
da.peso,
da.id_inventario,
da.id_almacen,
da.fec_actualiza,
da.fecha,
da.id_usuario,
p.gestiona_lotes,
p.gestiona_series
FROM almacen.tbl_detmovalm da
INNER JOIN ALMACEN.TBL_DETPRODUCTO DP ON (DP.ID_PRODUCTO=da.ID_PRODUCTO AND DA.id_unidadkardex=DP.id_unidadventa)
INNER JOIN ALMACEN.TBL_PRODUCTO P ON (P.ID_PRODUCTO=DP.ID_PRODUCTO)
INNER JOIN ALMACEN.TBL_DETPRODUCTO DPV ON (DPV.ID_PRODUCTO=da.ID_PRODUCTO AND DA.id_unidadingreso=DPV.id_unidadventa)
INNER JOIN ALMACEN.TBL_UNIDAD U ON (U.ID_UNIDADVENTA=DPV.id_unidadventa)
order by DA.item asc

CREATE OR REPLACE  VIEW ALMACEN.V_DETNOTAINGRESO_GUIA_REMISION
AS
SELECT
DA.item,
 '-Regular' as modotexto,
da.id_producto,
da.descripcion_linea,
U.desc_corta as unidad,
da.cantidad,
da.precio,
da.porcent_dscto,
da.imp_igv,
COALESCE(da.valor_venta,0) as imp_valorventa,
da.imp_total as total,
'+'::text agregar,
da.dscto as imp_dscto,
da.imp_total as imp_bruto,
da.id_unidadventa as id_unidadkardex,
1::integer id_listaprecio,
da.porcent_igv,
(da.cantidad)::numeric(20,4)  as cantidad_editada,
p.servicio as ctrl_stock,
0::numeric as costo_almacen,
da.id_estado,
dp.val_unidad,
dp.val_minimo,
2::integer as  op,
(da.id_producto::text ||','|| da.id_unidadventa::text || ',' || da.id_inventario::text || ',' || da.id_almacen::text) as id_old,
da.id_unidadventa id_unidadingreso,
dp.val_unidad as val_unidadcontrol,
da.id_guia as id_movimiento,
'' as observaciones,
da.lp,
'0' id_lote,
da.peso,
da.id_inventario,
da.id_almacen,
da.fec_actualiza,
da.fecha,
da.id_usuario,
p.gestiona_lotes,
p.gestiona_series,
da.id_sucursal
FROM ventas.tbl_detguiaventa da
INNER JOIN ALMACEN.TBL_DETPRODUCTO DP ON (DP.ID_PRODUCTO=da.ID_PRODUCTO AND DA.id_unidadventa=DP.id_unidadventa)
INNER JOIN ALMACEN.TBL_PRODUCTO P ON (P.ID_PRODUCTO=DP.ID_PRODUCTO)
INNER JOIN ALMACEN.TBL_UNIDAD U ON (U.ID_UNIDADVENTA=dp.id_unidadventa)
where da.id_estado=1

alter table ventas.tbl_detguiaventa add column fec_actualiza timestamp;
select *from ventas.tbl_detguiaventa

CREATE OR REPLACE VIEW PRODUCCION.V_REQUERIMIENTOPRODUCCION
AS
SELECT
(C.DESCRIPCION_CORTA || '/'  || RC.SERIE || '-' || RC.NUMERO) AS NROREQUERIMEINTO,
P.NOMBRE_RAZON AS SOLICITANTE,
CC.DESCRIPCION_LARGA AS AREA,
RC.FECHA,
E.DES_ESTADO AS ESTADO,
(CP.DESCRIPCION_CORTA || '/'  || OP.SERIE || '-' || OP.NUMERO) AS ORDENPRODUCCION,
E.ID_ESTADO,
CLI.NOMBRE_RAZON AS CLIENTE,
PROD.DESCRIPCION_LARGA AS PRODUCTO,
rc.id_centrocostos,
rc.serie,
rc.numero,
RC.id_solicitante,
op.id_ordeproduccion,
rc.id_requecompra,
rc.observaciones,
rc.id_comprobante,
rc.id_sucursal
FROM compras.tbl_requecompra rc
INNER JOIN PLANILLAS.tbl_centrocostos CC ON (CC.id_centrocostos=RC.id_centrocostos)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=RC.ID_COMPROBANTE)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=RC.id_solicitante)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=RC.ID_ESTADO)
LEFT JOIN produccion.tbl_ordenproduccion OP ON (OP.id_ordeproduccion=RC.id_ordeproduccion)
LEFT JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=OP.ID_COMPROBANTE)
LEFT JOIN almacen.tbl_detproducto  DP ON (DP.id_producto=OP.id_producto AND  DP.id_unidadventa=OP.id_unidadventa)
LEFT JOIN ALMACEN.TBL_PRODUCTO PROD ON (PROD.ID_PRODUCTO=DP.ID_PRODUCTO)
LEFT JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=OP.id_direccion AND DIR.id_persona=OP.id_cliente)
LEFT JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=DIR.ID_PERSONA)

select *from compras.tbl_requecompra rc

CREATE OR REPLACE VIEW PRODUCCION.V_REQUERIMIENTOPRODUCCIONIMP
AS
SELECT
(C.DESCRIPCION_CORTA || '/'  || RC.SERIE || '-' || RC.NUMERO) AS NROREQUERIMEINTO,
P.NOMBRE_RAZON AS SOLICITANTE,
CC.DESCRIPCION_LARGA AS AREA,
RC.FECHA,
E.DES_ESTADO AS ESTADO,
(CP.DESCRIPCION_CORTA || '/'  || OP.SERIE || '-' || OP.NUMERO) AS ORDENPRODUCCION,
E.ID_ESTADO,
CLI.NOMBRE_RAZON AS CLIENTE,
PROD.DESCRIPCION_LARGA AS PRODUCTO,
rc.id_centrocostos,
rc.serie,
rc.numero,
RC.id_solicitante,
op.id_ordeproduccion,
rc.id_requecompra,
rc.observaciones,
dr.item,
dr.id_producto as id_producto_Det,
prod_.descripcion_larga as producto_det,
du.desc_corta as unidad_det,
dr.cantidad as cantidad_det,
dr.glosa as glosa_det,
dr.id_unidadventa as id_unidadventa_det,
dr.id_listaprecio as id_listaprecio_det,
dr.id_estado as id_estado_det,
pre.val_unidad as val_unidad_det,
pre.val_minimo_venta,
pre.coste as coste_Det
FROM compras.tbl_requecompra rc
inner join compras.tbl_detreqproduccio DR on(rc.id_requecompra=dr.id_requecompra)
inner join almacen.tbl_precio pre on ( pre.id_producto=dr.id_producto and pre.id_listaprecio=dr.id_listaprecio and pre.id_unidadventa=dr.id_unidadventa)
inner join almacen.tbl_producto prod_ on (prod_.id_producto=pre.id_producto)
inner join almacen.tbl_unidad du on (du.id_unidadventa=pre.id_unidadventa)
INNER JOIN PLANILLAS.tbl_centrocostos CC ON (CC.id_centrocostos=RC.id_centrocostos)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=RC.ID_COMPROBANTE)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=RC.id_solicitante)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=RC.ID_ESTADO)
LEFT JOIN produccion.tbl_ordenproduccion OP ON (OP.id_ordeproduccion=RC.id_ordeproduccion)
LEFT JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=OP.ID_COMPROBANTE)
LEFT JOIN almacen.tbl_detproducto  DP ON (DP.id_producto=OP.id_producto AND  DP.id_unidadventa=OP.id_unidadventa)
LEFT JOIN ALMACEN.TBL_PRODUCTO PROD ON (PROD.ID_PRODUCTO=DP.ID_PRODUCTO)
LEFT JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=OP.id_direccion AND DIR.id_persona=OP.id_cliente)
LEFT JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=DIR.ID_PERSONA)

CREATE OR REPLACE VIEW PRODUCCION.V_DETREQUEPRODUCCION
AS
SELECT
dr.item,
dr.id_producto,
prod.descripcion_larga as producto,
du.desc_corta as unidad,
dr.cantidad,
dr.glosa,
'+'::text as agregar,
dr.id_unidadventa,
dr.id_listaprecio,
dr.id_estado,
'2'::text as op,
dr.id_requecompra,
prod.servicio as ctrl_stock,
p.val_unidad,
p.val_minimo_venta,
p.coste
FROM compras.tbl_detreqproduccio DR
inner join almacen.tbl_precio p on ( p.id_producto=dr.id_producto and p.id_listaprecio=dr.id_listaprecio and p.id_unidadventa=dr.id_unidadventa)
inner join almacen.tbl_producto prod on (prod.id_producto=p.id_producto)
inner join almacen.tbl_unidad du on (du.id_unidadventa=p.id_unidadventa)

CREATE OR REPLACE VIEW COMPRAS.V_SEARCHDETREQUERIMIENTO
AS
SELECT
(C.DESCRIPCION_CORTA || '/'  || RC.SERIE || '-' || RC.NUMERO) AS NROREQUERIMEINTO,
prodd.codigo,
prodd.descripcion_larga as producto,
du.desc_corta as unidad,
dr.cantidad,
P.NOMBRE_RAZON AS SOLICITANTE,
CC.DESCRIPCION_LARGA AS AREA,
RC.FECHA,
E.DES_ESTADO AS ESTADO,
(CP.DESCRIPCION_CORTA || '/'  || OP.SERIE || '-' || OP.NUMERO) AS ORDENPRODUCCION,
dr.glosa,
'+'::text as agregar,
dr.id_unidadventa,
dr.id_listaprecio,
dr.id_estado,
'2'::text as op,
dr.id_requecompra,
prodd.servicio as ctrl_stock,
pre.val_unidad,
pre.val_minimo_venta,
pre.coste
FROM compras.tbl_requecompra rc
INNER JOIN compras.tbl_detreqproduccio DR ON (Rc.id_requecompra=DR.id_requecompra)
inner join almacen.tbl_precio pre on ( pre.id_producto=dr.id_producto and pre.id_listaprecio=dr.id_listaprecio and pre.id_unidadventa=dr.id_unidadventa)
inner join almacen.tbl_producto prodd on (prodd.id_producto=pre.id_producto)
inner join almacen.tbl_unidad du on (du.id_unidadventa=pre.id_unidadventa)
INNER JOIN PLANILLAS.tbl_centrocostos CC ON (CC.id_centrocostos=RC.id_centrocostos)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=RC.ID_COMPROBANTE)
INNER JOIN PLANILLAS.TBL_PERSONA P ON (P.ID_PERSONA=RC.id_solicitante)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=RC.ID_ESTADO)
LEFT JOIN produccion.tbl_ordenproduccion OP ON (OP.id_ordeproduccion=RC.id_ordeproduccion)
LEFT JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=OP.ID_COMPROBANTE)
LEFT JOIN almacen.tbl_detproducto  DP ON (DP.id_producto=OP.id_producto AND  DP.id_unidadventa=OP.id_unidadventa)
LEFT JOIN ALMACEN.TBL_PRODUCTO PROD ON (PROD.ID_PRODUCTO=DP.ID_PRODUCTO)
LEFT JOIN ventas.tbl_direccion DIR ON (DIR.id_direccion=OP.id_direccion AND DIR.id_persona=OP.id_cliente)
LEFT JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=DIR.ID_PERSONA)

select * from almacen.V_NOTASALIDA   where salida=true and DOCUMENTO || PROVEEDOR || DOC_PROVEEDOR ilike '%%'

select * from almacen.ISP_NOTASALIDAALMACEN(1,0,'0001','0000007',29,3,1,'21','2014-08-28 00:10:27.08','',NULL,'2014-08-28 00:10:27.081','600.00','0.00','0.00','600.00','0.00','600.00','',1,20543372363,'2577',1,1,1,'00016','','','0','1',0)

select *from almacen.tbl_cabmovalm

CREATE OR REPLACE   VIEW ALMACEN.V_NOTASALIDA
AS
SELECT
(CVM.SERIE || '-' || CVM.NUMERO) AS DOCUMENTO,
CVM.FECHA,
CASE
            WHEN btrim(CVM.id_clientprov::text) = '000'::text THEN btrim(COALESCE(CVM.nomape_cliente,'Clientes Varios'))
            ELSE btrim(PROV.nombre_razon::text)
        END AS cliente,
M.SIMBOLO,
TC.VENTA AS TIPO_CAMBIO,
COALESCE(CVM.IMP_NETO,0)::numeric(20,4) as IMP_NETO,
E.DES_ESTADO AS ESTADO,
E.ID_ESTADO,
CASE
            WHEN btrim(CVM.id_clientprov::text) = '000'::text THEN CVM.dniruc_cliente::text
            ELSE btrim(PROV.doc_persona::text)
        END AS DOC_CLIENTE,
id_movimiento,
CVM.serie,
CVM.numero,
CVM.id_comprobante       ,
CVM.id_comprobanteref    ,
CVM.id_almdestino        ,
CVM.id_tranzaccion       ,
COALESCE(CVM.doc_referencia ,'-') AS doc_referencia ,
CVM.id_motivo            ,
CVM.fec_llegada          ,
CVM.imp_bruto            ,
CVM.imp_dscto            ,
CVM.porcent_dscto	     ,
CVM.valor_venta          ,
CVM.imp_igv              ,
COALESCE(CVM.glosa,'-') as glosa  ,
CVM.id_sucursal          ,
CVM.id_dirclientprov     ,
CVM.id_clientprov        ,
CVM.id_igv               ,
CVM.id_tipocambio        ,
CVM.id_moneda   ,
CVM.id_vendedor,
I.IMP_IGV AS PORCENT_IGV,
cvm.id_operacion,
cvm.val_ventaexonerado,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_cotizaorden::text=cvm.codigorefk and cvm.schema='compras' and cvm.tabla='tbl_ordencotizacompra'),'') as ordencompra,
ALM.DESCALMACEN AS ALMACEN,
ALM.ID_ALMACEN,
CVM.SALIDA,
COALESCE((cc.descripcion_corta || '' ||OP.SERIE || '' || OP.NUMERO),'') AS DOCORDENPRODUCCION,
CVM.id_ordeproduccion,
DIR.DIRECCION,
TR.DESCRIPCION_LARGA AS TRANZACCION,
COALESCE(CVM.codigorefk,'') as codigorefk,
schema,
tabla,
COALESCE(res.apell_paterno,'') ||' '|| COALESCE(res.apell_materno,'') || ' ' || COALESCE(res.nombres,'') as responsable,
COALESCE(vend.nombre_razon,COALESCE(vend.apell_paterno,'') ||' '|| COALESCE(vend.apell_materno,'') || ' ' || COALESCE(vend.nombres,'')) ||' '|| COALESCE(vend.apell_materno,'') || ' ' || COALESCE(vend.nombres,'') as vendedor
FROM almacen.tbl_cabmovalm CVM
INNER JOIN VENTAS.TBL_DIRECCION DIR ON (DIR.ID_DIRECCION=CVM.ID_DIRCLIENTPROV)
INNER JOIN PLANILLAS.TBL_PERSONA PROV ON (PROV.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=CVM.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=CVM.ID_MONEDA)
INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=CVM.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CVM.ID_ESTADO)
INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=CVM.ID_IGV)
INNER JOIN ALMACEN.TBL_ALMACEN ALM ON (ALM.ID_ALMACEN=CVM.ID_ALMORIGEN)
INNER JOIN common.tbl_tranzaccion TR ON (TR.ID_TRANZACCION=CVM.ID_TRANZACCION)
LEFT JOIN PRODUCCION.TBL_ORDENPRODUCCION OP ON (OP.id_ordeproduccion=CVM.id_ordeproduccion)
LEFT JOIN COMMON.TBL_COMPROBANTE CC ON (CC.ID_COMPROBANTE=OP.ID_COMPROBANTE)
LEFT JOIN PLANILLAS.TBL_PERSONA RES ON RES.ID_PERSONA=cvm.id_responsableSalida
LEFT JOIN PLANILLAS.TBL_PERSONA vend ON vend.ID_PERSONA=cvm.id_vendedor

CREATE OR REPLACE VIEW ALMACEN.V_NOTA_SALIDA_FACTURACION
AS
SELECT
(CVM.SERIE || '-' || CVM.NUMERO) AS DOCUMENTO,
CVM.FECHA,
PROV.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO,
TC.VENTA AS TIPO_CAMBIO,
CVM.IMP_NETO,
E.DES_ESTADO AS ESTADO,
E.ID_ESTADO,
PROV.DOC_PERSONA AS DOC_CLIENTE,
id_movimiento,
CVM.serie,
CVM.numero,
CVM.id_comprobante       ,
CVM.id_comprobanteref    ,
CVM.id_almdestino        ,
CVM.id_tranzaccion       ,
COALESCE(CVM.doc_referencia ,'-') AS doc_referencia ,
CVM.id_motivo            ,
CVM.fec_llegada          ,
CVM.imp_bruto            ,
CVM.imp_dscto            ,
CVM.porcent_dscto	     ,
CVM.valor_venta          ,
CVM.imp_igv              ,
COALESCE(CVM.glosa,'-') as glosa  ,
CVM.id_sucursal          ,
CVM.id_dirclientprov     ,
CVM.id_clientprov        ,
CVM.id_igv               ,
CVM.id_tipocambio        ,
CVM.id_moneda   ,
CVM.id_vendedor,
I.IMP_IGV AS PORCENT_IGV,
cvm.id_operacion,
cvm.val_ventaexonerado,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_cotizaorden::text=cvm.codigorefk and cvm.schema='compras' and cvm.tabla='tbl_ordencotizacompra'),'') as ordencompra,
ALM.DESCALMACEN AS ALMACEN,
ALM.ID_ALMACEN,
CVM.SALIDA,
COALESCE((cc.descripcion_corta || '' ||OP.SERIE || '' || OP.NUMERO),'') AS DOCORDENPRODUCCION,
CVM.id_ordeproduccion,
DIR.DIRECCION,
TR.DESCRIPCION_LARGA AS TRANZACCION,
COALESCE(CVM.codigorefk,'') as codigorefk,
schema,
tabla,
COALESCE(res.apell_paterno,'') ||' '|| COALESCE(res.apell_materno,'') || ' ' || COALESCE(res.nombres,'') as responsable,
COALESCE(vend.nombre_razon,COALESCE(vend.apell_paterno,'') ||' '|| COALESCE(vend.apell_materno,'') || ' ' || COALESCE(vend.nombres,'')) ||' '|| COALESCE(vend.apell_materno,'') || ' ' || COALESCE(vend.nombres,'') as vendedor
FROM almacen.tbl_cabmovalm CVM
INNER JOIN VENTAS.TBL_DIRECCION DIR ON (DIR.ID_DIRECCION=CVM.ID_DIRCLIENTPROV)
INNER JOIN PLANILLAS.TBL_PERSONA PROV ON (PROV.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=CVM.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=CVM.ID_MONEDA)
INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=CVM.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CVM.ID_ESTADO)
INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=CVM.ID_IGV)
INNER JOIN ALMACEN.TBL_ALMACEN ALM ON (ALM.ID_ALMACEN=CVM.ID_ALMORIGEN)
INNER JOIN common.tbl_tranzaccion TR ON (TR.ID_TRANZACCION=CVM.ID_TRANZACCION)
LEFT JOIN PRODUCCION.TBL_ORDENPRODUCCION OP ON (OP.id_ordeproduccion=CVM.id_ordeproduccion)
LEFT JOIN COMMON.TBL_COMPROBANTE CC ON (CC.ID_COMPROBANTE=OP.ID_COMPROBANTE)
LEFT JOIN PLANILLAS.TBL_PERSONA RES ON RES.ID_PERSONA=cvm.id_responsableSalida
LEFT JOIN PLANILLAS.TBL_PERSONA vend ON vend.ID_PERSONA=cvm.id_vendedor
WHERE  CVM.ing_conversion=false and salida=true and
not exists(
	select *from ventas.tbl_facturacion cp
	where cp.id_estado=1 and cp.id_facturacion=CVM.id_movimientoref and cp.id_sucursal=CVM.id_sucursalref and CVM.schema='ventas' and CVM.tabla='tbl_facturacion')

select *from almacen.tbl_cabmovalm

select * from almacen.V_NOTASALIDA   where salida=true and DOCUMENTO || CLIENTE || DOC_CLIENTE ilike '%%'

SELECT *FROM ALMACEN.V_NOTASALIDA

select *  from ALMACEN.V_NOTASALIDADET
select *from seguridad.v_usuariosucursal

alter table ventas.tbl_detfacturacion add column descripcion_linea text default '';

select *from   almacen.tbl_cabmovalm CVM

CREATE OR REPLACE VIEW ALMACEN.V_NOTASALIDADET
AS
SELECT
(CVM.SERIE || '-' || CVM.NUMERO) AS DOCUMENTO,
CVM.FECHA,
CASE
            WHEN btrim(CVM.id_clientprov::text) = '000'::text THEN btrim(CVM.nomape_cliente)
            ELSE btrim(PROV.nombre_razon::text)
        END AS cliente,
--PROV.NOMBRE_RAZON AS CLIENTE,
--M.SIMBOLO,
--TC.VENTA AS TIPO_CAMBIO,
CVM.IMP_NETO,
E.DES_ESTADO AS ESTADO,
E.ID_ESTADO,
CASE
            WHEN btrim(CVM.id_clientprov::text) = '000'::text THEN CVM.dniruc_cliente::text
            ELSE btrim(PROV.doc_persona::text)
        END AS DOC_CLIENTE,
--PROV.DOC_PERSONA AS DOC_CLIENTE,
CVM.id_movimiento,
CVM.serie,
CVM.numero,
CVM.id_comprobante       ,
CVM.id_comprobanteref    ,
CVM.id_almdestino        ,
CVM.id_tranzaccion       ,
CVM.doc_referencia       ,
CVM.id_motivo            ,
CVM.fec_llegada          ,
CVM.imp_bruto            ,
CVM.imp_dscto            ,
CVM.porcent_dscto	     ,
CVM.valor_venta          ,
CVM.imp_igv              ,
CVM.glosa                ,
CVM.id_sucursal          ,
CVM.id_dirclientprov     ,
CVM.id_clientprov        ,
CVM.id_igv               ,
CVM.id_tipocambio        ,
CVM.id_moneda   ,
CVM.id_vendedor,
--I.IMP_IGV AS PORCENT_IGV,
cvm.id_operacion,
cvm.val_ventaexonerado,
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_cotizaorden::text=cvm.codigorefk and cvm.schema='compras' and cvm.tabla='tbl_ordencotizacompra'),'') as ordencompra,
ALM.DESCALMACEN AS ALMACEN,
ALM.ID_ALMACEN,
CVM.SALIDA,
(OP.SERIE || '-' || OP.NUMERO) AS DOCORDENPRODUCCION,
CVM.id_ordeproduccion,
DIR.DIRECCION,
TR.DESCRIPCION_LARGA AS TRANZACCION ,
DA.item,
da.id_producto,
da.descripcion_linea,
U.desc_corta as unidad,
da.cantidad,
da.precio as precio_det,
da.porcent_dscto as porcent_dsctodet,
da.imp_igv as imp_igvdet,
da.imp_valorventa as val_ventadet,
da.total,
'+'::text agregar,
da.imp_dscto as imp_dsctodet,
da.imp_bruto as imp_brutodet,
da.id_unidadkardex,
1::integer id_listaprecio,
da.porcent_igv,
(da.cantidad*dpv.val_unidad)::numeric(20,4)  as cantidad_editada,
p.servicio as ctrl_stock,
0::numeric as costo_almacen,
2::integer as  op,
(da.id_producto::text ||','|| da.id_unidadkardex::text || ',' || da.id_inventario::text || ',' || da.id_almacen::text) as id_old,
da.id_unidadingreso,
dpv.val_unidad as val_unidadcontrol,
da.observaciones,
da.lp,
da.id_lote,
da.peso,
P.CODIGO,
(COALESCE(RES.apell_paterno,'') ||' ' || COALESCE(RES.apell_materno,'') || ' ' || COALESCE(RES.nombres,'')) AS responsable,
ALD.DESCALMACEN AS ALMDESTINO,
cvm.ingreso
FROM almacen.tbl_cabmovalm CVM
INNER JOIN VENTAS.TBL_DIRECCION DIR ON (DIR.ID_DIRECCION=CVM.ID_DIRCLIENTPROV)
INNER JOIN PLANILLAS.TBL_PERSONA PROV ON (PROV.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=CVM.ID_COMPROBANTE)
--INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=CVM.ID_MONEDA)
--INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=CVM.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CVM.ID_ESTADO)
--INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=CVM.ID_IGV)
left JOIN ALMACEN.TBL_ALMACEN ALM ON (ALM.ID_ALMACEN=CVM.ID_ALMORIGEN)
LEFT JOIN ALMACEN.TBL_ALMACEN ALD ON (ALD.ID_ALMACEN=CVM.ID_ALMDESTINO)
INNER JOIN common.tbl_tranzaccion TR ON (TR.ID_TRANZACCION=CVM.ID_TRANZACCION)
INNER JOIN almacen.tbl_detmovalm da ON (CVM.id_movimiento=DA.id_movimiento)
INNER JOIN ALMACEN.TBL_DETPRODUCTO DP ON (DP.ID_PRODUCTO=da.ID_PRODUCTO AND DA.id_unidadkardex=DP.id_unidadventa
                                          --AND DP.UNIDAD_INVENTARIO=TRUE
                                         )
INNER JOIN ALMACEN.TBL_PRODUCTO P ON (P.ID_PRODUCTO=DP.ID_PRODUCTO)
INNER JOIN ALMACEN.TBL_DETPRODUCTO DPV ON (DPV.ID_PRODUCTO=da.ID_PRODUCTO AND DA.id_unidadingreso=DPV.id_unidadventa)
INNER JOIN ALMACEN.TBL_UNIDAD U ON (U.ID_UNIDADVENTA=DPV.id_unidadventa)
LEFT JOIN  PLANILLAS.TBL_PERSONA RES ON RES.ID_PERSONA=CVM.id_responsableSalida
LEFT JOIN PRODUCCION.TBL_ORDENPRODUCCION OP ON (OP.id_ordeproduccion=CVM.id_ordeproduccion)
LEFT JOIN COMMON.TBL_COMPROBANTE CC ON (CC.ID_COMPROBANTE=OP.ID_COMPROBANTE)
order by DA.item asc

create or replace view produccion.v_colaboradororden
as
SELECT
co.item,
per.doc_persona,
per.nombre_razon as colaborador,
co.cantidad,
co.observaciones,
'+'::text as agregar,
co.id_persona,
'2'::text as op,
co.id_estado,
co.item::text || ','||co.id_persona || ',' || per.doc_persona as id_old,
co.fecha,
co.id_ordeproduccion
  FROM produccion.tbl_colaboradororde co
  inner join planillas.tbl_persona per on(per.id_persona=co.id_persona)

SELECT *FROM ALMACEN.V_PRODUCTOSALMACEN

CREATE OR REPLACE VIEW almacen.v_productosalmacen
AS
 SELECT DISTINCT prod.id_producto,
    prod.codigo,
    prod.descripcion_larga AS producto,
    m.descripcion_larga AS marca,
    'Todos los Almacenes'::character varying(100) AS almacen,
    0::numeric AS transito,
    COALESCE(stock_fisico,0)::text as disponible,--almacen.f_stock_unides(prod.id_producto::text, al.id_sucursal) AS disponible,

    pre.precio1,
    pre.precio2,
    pre.precio3,
    u.desc_corta AS unidad,
    prod.id_estado,
    prod.servicio,
    prod.impuesto,
    pre.id_listaprecio,
    dp.id_unidadventa,
    dp.val_unidad,
    dp.val_minimo,
    pre.coste,
    s.id_empresa,
    f.descripcion_larga AS famila,
    g.descripcion_larga AS grupo,
    0.00::numeric(20,4) AS stock_ordencompra,
    prod.sujet_percepcion,
    i.imp_igv,
    pre.id_tipoventa,
    pre.undpred_compra,
    prod.gestiona_series,
    prod.gestiona_lotes,
    prod.venta_retaceo,
    s.id_sucursal,
    dp.ctl_stock,
    prod.cod_barra,
    pre.precio4,
    pre.precio5,
    prod.cantidad_fraccionada,
    prod.afecto_icbper,
    ex.stock_fisico,
    prod.solicitadatosadicionales
   FROM almacen.tbl_producto prod
     JOIN almacen.tbl_marca m ON m.id_marca = prod.id_marca
     JOIN almacen.tbl_familia f ON f.id_familia = prod.id_familia
     JOIN almacen.tbl_grupo g ON g.id_grupo = f.id_grupo
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
     JOIN almacen.tbl_precio pre ON dp.id_producto::text = pre.id_producto::text AND dp.id_unidadventa = pre.id_unidadventa AND dp.unidad_inventario = true
     JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
     JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN common.tbl_sucursal s ON s.id_sucursal = al.id_sucursal
     JOIN common.tbl_igv i ON i.id_igv = prod.id_impuesto
  WHERE prod.id_estado = ANY (ARRAY[1, 26]);

CREATE OR REPLACE VIEW almacen.v_productosalmacen_market
AS
 SELECT DISTINCT prod.id_producto,
    prod.codigo,
    prod.descripcion_larga AS producto,
    m.descripcion_larga AS marca,
    'Todos los Almacenes'::character varying(100) AS almacen,
    0::numeric AS transito,
    almacen.f_stock_unides(prod.id_producto::text, al.id_sucursal) AS disponible,
    pre.precio1,
    pre.precio2,
    pre.precio3,
    u.desc_corta AS unidad,
    prod.id_estado,
    prod.servicio,
    prod.impuesto,
    pre.id_listaprecio,
    dp.id_unidadventa,
    dp.val_unidad,
    dp.val_minimo,
    pre.coste,
    s.id_empresa,
    f.descripcion_larga AS famila,
    g.descripcion_larga AS grupo,
    0.00::numeric(20,4) AS stock_ordencompra,
    prod.sujet_percepcion,
    i.imp_igv,
    pre.id_tipoventa,
    pre.undpred_compra,
    prod.gestiona_series,
    prod.gestiona_lotes,
    prod.venta_retaceo,
    s.id_sucursal,
    dp.ctl_stock,
    prod.cod_barra,
    pre.precio4,
    pre.precio5,
    prod.cantidad_fraccionada,
    dp.unidad_inventario,
    prod.afecto_icbper
   FROM almacen.tbl_producto prod
     JOIN almacen.tbl_marca m ON m.id_marca = prod.id_marca
     JOIN almacen.tbl_familia f ON f.id_familia = prod.id_familia
     JOIN almacen.tbl_grupo g ON g.id_grupo = f.id_grupo
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
     JOIN almacen.tbl_precio pre ON dp.id_producto::text = pre.id_producto::text AND dp.id_unidadventa = pre.id_unidadventa --AND dp.unidad_inventario = true
     JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
     JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN common.tbl_sucursal s ON s.id_sucursal = al.id_sucursal
     JOIN common.tbl_igv i ON i.id_igv = prod.id_impuesto
  WHERE prod.id_estado = ANY (ARRAY[1, 26]);

--having sum(COALESCE(EX.stock_fisico,0)) >0

select * from almacen.V_PRODUCTOSALMACEN  where id_sucursal=1 and  id_estado in(1,26) and  producto || trim(COALESCE(cod_barra,'')) || codigo ilike '%%' limit 100

select *from ALMACEN.FN_PRODUCTOS_ALMACEN(1,'');

select * from ALMACEN.FN_PRODUCTOS_ALMACEN(1,'4044869654925')

CREATE OR REPLACE FUNCTION ALMACEN.FN_PRODUCTOS_ALMACEN(
	__id_sucursal  integer,
	__filtro text
)
RETURNS TABLE(
	_id_producto varchar(20),
	_codigo char(30),
	_producto varchar(200),
	_marca varchar(60),
	_almacen varchar(100),
	_transito numeric,
	_disponible text,
	_precio1 numeric(14,6),
	_precio2 numeric(14,6),
	_precio3 numeric(14,6),
	_unidad varchar(100),
	_id_estado integer,
	_servicio boolean,
	_impuesto numeric(14,6),
	_id_listaprecio integer,
	_id_unidadventa integer,
	_val_unidad numeric(20,4),
	_val_minimo numeric(20,4),
	_coste numeric(14,4),
	_id_empresa integer,
	_familia varchar(100),
	_grupo varchar(100),
	_stock_ordencompra numeric(20,4),
	_suject_percepcion boolean,
	_imp_igv numeric(20,4),
	_id_tipoventa integer,
	_undpred_compra boolean,
	_gestiona_series boolean,
	_gestiona_lotes boolean,
	_venta_retaceo boolean,
	_id_sucursal integer,
	_ctl_stock boolean,
	_cod_barra varchar(30),
	_precio4 numeric(14,6),
	_precio5 numeric(14,6),
	_precios text
) AS $$
DECLARE
	__id__producto char(30);
	__id__unidad integer;
BEGIN
	select id_producto ,id_unidadventa into __id__producto,__id__unidad  from almacen.tbl_detproducto where trim(codigo_barra) = ''|| trim(__filtro) ||'';
	if exists(select *from almacen.tbl_detproducto where id_producto=__id__producto and id_unidadventa=__id__unidad) then
		return query
		select
			id_producto,
			codigo,
			producto,
			marca,
			almacen,
			transito ,
			disponible ,
			precio1,
			precio2,
			precio3,
			unidad,
			id_estado ,
			servicio ,
			impuesto ,
			id_listaprecio ,
			id_unidadventa ,
			val_unidad ,
			val_minimo,
			coste ,
			id_empresa ,
			famila ,
			grupo ,
			stock_ordencompra ,
			sujet_percepcion ,
			imp_igv ,
			id_tipoventa ,
			undpred_compra ,
			gestiona_series ,
			gestiona_lotes ,
			venta_retaceo ,
			id_sucursal ,
			ctl_stock ,
			cod_barra ,
			precio4 ,
			precio5 ,
			(
		      select array_to_json(array_agg(row_to_json(d)))::text
		      from (
			select  *
			from  almacen.v_precios pre where pre.id_producto=list.id_producto and pre.id_unidadventa=__id__unidad
		      ) d
		    ) as precios
		from  ALMACEN.V_PRODUCTOSALMACEN  list
		where id_producto=__id__producto and id_sucursal=__id_sucursal;
	else
		return query select
			id_producto,
			codigo,
			producto,
			marca,
			almacen,
			transito ,
			disponible ,
			precio1,
			precio2,
			precio3,
			unidad,
			id_estado ,
			servicio ,
			impuesto ,
			id_listaprecio ,
			id_unidadventa ,
			val_unidad ,
			val_minimo,
			coste ,
			id_empresa ,
			famila ,
			grupo ,
			stock_ordencompra ,
			sujet_percepcion ,
			imp_igv ,
			id_tipoventa ,
			undpred_compra ,
			gestiona_series ,
			gestiona_lotes ,
			venta_retaceo ,
			id_sucursal ,
			ctl_stock ,
			cod_barra ,
			precio4 ,
			precio5 ,
			(
		      select array_to_json(array_agg(row_to_json(d)))::text
		      from (
			select  *
			from  almacen.v_precios pre where pre.id_producto=list.id_producto and pre.id_unidadventa=list.	id_unidadventa
		      ) d
		    ) as precios
		from almacen.V_PRODUCTOSALMACEN  list
		where id_sucursal=__id_sucursal and  id_estado in(1,26) and  producto || trim(COALESCE(cod_barra,'')) || codigo ilike '%'||__filtro||'%' limit 100;
	end if;
END;$$
language 'plpgsql';

--modificado

select * from almacen.V_PRODUCTOSALMACEN  where id_empresa=1 and  id_estado=1 and producto || codigo ilike '%vaso%' order by 1
select * from almacen.V_PRODUCTOSALMACEN  where id_empresa=1 and  id_estado=1 and producto || codigo ilike '%pacien%'

select * from almacen.FN_STOK_REAL('') where id_almacen =1 and id_empresa=1

CREATE OR REPLACE VIEW almacen.v_productosalmacen
AS
 SELECT DISTINCT prod.id_producto,
    prod.codigo,
    prod.descripcion_larga AS producto,
    m.descripcion_larga AS marca,
    'Todos los Almacenes'::character varying(100) AS almacen,
    0::numeric AS transito,
    almacen.f_stock_unides(prod.id_producto::text, al.id_sucursal) AS disponible,
    pre.precio1,
    pre.precio2,
    pre.precio3,
    u.desc_corta AS unidad,
    prod.id_estado,
    prod.servicio,
    prod.impuesto,
    pre.id_listaprecio,
    dp.id_unidadventa,
    dp.val_unidad,
    dp.val_minimo,
    pre.coste,
    s.id_empresa,
    f.descripcion_larga AS famila,
    g.descripcion_larga AS grupo,
    0.00::numeric(20,4) AS stock_ordencompra,
    prod.sujet_percepcion,
    i.imp_igv,
    pre.id_tipoventa,
    pre.undpred_compra,
    prod.gestiona_series,
    prod.gestiona_lotes,
    prod.venta_retaceo,
    s.id_sucursal,
    dp.ctl_stock,
    cod_barra,
     pre.precio4,
    pre.precio5,
   prod.cantidad_fraccionada
   FROM almacen.tbl_producto prod
     JOIN almacen.tbl_marca m ON m.id_marca = prod.id_marca
     JOIN almacen.tbl_familia f ON f.id_familia = prod.id_familia
     JOIN almacen.tbl_grupo g ON g.id_grupo = f.id_grupo
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
     JOIN almacen.tbl_precio pre ON dp.id_producto::text = pre.id_producto::text AND dp.id_unidadventa = pre.id_unidadventa AND dp.unidad_inventario = true
     JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
     JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
     JOIN common.tbl_sucursal s ON s.id_sucursal = al.id_sucursal
     JOIN common.tbl_igv i ON i.id_igv = prod.id_impuesto
  WHERE prod.id_estado = ANY (ARRAY[1, 26]);

select *from almacen.tbl_producto
select *from almacen.V_PRODUCTOSALMACEN

CREATE OR REPLACE VIEW ALMACEN.V_PRODUCTOSTPVREST
AS
select
prod.id_producto,
prod.codiGo,
prod.descripcion_larga as producto,
M.DESCRIPCION_LARGA AS MARCA,
PROD.IMAGE AS image,
COALESCE(EX.stocktransito,0) as transito,
  almacen.f_stock_unides(prod.id_producto,al.id_sucursal) AS disponible,--COALESCE(EX.stockh,0) AS disponible,
pre.precio1,
pre.precio2,
pre.precio3,
U.desc_corta AS UNIDAD,
prod.id_estado,
prod.servicio ,
prod.impuesto,
pre.id_listaprecio,
dp.id_unidadventa,
dp.val_unidad,
dp.val_minimo,
pre.coste,
S.ID_EMPRESA,
F.DESCRIPCION_LARGA AS FAMILA,
G.DESCRIPCION_LARGA AS GRUPO,
'0.00'::numeric(20,4) stock_ordencompra,
prod.sujet_percepcion,
i.imp_igv,
pre.ID_TIPOVENTA,
pre.UNDPRED_COMPRA,
prod.gestiona_series,
prod.gestiona_lotes,
prod.venta_retaceo,
F.id_familia
from almacen.tbl_producto prod
INNER JOIN ALMACEN.TBL_MARCA M ON (M.ID_MARCA=PROD.ID_MARCA)
INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=PROD.ID_FAMILIA)
INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
INNER JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
inner join almacen.tbl_precio pre on (dp.id_producto=pre.id_producto and dp.id_unidadventa = pre.id_unidadventa  and unidad_inventario=true)
INNER JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
INNER JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
--INNER JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
---inner join almacen.TBL_SALDOSEXISTENCIA ex on (pre.id_producto=ex.id_producto and pre.id_unidadventa=ex.id_unidad)
INNER JOIN  almacen.tbl_unidad U ON (U.id_unidadventa=DP.id_unidadventa)
INNER JOIN COMMON.TBL_SUCURSAL S ON S.ID_SUCURSAL=AL.ID_SUCURSAL
INNER JOIN COMMON.TBL_IGV I ON (I.id_igv=PROD.ID_IMPUESTO)
where prod.id_estado=1 --and ex.id_estado=1

select * from common.V_SERIESLIST

CREATE OR REPLACE VIEW ALMACEN.v_products_mobil
AS
select
prod.id_producto as product_id,
prod.codiGo as code,
prod.descripcion_larga  as product_name,
M.DESCRIPCION_LARGA AS brand,
almacen.f_stock_unides(prod.id_producto,al.id_sucursal) AS stock,--COALESCE(EX.stockh,0) AS disponible,
pre.precio1 as price1,
pre.precio2 as price2,
pre.precio3 as price3,
U.desc_corta AS unit,
prod.id_estado as status_id,
pre.id_listaprecio as lista_id,
dp.id_unidadventa as unit_id,
dp.val_unidad as value_unit,
dp.val_minimo as value_min,
pre.coste as costo,
S.ID_EMPRESA as enterprise_id,
F.DESCRIPCION_LARGA AS family,
G.DESCRIPCION_LARGA AS group,
prod.sujet_percepcion as subject_perception,
i.imp_igv ,
prod.gestiona_series as manages_series,
prod.gestiona_lotes as manages_lotes,
F.id_familia as family_id
from almacen.tbl_producto prod
INNER JOIN ALMACEN.TBL_MARCA M ON (M.ID_MARCA=PROD.ID_MARCA)
INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=PROD.ID_FAMILIA)
INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
INNER JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
inner join almacen.tbl_precio pre on (dp.id_producto=pre.id_producto and dp.id_unidadventa = pre.id_unidadventa  and unidad_inventario=true)
INNER JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
INNER JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
--INNER JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
---inner join almacen.TBL_SALDOSEXISTENCIA ex on (pre.id_producto=ex.id_producto and pre.id_unidadventa=ex.id_unidad)
INNER JOIN  almacen.tbl_unidad U ON (U.id_unidadventa=DP.id_unidadventa)
INNER JOIN COMMON.TBL_SUCURSAL S ON S.ID_SUCURSAL=AL.ID_SUCURSAL
INNER JOIN COMMON.TBL_IGV I ON (I.id_igv=PROD.ID_IMPUESTO)
where prod.id_estado=1 --and ex.id_estado=1

CREATE OR REPLACE  VIEW ALMACEN.V_INVENTARIO_INICIAL
AS
select
prod.id_producto,
trim(prod.codiGo) as codigo,
trim(M.DESCRIPCION_LARGA) AS MARCA,
trim(prod.descripcion_larga) as producto,

U.desc_corta AS UNIDAD,
ex.stock_inicial as StockInicial,
ex.consto_inicial as CostoInicial,
ex.valor_incial as ValorInicial,
COALESCE(EX.stock_fisico,0) AS disponible,
pre.coste,
ex.fec_inventario as fecha,
al.descalmacen AS ALMACEN,
pre.precio1,
pre.precio2,
pre.precio3,
prod.id_estado,
prod.servicio ,
prod.impuesto,
pre.id_listaprecio,
dp.id_unidadventa,
dp.val_unidad,
dp.val_minimo,

S.ID_EMPRESA,
F.DESCRIPCION_LARGA AS FAMILA,
G.DESCRIPCION_LARGA AS GRUPO,
'0.00'::numeric(20,4) stock_ordencompra,
prod.sujet_percepcion,
i.imp_igv,
pre.ID_TIPOVENTA,
pre.UNDPRED_COMPRA,
prod.gestiona_series,
prod.gestiona_lotes,
prod.venta_retaceo,
s.id_sucursal,
al.id_almacen,
prod.id_marca,
prod.id_familia
from almacen.tbl_producto prod
INNER JOIN ALMACEN.TBL_MARCA M ON (M.ID_MARCA=PROD.ID_MARCA)
INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=PROD.ID_FAMILIA)
INNER JOIN ALMACEN.TBL_GRUPO G ON (G.ID_GRUPO=F.ID_GRUPO)
INNER JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
inner join almacen.tbl_precio pre on (dp.id_producto=pre.id_producto and dp.id_unidadventa = pre.id_unidadventa  and unidad_inventario=true)
INNER JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
INNER JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
--INNER JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
---inner join almacen.TBL_SALDOSEXISTENCIA ex on (pre.id_producto=ex.id_producto and pre.id_unidadventa=ex.id_unidad)
INNER JOIN  almacen.tbl_unidad U ON (U.id_unidadventa=DP.id_unidadventa)
INNER JOIN COMMON.TBL_SUCURSAL S ON S.ID_SUCURSAL=AL.ID_SUCURSAL
INNER JOIN COMMON.TBL_IGV I ON (I.id_igv=PROD.ID_IMPUESTO)
where prod.id_estado=1 --and ex.id_estado=1

CREATE OR REPLACE VIEW almacen.v_detalmacenproducto
AS
 SELECT p.codigo,
    p.descripcion_larga AS producto,
    u.desc_corta AS unidad,
    da.stock_inicial,
    da.id_unidadventa,
    da.id_almacen,
    da.consto_inicial,
    da.valor_incial,
    al.descalmacen AS almacen,
    p.id_producto,
    da.id_inventario,
    al.id_sucursal
   FROM almacen.tbl_existencia da
     JOIN almacen.tbl_producto p ON p.id_producto = da.id_producto
     JOIN almacen.tbl_almacen al ON al.id_almacen = da.id_almacen
     JOIN almacen.tbl_unidad u ON   (U.id_unidadventa=da.id_unidadventa);

select *from almacen.tbl_producto
select *from almacen.tbl_almacen

SELECT *FROM COMMON.TBL_TIPOVENTA
select *from ventas.tbl_facturacion
select *from planillas.tbl_persona

select *from  common.tbl_comprobante

SELECT *FROM COMMON.TBL_IGV
select *from almacen.tbl_producto

select *from almacen.tbl_almacen

SELECT *FROM ALMACEN.TBL_GRUPO
select * from almacen.V_PRODUCTOSALMACEN  where id_empresa=1 and  id_estado=1 and producto || codiGo ilike '%d%'

select *from common.tbl_empresa
select *from common.tbl_sucursal

select *from almacen.tbl_inventario

SELECT *FROM ALMACEN.TBL_ALMACEN

INSERT INTO ALMACEN.TBL_EXISTENCIA SELECT *FROM ALMACEN.TBL_EXISTENCIA WHERE ID_ALMACEN=1

INSERT INTO almacen.tbl_existencia(
            stock_fisico, id_almacen, id_producto, id_unidadventa, stock_reserva,
            stocktransito, id_lote, id_inventario, fec_inventario, valor_incial,
            stock_inicial, ubicacion, stock_reparto, id_estado, observaciones)
   SELECT stock_fisico, 2, id_producto, id_unidadventa, stock_reserva,
       stocktransito, id_lote, id_inventario, fec_inventario, valor_incial,
       stock_inicial, ubicacion, stock_reparto, id_estado, observaciones
  FROM almacen.tbl_existencia WHERE ID_ALMACEN=1;

SELECT *FROM ALMACEN.TBL_EXISTENCIA

select *from almacen.tbl_almacen

select *
from almacen.tbl_producto prod
INNER JOIN ALMACEN.TBL_MARCA M ON (M.ID_MARCA=PROD.ID_MARCA)
JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = prod.id_producto::text
inner join almacen.tbl_precio pre on (dp.id_producto=pre.id_producto and dp.id_unidadventa = pre.id_unidadventa  and unidad_inventario=true)
inner join almacen.tbl_existencia ex on (pre.id_producto=ex.id_producto and pre.id_unidadventa=ex.id_unidadventa)
INNER JOIN  almacen.tbl_unidad U ON (U.id_unidadventa=EX.id_unidadventa)
INNER JOIN ALMACEN.TBL_ALMACEN A ON  (A.ID_ALMACEN=EX.ID_ALMACEN)

select *
from almacen.tbl_producto

select *from planillas.tbl_persona

CREATE OR REPLACE VIEW PLANILLAS.V_COLABORADOR
AS
select
	per.id_persona,
	per.dni,
	per.apell_paterno,
	per.apell_materno,
	per.nombres,
	uss.id_usuario,
	uss.camp1,
	uss.camp2
from planillas.v_empleado  per
INNER JOIN SEGURIDAD.TBL_USUARIO USS ON (PER.ID_PERSONA=USS.ID_PERSONA)
INNER JOIN planillas.tbl_cargo c on(c.id_cargo=per.id_cargo)
where empleado=true;

SELECT *FROM SEGURIDAD.v_usuario

select *from planillas.tbl_persona where id_persona='00016'

update planillas.tbl_persona set empleado=true,id_estadocivil=0 where id_persona='00016'

CREATE OR REPLACE VIEW planillas.v_colaborador AS
 SELECT per.id_persona,
    per.dni,
    per.apell_paterno,
    per.apell_materno,
    per.nombres,
    uss.id_usuario,
    uss.camp1,
    uss.camp2
   FROM planillas.v_empleado per
     JOIN seguridad.tbl_usuario uss ON per.id_persona::text = uss.id_persona::text
     JOIN planillas.tbl_cargo c ON c.id_cargo = per.id_cargo
  WHERE per.empleado = true;

select *from planillas.v_empleado where id_persona = '161'

CREATE OR REPLACE  VIEW planillas.v_empleado
AS
 SELECT p.id_persona,
    p.sexo,
    p.email,
    COALESCE(p.paginaweb,'') as paginaweb,
    COALESCE(est.id_estadocivil,1) as id_estadocivil,
    est.descripcion AS estado_civil,
    e.id_estado,
    e.des_estado AS estado,
    p.fecha_nac,
    COALESCE(p.id_profesion,1) as id_profesion,
    COALESCE(p.id_cargo,1) as id_cargo,
    COALESCE(p.id_lugartrabajo,1) as id_lugartrabajo,
    COALESCE(p.id_centrocostos,1) as id_centrocostos,
    COALESCE(p.id_gradoestudios,1) as id_gradoestudios,
    p.empleado,
    COALESCE(p.carnet_essalud,'') as carnet_essalud,
    COALESCE(p.carnet_afp,'') as carnet_afp,
    COALESCE(p.cod_barras,'') as cod_barras,
    COALESCE(p.fecha_ing,now()) as fecha_ing,
    COALESCE(p.fecha_reing,now()) as fecha_reing,
    COALESCE(p.nro_hijos,0) as nro_hijos,
    COALESCE(p.fecha_cese,now()) as fecha_cese,
    COALESCE(p.nro_cuenta,'') as nro_cuenta,
    COALESCE(p.clave_asistencia,'') as clave_asistencia,
    COALESCE(p.id_sistemapp,1) as id_sistemapp,
    COALESCE(p.carga_familiar,'0') as carga_familiar,
    COALESCE(p.situacion_laboral,true) as situacion_laboral,
    COALESCE(p.apell_paterno,split_part(p.nombre_razon,' ',1)) as apell_paterno,
    COALESCE(p.apell_materno,split_part(p.nombre_razon,' ',2)) as apell_materno,
    COALESCE(p.nombres,split_part(p.nombre_razon,' ',3)) as nombres,
    COALESCE(p.dni,p.doc_persona) as dni,
    COALESCE(p.lugar_nacim,'') as lugar_nacim,
    COALESCE(p.COMICION_VCONTADO,0) as COMICION_VCONTADO,
    COALESCE(p.COMICION_VCREDITO,0) as COMICION_VCREDITO,
    COALESCE(p.COMICION_COBRANZA,0) as COMICION_COBRANZA,
    p.codigo_persona
   FROM planillas.tbl_persona p
   JOIN common.tbl_estado e ON p.id_estado = e.id_estado
   JOIN planillas.tbl_estadocivil est ON est.id_estadocivil = p.id_estadocivil;

DELETE FROM PLANILLAS.TBL_PERSONA WHERE ID_PERSONA='85'

select *from compras.tbl_detcompra

SELECT
P.CODIGO,
P.DESCRIPCION_LARGA AS PRODUCTO,
FA.DESCRIPCION_LARGA AS FAMILIA,
M.DESCRIPCION_LARGA AS MARCA,
U.DESC_LARGA AS UNIDAD,
DP.VAL_UNIDAD AS VALOR,
SUM(DF.CANTIDAD) AS CANTIDAD,
AVG(DF.PRECIO) AS PRECIO,
AVG(DF.PRECIO)*SUM(DF.CANTIDAD) AS TOTAL_VENTA,
COALESCE((select sum(dc.cantidad)from compras.tbl_detcompra dc where dc.id_producto =dp.id_producto and DP.ID_UNIDADVENTA=Dc.ID_UNIDADVENTA),0) as cant_compra,
COALESCE((select avg(dc.precio)from compras.tbl_detcompra dc where dc.id_producto =dp.id_producto and DP.ID_UNIDADVENTA=Dc.ID_UNIDADVENTA),0) as precio_compra,
COALESCE((select avg(dc.precio)*sum(dc.cantidad)from compras.tbl_detcompra dc where dc.id_producto =dp.id_producto and DP.ID_UNIDADVENTA=Dc.ID_UNIDADVENTA),0) as total_compra
FROM VENTAS.TBL_FACTURACION F
INNER JOIN VENTAS.TBL_DETFACTURACION DF ON (F.ID_FACTURACION=DF.ID_FACTURACION)
INNER JOIN ALMACEN.TBL_PRECIO DP ON(DP.ID_PRODUCTO=DP.ID_PRODUCTO AND DP.ID_UNIDADVENTA=DF.ID_UNIDADVENTA)
INNER JOIN ALMACEN.TBL_PRODUCTO P ON(P.ID_PRODUCTO=DP.ID_PRODUCTO)
INNER JOIN ALMACEN.TBL_FAMILIA FA ON (FA.ID_FAMILIA=P.ID_FAMILIA)
INNER JOIN ALMACEN.TBL_MARCA M ON (M.ID_MARCA=P.ID_MARCA)
INNER JOIN ALMACEN.TBL_UNIDAD U ON (U.ID_UNIDADVENTA=DF.ID_UNIDADVENTA)

GROUP BY P.CODIGO,
P.DESCRIPCION_LARGA ,
FA.DESCRIPCION_LARGA ,
M.DESCRIPCION_LARGA ,
U.DESC_LARGA ,
DP.VAL_UNIDAD,
dp.id_producto,
dp.id_unidadventa
--
--LEFT OUTER JOIN COMPRAS.TBL_DETCOMPRA DC ON (DP.ID_PRODUCTO =DC.ID_PRODUCTO AND DP.ID_UNIDADVENTA=DC.ID_UNIDADVENTA)

create or replace view ventas.v_piechartdemo
as
select
CASE date_part('month', f.fecha_venta::date)
            WHEN 1 THEN 'ENERO'::text
            WHEN 2 THEN 'FEBRERO'::text
            WHEN 3 THEN 'MARZO'::text
            WHEN 4 THEN 'ABRIL'::text
            WHEN 5 THEN 'MAYO'::text
            WHEN 6 THEN 'JUNIO'::text
            WHEN 7 THEN 'JULIO'::text
            WHEN 8 THEN 'AGOSTO'::text
            WHEN 9 THEN 'SEPTIEMBRE'::text
            WHEN 10 THEN 'OCTUBRE'::text
            WHEN 11 THEN 'NOVIEMBRE'::text
            WHEN 12 THEN 'DICIEMBRE'::text
            ELSE NULL::text
        END AS mes,
sum(df.cantidad) from ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion)
group by date_part('month',f.fecha_venta::dATE),f.fecha_venta::dATE;

CREATE OR REPLACE VIEW VENTAS.V_CONTACTO
AS
SELECT
	c.id_contacto,
	c.dni,
	c.apellidos,
	c.nombres,
	c.razon_comercial,
	c.direccion,
	c.ref_direccion,
	c.telefono,
	c.celular,
	c.rpm,
	c.rpc,
	c.ocupacion,
	c.lugar,
	c.direcc_trabajo,
	c.trabajo_actual,
	c.cargo,
	c.antiguedad,
	c.ing_mensual,
	c.otros_ingresos,
	c.id_estadocivil,
	c.id_tipvivienda,
	c.nomape_conyuge,
	c.dni_conyuge,
	c.trabactual_conyuge,
	c.antiguedad_conyuge,
	c.cargo_conyuge,
	c.telefono_conyuge,
	c.ingmensual_conyugue,
	c.otrosing_conyugue,
	c.email,
	c.fec_nac,
	c.fec_registro,
	c.id_trato,
	c.id_estado,
	c.id_sucursal,
	c.id_usuarior,
	c.id_usuarioa,
	c.date_act,
	c.id_sector,
	(trim(dp.departamento) || '-' || trim(p.provincia) || '-' || trim(distrito)) as ubigeo,
	(Z.zona || '-' || S.sector) AS sector,
	d.id_distrito
  FROM ventas.tbl_contacto c
  inner join ventas.tbl_sector s on (s.id_sector=c.id_sector)
  inner join ventas.tbl_zona z on (z.id_zona=s.id_zona)
  inner join common.tbl_distrito d on (d.id_distrito=z.id_distrito)
  inner join common.tbl_provincia p on (p.id_provincia=d.id_provincia)
  inner join common.tbl_dpto dp on (dp.id_dpto=p.id_dpto)

select *from ventas.v_contactopersona

create or replace view ventas.v_contactopersona
as
SELECT
	cp.id_contacto,
	c.dni,
	c.apellidos,
	c.nombres,
	c.telefono,
	c.celular,
	c.rpm,
	c.rpc,
	cp.id_contacpersona,
	cp.id_persona,
	cp.tipo_contacto,
	cp.observaciones,
        cp.id_estado ,
        cp.garante,
        c.id_sector,
	(trim(dp.departamento) || '-' || trim(p.provincia) || '-' || trim(distrito)) as ubigeo,
	(Z.zona || '-' || S.sector) AS sector,
	d.id_distrito,
	c.antiguedad,
	c.ing_mensual,
	c.otros_ingresos,
	c.id_estadocivil,
	c.id_tipvivienda,
	c.nomape_conyuge,
	c.dni_conyuge,
	c.trabactual_conyuge,
	c.antiguedad_conyuge,
	c.cargo_conyuge,
	c.telefono_conyuge,
	c.ingmensual_conyugue,
	c.otrosing_conyugue,
	c.email,
	c.razon_comercial,
	c.direccion,
	c.ref_direccion
  FROM ventas.tbl_contacto c
  inner join ventas.tbl_sector s on (s.id_sector=c.id_sector)
  inner join ventas.tbl_zona z on (z.id_zona=s.id_zona)
  inner join common.tbl_distrito d on (d.id_distrito=z.id_distrito)
  inner join common.tbl_provincia p on (p.id_provincia=d.id_provincia)
  inner join common.tbl_dpto dp on (dp.id_dpto=p.id_dpto)
  inner join ventas.tbl_contacpersona cp on(c.id_contacto=cp.id_contacto);

SELECT * FROM ventas.tbl_contacpersona
SELECT *FROM ventas.tbl_contacto

case when trim(f.id_cliente)='000' then f.DNI_CLIENTE else  trim(c.DOC_PERSONA) end as documento ,
CASE WHEN trim(f.id_cliente)='000' then trim(f.NOMAPE_CLIENTE) else  trim(c.NOMBRE_RAZON)  end AS cliente,

select *from ventas.v_impguiaremisionventa

select *from ventas.tbl_guiaremisionventa

select *from common.tbl_comprobante where id_comprobante=5

update  common.tbl_comprobante set codigosunat='09' where id_comprobante=5

select *from ventas.v_impguiaremisionventa

create or replace   view ventas.v_impguiaremisionventa
as
select distinct ( c.descripcion_corta || '/'|| lpad(cab.serie,4,'0') || '-' || lpad(cab.numero,7,'0')) documento,
cab.fecha ,
CASE WHEN trim(cab.id_cliente)='000' then trim(cab.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS distinatario,
cab.direc_partida,
dir.direccion || '-' || trim(dist.distrito) || '-' || trim(provi.provincia) || '-' || trim(dpt.departamento) as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
case when trim(cab.id_cliente)='000' then cab.DNI_CLIENTE else  trim(p.DOC_PERSONA) end as doc_dictinatario ,
t.nombre_razon as transportista,
t.doc_persona as doc_transportista,
cab.id_guia,
cab.id_sucursal,
cab.id_comprobante,
cab.id_tranzaccion,
cab.documento_referencia,--14
cab.id_motivo,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.imp_subtotal,
cab.imp_total,--20
cab.glosa,
cab.id_direccioncli,
cab.id_cliente,
cab.id_transportista,
cab.id_igv,--25
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
right(lpad(cab.serie,4,'0'),3) as serie,
lpad(cab.numero,7,'0') as numero,--30
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
ut.placa as placa_transporte,
tr.nro_constanciaincripcion as nro_constinscripcion,
COALESCE(cab.id_facturacion,0) as id_facturacion,
COALESCE(cab.id_sucursalfac,0) as id_sucursalfac,
COALESCE((cf.descripcion_corta || '/'|| lpad(f.serie_facturacion,4,'0') || '-' || lpad(f.numdoc_facturacion,7,'0')),'SIN DOCUMENTO') documento_fact,
cab.id_estado,
(cab.id_guia || '' || cab.id_sucursal) as id_documentoguia,
dm.ITEM,
(case when dm.modo_texto=true then '02' else '01' end ) as modo_texto,
dm.id_producto,
dm.id_almacen,
prod.descripcion_larga as producto,
u.desc_corta as unidad,
dm.cantidad as cantidaddet,
dm.lp,
dm.precio as preciodep,
dm.dscto as dsctodet,
dm.IMP_total as IMP_totaldet,
prod.codigo,
lp.peso,
tr.nro_licconducir,
ut.razon_social as rs_trans,
ut.ruc as ruc_trans,
ut.direccion  as dir_trans,
cab.fec_initraslado as FechaInitTraslado,
dist.id_distrito as UbigeoLlegada,
'T' as prefix,
c.codigosunat,
CASE
            WHEN length(p.doc_persona::text) <= 8 THEN 1
            ELSE
            CASE
                WHEN f.id_comprobante = 3 THEN 6
                ELSE 1
            END
        END  as TipoDocIdentidadAdquiriente ,
trim(dist.distrito) as distrito,
trim(provi.provincia) as provincia,
trim(dpt.departamento) as departamento ,
zos.id_distrito as UbigeoPartida,
disttar.id_distrito as UbigeoTransportista,
p.email,
suc.id_empresa,
suc.direccion as direccion_suc,
suc.nombre as tienda,
suc.telefono as telefono,
suc.telefono as celular,
emp.nombre as empresa,
emp.ruc as ruc_empresa,
c.descripcion_larga as tipo_comprobante,
m.codigo_sunat as codigo_motivo_traslado,--77
mod.codigo_sunat  as codigo_modalidad_traslado,--78
m.descripcion_larga as motivo_traslado, --79
mod.descripcion_larga as modalidad_traslado, --80
ut.modelo as modelo_transporte,--81
ut.marca as marca_transporte,--82
COALESCE(cab.digestvalue, ''::character varying)::character varying(500) AS digestvalue,--83
COALESCE(cab.signaturevalue, ''::character varying)::character varying(500) AS signaturevalue,--84
suc.email as email_empresa,--85
cab.responsable_recogo--86
from
ventas.tbl_guiaremisionventa cab
inner join ventas.tbl_detguiaventa dm on (cab.id_guia=dm.id_guia and cab.id_sucursal=dm.id_sucursal)
inner join almacen.tbl_precio lp on (lp.id_producto=DM.id_producto and lp.id_unidadventa=dm.id_unidadventa and  lp.id_listaprecio=dm.id_listaprecio)
inner join almacen.tbl_detproducto dp on (dp.id_producto=lp.id_producto and  dp.id_unidadventa=lp.id_unidadventa)
inner join almacen.tbl_producto prod  on(prod.id_producto=dp.id_producto)
inner join almacen.tbl_unidad  u on (u.id_unidadventa=dp.id_unidadventa)
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_direccioncli and  dir.id_persona=cab.id_cliente)
inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
inner join  ventas.tbl_zona z on (z.id_zona=sec.id_zona)
inner join common.tbl_distrito dist on (dist.id_distrito=z.id_distrito)
inner join common.tbl_provincia provi on (provi.id_provincia=dist.id_provincia)
inner join common.tbl_dpto dpt on dpt.id_dpto =provi.id_dpto
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join common.tbl_motivotraslado m on (m.ID_MOTIVO=cab.id_motivo::integer)
inner join common.tbl_modalidadtraslado mod on (mod.id_modalidad=cab.id_modalidad)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=TRIM(cab.id_transportista)::INTEGER)
--JOIN ventas.tbl_transportista tr ON tr.id_persona = cab.id_transportista::text
inner join ventas.tbl_unidadtransporte ut on (ut.id_unidadtransporte=tr.id_unidadtransporte)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_sucursal suc on suc.id_sucursal=cab.id_sucursal
INNER JOIN common.tbl_empresa emp ON emp.id_empresa = suc.id_empresa
inner join ventas.tbl_direccion dirs on dirs.id_direccion=suc.id__direccion
inner join ventas.tbl_sector secs on secs.id_sector=dir.id_Sector
inner join ventas.tbl_zona zos on zos.id_zona=secs.id_zona
inner join ventas.tbl_direccion dirtar on (dirtar.id_persona=tr.id_persona)
inner join ventas.tbl_sector sectar on (sectar.id_sector=dirtar.id_sector)
inner join  ventas.tbl_zona ztar on (ztar.id_zona=sectar.id_zona)
inner join common.tbl_distrito disttar on (disttar.id_distrito=ztar.id_distrito)

left join ventas.tbl_facturacion f on (f.id_facturacion=cab.id_facturacion and f.id_sucursal=cab.id_sucursalfac)
left  join common.tbl_comprobante cf on (cf.id_comprobante=f.id_comprobante)

where dm.id_Estado=1
order by dm.item

select *from ventas.tbl_transportista
select *from ventas.tbl_unidadtransporte
select *from ventas.tbl_unidadtransporte
select *from ventas.tbl_guiaremisionventa

select * from ventas.v_impguiaremisionventa  where id_documentoguia::text='108531'
select id_motivo,id_transportista,id_sucursal, *from ventas.tbl_guiaremisionventa where  id_guia=10853

/*
create or replace   view ventas.v_impguiaremisionventa
as
select distinct ( c.descripcion_corta || '/'|| lpad(cab.serie,4,'0') || '-' || lpad(cab.numero,7,'0')) documento,
cab.fecha ,
CASE WHEN trim(cab.id_cliente)='000' then trim(cab.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS distinatario,
--p.nombre_razon as distinatario,
cab.direc_partida,
dir.direccion || '-' || trim(dist.distrito) || '-' || trim(provi.provincia) || '-' || trim(dpt.departamento) as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
case when trim(cab.id_cliente)='000' then cab.DNI_CLIENTE else  trim(p.DOC_PERSONA) end as doc_dictinatario ,
--p.doc_persona as doc_dictinatario,
t.nombre_razon as transportista,
t.doc_persona as doc_transportista,
cab.id_guia,
cab.id_sucursal,
cab.id_comprobante,
cab.id_tranzaccion,
cab.documento_referencia,
cab.id_motivo,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.imp_subtotal,
cab.imp_total,
cab.glosa,
cab.id_direccioncli,
cab.id_cliente,
cab.id_transportista,
cab.id_igv,
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
right(lpad(cab.serie,4,'0'),3) as serie,
lpad(cab.numero,7,'0') as numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placa_transporte,
tr.nro_constanciaincripcion as nro_constinscripcion,
COALESCE(cab.id_facturacion,0) as id_facturacion,
COALESCE(cab.id_sucursalfac,0) as id_sucursalfac,
COALESCE((cf.descripcion_corta || '/'|| lpad(f.serie_facturacion,4,'0') || '-' || lpad(f.numdoc_facturacion,7,'0')),'SIN DOCUMENTO') documento_fact,
cab.id_estado,
(cab.id_guia || '' || cab.id_sucursal) as id_documentoguia,
dm.ITEM,
(case when dm.modo_texto=true then '02' else '01' end ) as modo_texto,
dm.id_producto,
dm.id_almacen,
prod.descripcion_larga as producto,
u.desc_corta as unidad,
dm.cantidad as cantidaddet,
dm.lp,
dm.precio as preciodep,
dm.dscto as dsctodet,
dm.IMP_total as IMP_totaldet,
prod.codigo,
lp.peso,
tr.nro_licconducir,
ut.razon_social as rs_trans,
ut.ruc as ruc_trans,
ut.direccion  as dir_trans,
cab.fec_initraslado as FechaInitTraslado,
dist.id_distrito as UbigeoLlegada,
'T' as prefix,
c.codigosunat,
CASE
            WHEN length(p.doc_persona::text) <= 8 THEN 1
            ELSE
            CASE
                WHEN f.id_comprobante = 3 THEN 6
                ELSE 1
            END
        END  as TipoDocIdentidadAdquiriente ,
trim(dist.distrito) as distrito,
trim(provi.provincia) as provincia,
trim(dpt.departamento) as departamento ,
zos.id_distrito as UbigeoPartida,
disttar.id_distrito as UbigeoTransportista,
p.email,
suc.id_empresa
from
ventas.tbl_guiaremisionventa cab
inner join ventas.tbl_detguiaventa dm on (cab.id_guia=dm.id_guia and cab.id_sucursal=dm.id_sucursal)
inner join almacen.tbl_precio lp on (lp.id_producto=DM.id_producto and lp.id_unidadventa=dm.id_unidadventa and  lp.id_listaprecio=dm.id_listaprecio)
inner join almacen.tbl_detproducto dp on (dp.id_producto=lp.id_producto and  dp.id_unidadventa=lp.id_unidadventa)
inner join almacen.tbl_producto prod  on(prod.id_producto=dp.id_producto)
inner join almacen.tbl_unidad  u on (u.id_unidadventa=dp.id_unidadventa)
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_direccioncli and  dir.id_persona=cab.id_cliente)
inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
inner join  ventas.tbl_zona z on (z.id_zona=sec.id_zona)
inner join common.tbl_distrito dist on (dist.id_distrito=z.id_distrito)
inner join common.tbl_provincia provi on (provi.id_provincia=dist.id_provincia)
inner join common.tbl_dpto dpt on dpt.id_dpto =provi.id_dpto
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join common.tbl_concepto m on (m.id_concepto=cab.id_motivo)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=TRIM(cab.id_transportista)::INTEGER)
inner join ventas.tbl_unidadtransporte ut on (ut.id_unidadtransporte=tr.id_unidadtransporte)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_sucursal suc on suc.id_sucursal=cab.id_sucursal
inner join ventas.tbl_direccion dirs on dirs.id_direccion=suc.id__direccion
inner join ventas.tbl_sector secs on secs.id_sector=dir.id_Sector
inner join ventas.tbl_zona zos on zos.id_zona=secs.id_zona
inner join ventas.tbl_direccion dirtar on (dirtar.id_persona=tr.id_persona)
inner join ventas.tbl_sector sectar on (sectar.id_sector=dirtar.id_sector)
inner join  ventas.tbl_zona ztar on (ztar.id_zona=sectar.id_zona)
inner join common.tbl_distrito disttar on (disttar.id_distrito=ztar.id_distrito)

left join ventas.tbl_facturacion f on (f.id_facturacion=cab.id_facturacion and f.id_sucursal=cab.id_sucursalfac)
left  join common.tbl_comprobante cf on (cf.id_comprobante=f.id_comprobante)

where dm.id_Estado=1
order by dm.item
*/

select *from ventas.tbl_transportista
select *from ventas.tbl_direccion where id_direccion=817
select *from ventas.tbl_sector where id_sector=1205
select *from ventas.tbl_zona where id_zona=1205
select *from common.tbl_distrito where id_distrito='140101'

select *from common.tbl_sucursal
select *from planillas.tbl_persona
select *from  ventas.tbl_transportista

SELECT *FROM ventas.tbl_guiaremisionventa cab

alter table almacen.tbl_precio add column peso numeric(20,4) default 0.00;

select *from almacen.tbl_detproducto

select * from almacen.tbl_precio

SELECT
dm.ITEM,
(case when dm.modo_texto=true then '02' else '01' end ) as modo_texto,
dm.id_producto,
dm.id_almacen,
p.descripcion_larga as producto,
u.desc_corta as unidad,
dm.cantidad,
dm.lp,
dm.precio,
dm.dscto,
dm.IMP_total,
dm.id_unidadventa,
dm.id_listaprecio,
dm.id_estado,
2 as op,
dm.id_guia,
dm.id_sucursal,
 (dm.item::text || ',' || dm.id_producto::text || ',' ||  dm.id_unidadventa::text || ','  || dm.id_listaprecio::text || ',' ||id_almacen::text) as id_old,
 dm.id_inventario,
 (dm.id_guia || '' || dm.id_sucursal) as id_documentoguia
 FROM  ventas.tbl_detguiaventa dm
inner join almacen.tbl_precio lp on (lp.id_producto=DM.id_producto and lp.id_unidadventa=dm.id_unidadventa and  lp.id_listaprecio=dm.id_listaprecio)
inner join almacen.tbl_detproducto dp on (dp.id_producto=lp.id_producto and  dp.id_unidadventa=lp.id_unidadventa)
inner join almacen.tbl_producto p  on(p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad  u on (u.id_unidadventa=dp.id_unidadventa)
order by dm.item

--¿Quién es el cliente que más ha comprado? Mostrar el número de cliente, el primer nombre y el total. */
--cliente que mas ha comprado (dinero gastado)
Select cl.id_persona as codigo_cliente, cl.nombre_Razon as Nombre, SUM(df.precio*df.cantidad) as total
from planillas.tbl_persona cl
inner join ventas.tbl_facturacion f on(cl.id_persona=f.id_cliente)
inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
group by cl.id_persona, cl.nombre_Razon
having SUM(df.precio*df.cantidad) = (select max(total) from
(Select cl.id_persona as codigo_cliente, cl.nombre_Razon as Nombre, SUM(df.precio*df.cantidad) as total
from planillas.tbl_persona cl
inner join ventas.tbl_facturacion f on(cl.id_persona=f.id_cliente)
inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
group by cl.id_persona, cl.nombre_Razon) as t1)

/*
¿Cuál es la familia más vendida y la menos vendida? (una sola consulta)
Mostrar en la primera línea el nombre de la categoría máxima y el total vendido y
en la segunda línea el nombre de la categoría mínima y el total vendido
*/
--total en cantidad monetaria select *from almacen.tbl_familia

select * from (
select s.id_empresa,'MAXIMO' as CONDICION,fa.descripcion_larga  as categoria, sum(df.precio*df.cantidad) as total
from
ventas.tbl_detfacturacion df
inner join  almacen.tbl_producto p on (p.id_producto=df.id_producto)
inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
group by s.id_empresa,categoria
having sum(df.precio*df.cantidad) = (SELECT MAX(total) from
(select s.id_empresa,fa.descripcion_larga as categoria, sum(df.precio*df.cantidad) as total
from
ventas.tbl_detfacturacion df
inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
group by s.id_empresa,categoria) as t
)
UNION
select s.id_empresa, 'MINIMO',fa.descripcion_larga as categoria, sum(df.precio*df.cantidad) as total
from
ventas.tbl_detfacturacion df
inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
group by s.id_empresa,categoria
having sum(df.precio*df.cantidad) = (SELECT MIN(total) from
(select s.id_empresa,fa.descripcion_larga as categoria, sum(df.precio*df.cantidad) as total
from
ventas.tbl_detfacturacion df
inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
group by s.id_empresa,categoria) as t
)
) as t order by total DESC

/*
¿Cuáles son los totales vendidos por categoría y por mes?
Mostrar la categoría, el total del mes 1 hasta el mes 12 y los subtotales tanto
horizontal como vertical
*/

select * from ventas.CUR_VENTASXCATEGORIA('otrocursor','1','','');
FETCH ALL IN otrocursor;

CREATE OR REPLACE FUNCTION VENTAS.CUR_VENTASXCATEGORIA(refcursor,_id_empresa integer,producto text,text)
returns refcursor as $BODY$
DECLARE
BEGIN
OPEN $1 FOR
	SELECT * FROM (
	(select fa.descripcion_larga as categoria,
	SUM(case when extract(month from f.fecha_venta)=1 then df.cantidad*df.precio else 0 end) ENE ,
	SUM(case when extract(month from f.fecha_venta)=2 then df.cantidad*df.precio else 0 end) FEB ,
	SUM(case when extract(month from f.fecha_venta)=3 then df.cantidad*df.precio  else 0 end) MAR,
	SUM(case when extract(month from f.fecha_venta)=4 then df.cantidad*df.precio  else 0 end) ABR,
	SUM(case when extract(month from f.fecha_venta)=5 then df.cantidad*df.precio  else 0 end) MAY,
	SUM(case when extract(month from f.fecha_venta)=6 then df.cantidad*df.precio  else 0 end) JUN,
	SUM(case when extract(month from f.fecha_venta)=7 then df.cantidad*df.precio  else 0 end) JUL,
	SUM(case when extract(month from f.fecha_venta)=8 then df.cantidad*df.precio  else 0 end) AGO,
	SUM(case when extract(month from f.fecha_venta)=9 then df.cantidad*df.precio  else 0 end) SEP,
	SUM(case when extract(month from f.fecha_venta)=10 then df.cantidad*df.precio  else 0 end) OCT,
	SUM(case when extract(month from f.fecha_venta)=11 then df.cantidad*df.precio  else 0 end) NOV,
	SUM(case when extract(month from f.fecha_venta)=12 then df.cantidad*df.precio  else 0 end) DIC,
	sum(df.precio*df.cantidad) as subtotal
	from ventas.tbl_facturacion f
	inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
	inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
	inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
	inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
	where extract(year from f.fecha_venta)=_id_empresa
	group by categoria)
	) AS T order by categoria;
RETURN $1;
end;$BODY$
language 'plpgsql';

create or replace view caja.v_presupuesto
as
SELECT
	pre.id_presupuesto,
	pre.fecha,
	case when p.apell_paterno is null then p.nombre_razon else (p.apell_paterno ||  ' '|| p.apell_materno || ' '|| nombres) end as responsable,
	pre.imp_asignado,
	m.simbolo as moneda,
	e.des_estado as estado,
	pre.observaciones,
	pre.id_sucursal,
	pre.imp_reportado,
	pre.imp_deudor,
	pre.fec_liquidacion,
	pre.fec_actualizacion,
        pre.id_ussregistra,
        pre.id_ussactualiza,
        pre.id_responsable,
        pre.id_estado,
        pre.id_moneda
  FROM caja.tbl_presupuesto pre
  inner join planillas.tbl_persona p on (p.id_persona=pre.id_responsable)
  inner join common.tbl_moneda m on (m.id_moneda=pre.id_moneda)
  inner join common.tbl_estado e on (e.id_estado=pre.id_estado);

CREATE OR REPLACE VIEW almacen.v_inventariovalorciadoinicial
AS
 SELECT p.id_producto,
    f.descripcion_larga AS familia,
    p.descripcion_larga AS producto,
    u.desc_larga AS unidad,
    e.stock_inicial,
    e.costo_promedio AS costo,
    e.stock_inicial * e.consto_inicial AS valor_inicial,
    e.id_almacen,
    e.id_inventario,
    e.fec_inventario,
    p.id_familia,
    s.id_empresa
   FROM almacen.tbl_existencia e
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = e.id_producto::text AND dp.id_unidadventa = e.id_unidadventa
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_familia f ON f.id_familia = p.id_familia
   JOIN almacen.tbl_almacen al ON al.id_almacen = e.id_almacen
   JOIN common.tbl_sucursal s ON s.id_sucursal = al.id_sucursal
  WHERE e.stock_inicial > 0::numeric
  ORDER BY p.id_familia, p.descripcion_larga;

select *from almacen.v_inventariovalorciadoinicial
select *from almacen.tbl_existencia
---se modifico temporalmente alineas arriba esta la original

CREATE OR REPLACE  VIEW almacen.v_inventariovalorciadoinicial
AS
 SELECT p.id_producto,
    f.descripcion_larga AS familia,
    p.descripcion_larga AS producto,
    u.desc_larga AS unidad,
    e.stock_fisico stock_inicial,
    e.costo_promedio::numeric(20,6) AS costo,-- e.consto_inicial AS costo,
    e.stock_fisico * e.costo_promedio AS valor_inicial,-- e.consto_inicial AS valor_inicial,
    e.id_almacen,
    e.id_inventario,
    e.fec_inventario,
    p.id_familia,
    s.id_empresa,
    e.id_unidadventa
   FROM almacen.tbl_existencia e
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = e.id_producto::text AND dp.id_unidadventa = e.id_unidadventa and dp.unidad_inventario=true and dp.id_estado=1
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_familia f ON f.id_familia = p.id_familia
   JOIN almacen.tbl_almacen al ON al.id_almacen = e.id_almacen
   JOIN common.tbl_sucursal s ON s.id_sucursal = al.id_sucursal
   inner join almacen.tbl_precio pre on pre.id_producto=dp.id_producto and pre.id_unidadventa=dp.id_unidadventa
  WHERE
  e.id_estado=1 and p.id_estado=1 and e.stock_fisico<>0 and p.servicio=false and p.serivicio=false
  ORDER BY p.id_familia, p.descripcion_larga;

CREATE OR REPLACE VIEW almacen.v_inventario_inicial_valorizado
AS
 SELECT
    p.id_producto,
    p.codigo,
    al.descalmacen as almacen,
    g.descripcion_larga as grupo,
    f.descripcion_larga AS familia,
    p.descripcion_larga AS producto,
    u.desc_larga AS unidad,
    e.stock_inicial stock_inicial,
    e.consto_inicial::numeric(20,4) AS costo,-- e.consto_inicial AS costo,
    e.stock_inicial * e.consto_inicial AS valor_inicial,-- e.consto_inicial AS valor_inicial,
    e.id_almacen,
    e.id_inventario,
    e.fec_inventario,
    p.id_familia,
    s.id_empresa,
    g.id_grupo
   FROM almacen.tbl_existencia e
   JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = e.id_producto::text AND dp.id_unidadventa = e.id_unidadventa and dp.unidad_inventario=true
   JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
   JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
   JOIN almacen.tbl_familia f ON f.id_familia = p.id_familia
   INNER JOIN almacen.tbl_grupo g on g.id_grupo=f.id_grupo
   JOIN almacen.tbl_almacen al ON al.id_almacen = e.id_almacen
   JOIN common.tbl_sucursal s ON s.id_sucursal = al.id_sucursal
  WHERE
  e.id_estado=1 and p.id_estado=1 and e.servicio=false
  ORDER BY p.id_familia, p.descripcion_larga;

select *from almacen.tbl_almacen
select *from almacen.tbl_precio

SELECT *FROM ALMACEN.TBL_EXISTENCIA

SELECT *FROM ALMACEN.TBL_UNIDAD
select *from common.tbl_estado
select *from common.tbl_moneda
select *from planillas.tbl_persona

select dc.id_producto,p.descripcion_larga as producto ,sum(dc.cantidad) as cantidad_compra,0::numeric(20,4) as cantidad_venta from compras.tbl_compra c
inner join compras.tbl_detcompra dc on (c.id_sucursalcompra=dc.id_sucursalcompra and c.anio=dc.anio and c.id_compra=dc.id_compra and c.id_mes=dc.id_mes)
inner join almacen.tbl_producto p on (p.id_producto=dc.id_producto)
group by dc.id_producto,p.descripcion_larga
union
select df.id_producto,p.descripcion_larga as producto ,0::numeric(20,4) as cantidad_compra,sum(df.cantidad) as cantidad_venta from ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
group by df.id_producto,p.descripcion_larga

select * from almacen.cur_cantidadcomprasventasproducto('otrocursor','01/02/2014','16/10/2014','');
FETCH ALL IN otrocursor;

select *from compras.tbl_compra
select *from ventas.tbl_facturacion

create or replace  function almacen.cur_cantidadcomprasventasproducto(refcursor,fecini text, fechasta text,text)
returns refcursor as $BODY$
declare
cad text;
begin
  cad='
select dc.id_producto,p.descripcion_larga as producto ,sum(dc.cantidad) as cantidad_compra,0::numeric(20,4) as cantidad_venta
from compras.tbl_compra c
inner join compras.tbl_detcompra dc on (c.id_sucursalcompra=dc.id_sucursalcompra and c.anio=dc.anio and c.id_compra=dc.id_compra and c.id_mes=dc.id_mes)
inner join almacen.tbl_producto p on (p.id_producto=dc.id_producto) where c.fec_documento::date>='''|| fecini || ''' and c.fec_documento::date<='''|| fechasta || '''
group by dc.id_producto,p.descripcion_larga
union
select df.id_producto,p.descripcion_larga as producto ,0::numeric(20,4) as cantidad_compra,sum(df.cantidad) as cantidad_venta from ventas.tbl_facturacion f
inner join ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
where f.fecha_venta::date>='''|| fecini || ''' and f.fecha_venta::date<='''|| fechasta || '''
group by df.id_producto,p.descripcion_larga
 ';
open $1 for execute cad;
  return $1;
end;$BODY$
language 'plpgsql';

create or replace  view ventas.v_visitas
as
select
v.id_diasemana,
ds.nombre_dia as dia,
es.des_estado,
2 as op,
v.id_visita,
v.id_persona,
v.id_estado
 from
ventas.tbl_visita v
inner join ventas.tbl_diasemana ds on (ds.id_diasemana=v.id_diasemana)
inner join common.tbl_estado es on es.id_estado=v.id_estado

 SELECT
    f.fecha_venta::Date AS fecha_emision,
    CASE  f.id_comprobante
        WHEN 3 THEN '01'
        WHEN 2 THEN '03'
        ELSE
        '00'
      END AS tipo,
    --lpad(f.id_comprobante::text,2,'0') as tipo,
    cp.descripcion_corta AS tipo_documento,
    lpad(f.serie_facturacion,4,'0') AS nro_serie,
    lpad(f.numdoc_facturacion,7,'0') AS nro_comprobante,
    case when length(c.doc_persona)<=8 then 1 else 6 end as tipo_docliente,
   -- c.doc_persona AS doc_cliente,
     case when trim(f.id_cliente)='000' then f.DNI_CLIENTE else  trim(c.DOC_PERSONA) end as doc_cliente ,
    CASE WHEN trim(f.id_cliente)='000' then trim(f.NOMAPE_CLIENTE) else  trim(c.NOMBRE_RAZON)  end ||
        CASE
            WHEN f.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN f.id_operacion = 2 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE sum(f.imp_total)
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE sum(f.valor_venta)
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN f.id_operacion = 1 THEN
            CASE
                WHEN f.id_estado = 7 THEN 0::numeric
                ELSE f.imp_igv
            END
            ELSE 0::numeric
        END AS igv,

        CASE f.id_estado
	     WHEN 1 THEN sum(f.imp_total)
	     when 7 then 0
	     when 3 then 0
	     else
	     0
        END AS total,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || lpad(f.serie_facturacion::text,4,'0')) || '-'::text) || lpad(f.numdoc_facturacion::text,7,'0') AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
   ( case f.id_estado
    WHEN 1 then f.valor_venta
     WHEN 7  then 0
     WHEN 3 then 0
     else 0 end) valor_venta,
    case f.id_estado
	when 1 then f.imp_igv
	when 7 then 0
	when 3 then 0
	else 0 end as imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    f.id_facturacion::text || f.id_sucursal::text AS codigo_venta,
    m.id_moneda,
    f.id_operacion,
    f.id_tipoventa,
    f.id_facturacion,
    cp.id_comprobante AS idtipcomprobante,
    f.id_estado,
    S.ID_EMPRESA
   FROM ventas.tbl_facturacion f
   JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
   JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
   JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
   JOIN common.tbl_estado e ON e.id_estado = f.id_estado
   JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
   JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
   JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=F.ID_SUCURSAL)
group by f.id_comprobante,f.fecha_venta,cp.descripcion_corta
  ORDER BY f.id_comprobante, f.serie_facturacion::integer, f.numdoc_facturacion::integer;

CREATE OR REPLACE VIEW VENTAS.V_LINEACREDITO
AS
SELECT
id_linea,
lc.id_sucursal,
limite_linea,
fec_aprobacion,
fec_actualizacion,
id_moneda,
id_usuarior,
id_usuarioaprueba,
id_usuarioanula,
id_usuarioactualiza,
imp_ampliacion,
lc.id_estado,
lc.id_cliente,
COALESCE(vc.saldo,0) as IMP_CONSUMIDO

--COALESCE((SELECT SUM(IMP_TOTAL) FROM VENTAS.TBL_FACTURACION F WHERE LC.ID_CLIENTE=F.ID_CLIENTE AND F.ID_ESTADO=1 AND LC.ID_ESTADO=1),0) AS IMP_CONSUMIDO,
  FROM ventas.tbl_lineacredito LC
  inner join common.tbl_sucursal s on s.id_sucursal=lc.id_sucursal
  left join  (select vc.id_cliente, sum(saldo) as saldo
		from creditos.v_cuenta_corriente_clientes vc
		group by vc.id_cliente
) vc on vc.id_cliente=lc.id_cliente

select *from creditos.v_cuenta_corriente_clientes

CREATE OR REPLACE VIEW ventas.v_clienteszona
AS
 SELECT cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    z.zona,
    s.sector,
    dis.distrito,
    prov.provincia,
    z.id_zona,
    s.id_sector,
    prov.id_provincia,
    (trim(dis.distrito)|| '-' || trim(prov.provincia)) as ubigeo,
    dis.id_distrito
   FROM planillas.tbl_persona cli
   JOIN ventas.tbl_direccion dir ON cli.id_persona::text = dir.id_persona::text
   JOIN ventas.tbl_sector s ON s.id_sector = dir.id_sector
   JOIN ventas.tbl_zona z ON z.id_zona = s.id_zona
   JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
   JOIN common.tbl_provincia prov ON prov.id_provincia::text = dis.id_provincia::text
  order by prov.id_provincia::integer,s.id_sector,cli.nombre_razon

select

CREATE OR REPLACE VIEW CREDITOS.V__CUOTAS__X__COBRAR
AS
SELECT
	(TC.DESCRIPCION_CORTA || '/'||F.serie_facturacion || '-' || F.numdoc_facturacion ) AS COMPROBANTE,
	PE.NOMBRE_RAZON AS CLIENTE,
	PE.DOC_PERSONA AS RUCDNI ,
	F.FECHA_VENTA,
	F.IMP_TOTAL AS TOTAL_FACTURACION,
	M.SIMBOLO AS MONEDA,
	case when f.id_unidad is null then
		'VENDEDOR :'|| COALESCE((V.APELL_PATERNO || ' ' || V.APELL_MATERNO || ' ' || V.NOMBRES),PE.NOMBRE_RAZON)
	else
		'CHOFER :'|| COALESCE((V.APELL_PATERNO || ' ' || V.APELL_MATERNO || ' ' || V.NOMBRES),PE.NOMBRE_RAZON)  || '  => '  || (SELECT p.descripcion_larga FROM ALMACEN.TBL_PRODUCTO p where  p.id_producto=f.id_unidad)
	end AS VENDEDOR,
	COALESCE(V.DNI,V.DOC_PERSONA) DOC_VENDEDOR,
	c.nro_cuota,
	c.imp_cuota,
	c.imp_mora,
	c.imp_total,
	c.fec_vencimiento,
	(c.fec_vencimiento::date-now()::date) as dias,
	COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)),0) as monto_cancelado,
	 c.imp_cuota + c.imp_mora  - COALESCE((select sum(cmov.imp_pago)
	from  creditos.tbl_detpagocuota cmov
	where    (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)),0) AS saldo_debito	,
	F.ID_VENDEDOR,
	F.ID_CLIENTE,
	s.id_empresa,
	(f.id_facturacion::text || f.id_sucursal::text) as id_facturacion
 FROM
VENTAS.TBL_FACTURACION F
INNER JOIN COMMON.TBL_COMPROBANTE TC ON TC.ID_COMPROBANTE= F.id_COMPROBANTE
INNER JOIN COMMON.TBL_MONEDA M ON M.ID_MONEDA= F.ID_MONEDA
INNER JOIN COMMON.TBL_TIPOVENTA TV ON TV.id_tipoventa = F.id_tipoventa
INNER JOIN PLANILLAS.TBL_PERSONA V ON (V.ID_PERSONA=F.ID_VENDEDOR)
INNER JOIN PLANILLAS.TBL_PERSONA PE ON (PE.ID_PERSONA=F.ID_CLIENTE)
INNER JOIN creditos.tbl_ventacredito VC ON(f.id_facturacion=vc.id_facturacion AND F.ID_SUCURSAL=VC.id_sucursal)
INNER JOIN CREDITOS.TBL_CREDITO CR ON (CR.ID_CREDITO=VC.ID_CREDITO AND CR.id_sucursal_credito=VC.id_sucursal_credito)
INNER JOIN CREDITOS.TBL_CUOTA C ON(C.ID_CREDITO=VC.ID_CREDITO AND C.id_sucursal_credito=VC.id_sucursal_credito)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=F.ID_SUCURSAL)
order by f.id_vendedor,f.id_facturacion,c.nro_cuota
for update NOWAIT; --skip locked
select *from ventas.v__unidad__transporte

create or replace view ventas.v__unidad__transporte
as
select
id_unidadtransporte,
modelo,
marca,
placa,
capacidad,
color,
id_sucursal,
UND.id_estado ,
ruc,
razon_social,
direccion,
COALESCE(P.ID_PRODUCTO,'-') AS ID_PRODUCTO ,
COALESCE(P.DESCRIPCION_LARGA,'-') AS VEHICULO
from ventas.TBL_UNIDADTRANSPORTE UND
LEFT JOIN ALMACEN.TBL_PRODUCTO P ON P.ID_PRODUCTO=UND.ID_PRODUCTO

update  ventas.TBL_UNIDADTRANSPORTE  set id_producto='TXT-01'

select * from ventas.v__unidad__transporte  where id_producto= '971'

create or replace view ventas.v__transportista
as
select
t.id_transportista,
p.dni,
p.apell_paterno ||' '|| p.apell_materno || ' '|| p.nombres as transportista,
t.nro_licconducir,
t.NRO_CONSTANCIAINCRIPCION,
COALESCE(modelo,'') as modelo,
COALESCE(marca,'') as mrca,
COALESCE(placa,'') as placa,
COALESCE(capacidad,0) as capacidad,
COALESCE(color,'') as color,
ut.id_unidadtransporte,
P.ID_PERSONA,
ut.ruc,
ut.razon_social,
ut.direccion
from
ventas.tbl_transportista t
inner join planillas.tbl_persona p on (p.id_persona=t.id_persona)
inner join ventas.TBL_UNIDADTRANSPORTE ut on (ut.id_unidadtransporte=t.id_unidadtransporte)

select *from ventas.tbl_transportista
select *from ventas.TBL_UNIDADTRANSPORTE

CREATE OR REPLACE VIEW VENTAS.V__CLIENTES__X__VENDEDOR
AS
SELECT
P.DOC_PERSONA AS DOC_CLIENTE,
P.NOMBRE_RAZON AS CLIENTE,
DIR.DIRECCION ,
VEND.DNI AS DNI_VENDEDOR,
COALESCE(VEND.APELL_PATERNO || ' ' || VEND.APELL_MATERNO || ', ' || VEND.NOMBRES,VEND.NOMBRE_RAZON) AS VENDEDOR,
P.ID_PERSONA AS ID_CLIENTE,
VEND.ID_PERSONA AS ID_VENDEDOR,
dis.id_distrito::integer as ID_ZONA,
TRIM(DIS.DISTRITO)  AS ZONA,--TRIM(Z.ZONA) || ', ' ||  TRIM(DIS.DISTRITO) || ', ' || TRIM(PRO.PROVINCIA) AS ZONA,

/*sum(COALESCE((select sum(c.imp_cuota)
	from ventas.tbl_facturacion fac
	inner join creditos.tbl_ventacredito vc on (vc.id_facturacion=fac.id_facturacion and fac.id_sucursal=vc.id_sucursal and fac.id_tipoventa=2)
	inner join creditos.tbl_cuota c on (vc.id_credito=c.id_credito and vc.id_sucursal_credito=c.id_sucursal_credito)
	where  fac.id_cliente=p.id_persona ),0)-

COALESCE((select sum(mov.imp_movimiento)
	from  ventas.tbl_facturacion fac
	inner join creditos.tbl_ventacredito vc on (vc.id_facturacion=fac.id_facturacion and fac.id_sucursal=vc.id_sucursal and fac.id_tipoventa=2)
	inner join creditos.tbl_cuota c on (vc.id_credito=c.id_credito and vc.id_sucursal_credito=c.id_sucursal_credito)
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   fac.id_cliente=p.id_persona ),0)) */
COALESCE((select sum(c.imp_cuota)
	from   ventas.tbl_facturacion fac
	inner join creditos.tbl_ventacredito cred on (fac.id_facturacion=cred.id_facturacion and fac.id_sucursal=cred.id_sucursal and fac.id_tipoventa=2 and fac.id_Estado=1)
	inner join creditos.tbl_cuota c on (cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	where  fac.id_cliente=p.id_persona),0)-
COALESCE((select sum(mov.imp_movimiento)
	from   ventas.tbl_facturacion fac
	inner join creditos.tbl_ventacredito cred on (fac.id_facturacion=cred.id_facturacion and fac.id_sucursal=cred.id_sucursal and fac.id_tipoventa=2 and fac.id_estado=1)
	inner join creditos.tbl_cuota c on ( cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   fac.id_cliente=p.id_persona),0)-
COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from   ventas.tbl_facturacion fac
	inner join creditos.tbl_ventacredito cred on (fac.id_facturacion=cred.id_facturacion and fac.id_sucursal=cred.id_sucursal and fac.id_tipoventa=2 and fac.id_estado=1)
	inner join creditos.tbl_cuota_notacredito NC on(Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
where (fac.id_cliente=p.id_persona)),0) as saldo

FROM PLANILLAS.TBL_PERSONA P
INNER JOIN VENTAS.TBL_DIRECCION DIR ON (P.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN VENTAS.tbl_sector R ON (R.id_sector=DIR.id_sector)
INNER JOIN VENTAS.TBL_ZONA Z ON (Z.ID_ZONA=R.ID_ZONA)
INNER JOIN COMMON.TBL_DISTRITO DIS ON (DIS.ID_DISTRITO=Z.ID_DISTRITO)
INNER JOIN COMMON.TBL_PROVINCIA PRO ON (PRO.ID_PROVINCIA=DIS.ID_PROVINCIA)
INNER JOIN PLANILLAS.TBL_PERSONA VEND ON(VEND.ID_PERSONA=P.ID_VENDTITULAR)
LEFT JOIN VENTAS.TBL_FACTURACION F ON (P.ID_PERSONA=F.ID_CLIENTE)
--left join creditos.tbl_ventacredito  vc on (vc.id_sucursal=F.id_sucursal and  vc.id_facturacion=F.id_facturacion)
--left join creditos.tbl_credito cred on (cred.id_credito=vc.id_credito and  cred.id_sucursal_credito=vc.id_sucursal_credito)
group by P.DOC_PERSONA ,P.NOMBRE_RAZON,DIR.DIRECCION,VEND.DNI,VEND.APELL_PATERNO,VEND.APELL_MATERNO, VEND.NOMBRES,VEND.NOMBRE_RAZON,
P.ID_PERSONA,dis.id_distrito,VEND.ID_PERSONA,DIS.DISTRITO,PRO.PROVINCIA
order by dis.id_distrito,p.NOMBRE_RAZON

CREATE OR REPLACE VIEW VENTAS.V__PRODUCTOS__VENDEDOR
AS
SELECT
F.FECHA_VENTA,
COALESCE(VEND.APELL_PATERNO || ' ' || VEND.APELL_MATERNO || ', ' || VEND.NOMBRES,VEND.NOMBRE_RAZON) AS VENDEDOR,
COALESCE(VEND.DNI,VEND.DOC_PERSONA) AS DOC_VENDEDOR,
CASE
    WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
    ELSE (btrim(cli.nombre_razon::text))
END AS cliente,
P.DESCRIPCION_LARGA AS PRODUCTO,
UND.DESC_CORTA AS UNIDAD,
DF.CANTIDAD,
DF.PRECIO,
DF.IMPORTE AS TOTAL,
F.ID_VENDEDOR
FROM VENTAS.TBL_FACTURACION  F
INNER JOIN PLANILLAS.TBL_PERSONA VEND ON (VEND.ID_PERSONA=F.ID_VENDEDOR)
INNER JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=F.ID_CLIENTE)
INNER JOIN VENTAS.TBL_DETFACTURACION DF ON (F.ID_FACTURACION=DF.ID_FACTURACION AND F.ID_SUCURSAL=DF.ID_SUCURSAL)
INNER JOIN ALMACEN.TBL_DETPRODUCTO DP ON(DP.ID_PRODUCTO=DF.ID_PRODUCTO AND DP.ID_UNIDADVENTA=DF.ID_UNIMEDVENTA)
INNER JOIN ALMACEN.TBL_PRODUCTO P ON (P.ID_PRODUCTO=DP.ID_PRODUCTO)
INNER JOIN ALMACEN.TBL_UNIDAD UND ON (UND.ID_UNIDADVENTA=DP.ID_UNIDADVENTA)
ORDER BY F.ID_VENDEDOR

select *from creditos.tbl_cuota where id_credito=103

CREATE OR REPLACE  VIEW CREDITOS.V__POSICION__DE__CARTERA
AS
select
case when fac.id_unidad is null then
(tbl_comprobante.descripcion_corta || '/' || fac.serie_facturacion || '-' || fac.numdoc_facturacion)
else (select prod.descripcion_larga from almacen.tbl_producto prod where prod.id_producto=fac.id_unidad) end ::text
 as documento,
to_char(cred.fec_emision,'dd/mm/yyyy'::text) as fec_credito,
   cli.nombre_razon AS cliente,
   (DIR.DIRECCION || ', ' || TRIM(DIS.distrito)) AS DIRECCION,
to_char((select c.fec_vencimiento
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito
		ORDER BY c.nro_cuota DESC
                 LIMIT 1),'dd/mm/yyyy'::text) as fec_vencimiento,
tbl_moneda.simbolo as moneda,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0) - COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_cuota_notacredito NC
where (Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred and nc.id_estado=1)),0)
as credito,

COALESCE((select sum(mc.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito and mc.id_estado=1),0) as pagos,

COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-
COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito and mov.id_estado=1),0)-COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_cuota_notacredito NC
where (Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred and nc.id_estado=1)),0) as saldo,

         fac.imp_total+COALESCE((select sum(c.imp_interes)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)   , 0.00)  as total_venta,

COALESCE(to_char((select mc.fecha_mov from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito order by mc.fecha_mov desc limit 1 ),'dd/mm/yyyy'::text),'') as ultimo_pago,

	(SELECT SUM(now()::date-cc.fec_vencimiento::date) FROM CREDITOS.TBL_CUOTA CC
	WHERE CRED.ID_CREDITO=CC.ID_CREDITO AND CRED.ID_SUCURSAL_CREDITO=CC.ID_SUCURSAL_CREDITO) as dias_atrazados,
tbl_tipoventa.descripcion_larga::text AS tipo_venta,
fac.id_facturacion,
fac.id_sucursal,
fac.id_cliente,
fac.id_direccion,
cred.id_credito,
cred.id_sucursal_credito,
tbl_comprobante.descripcion_corta as comprobante,
fac.serie_facturacion,
fac.numdoc_facturacion,
cli.doc_persona AS doc_cliente,
suc.id_empresa,
cli.id_vendtitular as id_vendedor,
((select c.fec_vencimiento::date
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito
		ORDER BY c.nro_cuota DESC
                 LIMIT 1)-cred.fec_emision::date)::text || ' DIAS' as dias_credito,
COALESCE((vend.apell_paterno || '' || vend.apell_materno || ', ' || vend.nombres),vend.nombre_razon)  as vendedor,
COALESCE(vend.dni,vend.doc_persona) as doc_vendedor,
dis.distrito
from ventas.tbl_facturacion fac
inner join creditos.tbl_ventacredito  vc on (fac.id_sucursal=fac.id_sucursal and  vc.id_facturacion=fac.id_facturacion and fac.id_tipoventa=2)
inner join creditos.tbl_credito cred on (cred.id_credito=vc.id_credito and  cred.id_sucursal_credito=vc.id_sucursal_credito)
INNER JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
INNER JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
INNER JOIN ventas.tbl_direccion dir ON dir.id_persona = fac.id_cliente::text  AND dir.id_direccion = fac.id_direccion
INNER JOIN ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
INNER JOIN ventas.tbl_zona Z ON (Z.id_zona=SEC.id_zona)
INNER JOIN common.tbl_distrito DIS ON (DIS.id_distrito=Z.id_distrito)
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = dir.id_persona
INNER JOIN planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
INNER JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=FAC.ID_SUCURSAL)
WHERE FAC.ID_ESTADO=1
order by (SELECT SUM(now()::date-cc.fec_vencimiento::date) FROM CREDITOS.TBL_CUOTA CC
	WHERE CRED.ID_CREDITO=CC.ID_CREDITO AND CRED.ID_SUCURSAL_CREDITO=CC.ID_SUCURSAL_CREDITO) desc

SELECT *FROM PLANILLAS.TBL_PERSONA
select *from common.tbl_tipoventa

create or replace view contabilidad.v__auxiliar
as
SELECT
	ax.id_auxiliar,
	ax.descripcion,
	ax.abreviatura,
	ax.id_estado,
	e.des_estado as estado
  FROM contabilidad.tbl_auxiliar ax
  inner join common.tbl_estado e on (e.id_estado=ax.id_Estado)
order by ax.id_auxiliar
  ;

CREATE OR REPLACE VIEW contabilidad.v_centrocostos
AS
 SELECT tbl_centrocosto.id_centrocostos,
    tbl_centrocosto.descripcion_larga,
    tbl_centrocosto.descripcion_corta,
    tbl_centrocosto.id_estado,
    tbl_centrocosto.id_usuario,
    es.des_Estado as estado
   FROM contabilidad.tbl_centrocosto
inner join common.tbl_estado es on (es.id_estado=tbl_centrocosto.id_estado)
order by id_centrocostos
   ;

select *from contabilidad.tbl_centrocosto

create or replace view contabilidad.v__auxiliar__comprobante
as
SELECT
id_operacion,
cp.descripcion_larga as comprobante,
id_auxiliar,
fecha,
id_usuario
  FROM contabilidad.tbl_auxiliaroperacion aux
  inner join common.tbl_comprobante cp on (cp.id_comprobante=aux.id_comprobante);

select *from common.tbl_comprobante

create or replace view contabilidad.v__campoconfig
as
SELECT id_campo, campo, id_estado
  FROM contabilidad.tbl_campoconfig;

select *from contabilidad.v_plancuenta

CREATE OR REPLACE VIEW contabilidad.v_plancuenta
AS
 SELECT pc.id_plancuenta,
    pc.nro_cuenta,
    pc.nombre_cuenta,
    tc.descripcion_larga AS tipocuenta,
    c.descripcion_larga AS clase,
    ts.descripcion_larga AS saldo,
    pc.nivel_cuenta,
    pc.id_plancuentapadre,
    pc.id_tipocuenta,
    pc.id_clase,
    pc.id_centrocostos,
    pc.id_empresa,
    pc.id_estado,
    pc.cuenta_presupuesto,
    pc.cuenta_monetaria,
    pc.confidencial,
    pc.acm,
    pc.id_tiposaldo,
    pch.nro_cuenta AS nro_cuentapadre,
    pch.nombre_cuenta AS nomcta_padre,
    pc.tiene_destinos,
    COALESCE(cc.descripcion_larga,'') as centrocostos
   FROM contabilidad.tbl_plancuenta pc
JOIN contabilidad.tbl_tipocuenta tc ON tc.id_tipocuenta = pc.id_tipocuenta
JOIN contabilidad.tbl_tiposaldo ts ON ts.id_tiposaldo = pc.id_tiposaldo
JOIN contabilidad.tbl_clase c ON c.id_clase = pc.id_clase
left JOIN contabilidad.tbl_plancuenta pch ON pc.id_plancuentapadre = pch.id_plancuenta
left join contabilidad.tbl_centrocosto cc on (cc.id_centrocostos=pc.id_centrocostos)
order by pc.numeracion_cta asc--::integer asc

select *from seguridad.v__documento__usuario

select * from seguridad.tbl_usuariodocumento   where  id_usuario='3' and id_sucursal=1

create or replace view almacen.v_attributes
as
select
	id,
	uuid,upper(name) as name,shortName,status,deleted
from almacen.attributes
where deleted=false
order by 1

select *from  almacen.v_attributes

create or replace view almacen.v_attribute_values
as
select
	attv.id,
	attv.uuid,
	attv.name,
	attv.shortname,
	attv.custom,
	attv.status,
	attv.deleted,
	attv.attribute_id ,
	att.name as attrubute
from almacen.attribute_values attv
inner join almacen.attributes att on att.id=attv.attribute_id
order by attribute_id

create or replace  view seguridad.v__documento__usuario
as
select
p.nombre_proceso,
cp.descripcion_larga as comprobante,
ud.serie,
ud.predeterminado,
p.id_proceso,
cp.id_comprobante,
ud.id_configserie,
'2'::text as op,
ud.id_estado,
ud.id_usuario,
es.des_estado as  estado,
cf.id_sucursal,
cf.plantilla,
cf.id_tranzaccion
from
seguridad.tbl_usuariodocumento ud
inner join seguridad.tbl_proceso p on (p.id_proceso=ud.id_proceso)
inner join common.tbl_comprobante cp on (cp.id_comprobante=ud.id_comprobante)
inner join common.tbl_estado es on (es.id_estado=ud.id_estado)
INNER join  common.tbl_configserie cf on  cf.id_comprobante=ud.id_comprobante and cf.serie=ud.serie and cf.id_sucursal=ud.id_sucursal
order by p.id_proceso;

SELECT *FROM seguridad.tbl_usuariodocumento

delete from seguridad.tbl_usuariodocumento  where id_estado<>1

select *from seguridad.tbl_usuariodocumento where id_configserie=62
select *from common.tbl_configserie  where  id_configserie=62

select *from common.tbl_configserie order by id_configserie

select *from common.tbl_estado
select *from seguridad.V__COMPROBANTES__USUARIO where id_usuario='1' and id_proceso=1

CREATE OR REPLACE VIEW seguridad.v__comprobantes__usuario
 AS
 SELECT DISTINCT cp.id_comprobante,
    cp.descripcion_corta AS comprobante,
    p.nombre_proceso,
    true AS predeterminado,
    p.id_proceso,
    ud.id_estado,
    ud.id_usuario,
    s.id_sucursal
   FROM seguridad.tbl_usuariodocumento ud
     JOIN common.tbl_configserie cs ON cs.id_comprobante = ud.id_comprobante
     JOIN common.tbl_sucursal s ON s.id_sucursal = cs.id_sucursal
     JOIN seguridad.tbl_proceso p ON p.id_proceso = ud.id_proceso
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = ud.id_comprobante;

select *from common.tbl_comprobante

select
select *from contabilidad.tbl_plancuenta
select *from ventas.tbl_facturacion

CREATE OR REPLACE  VIEW CONTABILIDAD.V__INTERFACE__AXILLAR__CUENTA
AS
SELECT
it.id_campo,
c.campo,
case when pcd.nro_cuenta='0' then '' else pcd.nro_cuenta end as cuenta_debe,
case when pch.nro_cuenta='0' then '' else pch.nro_cuenta end as cuenta_haber,
ip.imp_igv as impuesto ,
it.formula,
it.id_cuentadebe,
it.id_cuentahaber,
'2'::text as op,
it.id_estado,
it.id_interface,
case when pcd.nro_cuenta='0' then '' else pcd.nombre_cuenta end as debe,
case when pch.nro_cuenta='0' then '' else pch.nombre_cuenta end as haber,
it.id_impuesto ,
it.id_operacion,
it.id_usuario,
it.fecha,
it.glosa,
aop.id_auxiliar,
aop.id_comprobante,
aux.id_empresa
FROM contabilidad.tbl_interfacecontable IT
INNER JOIN contabilidad.tbl_campoconfig C ON (C.ID_CAMPO=IT.ID_CAMPO)
inner join  contabilidad.tbl_auxiliaroperacion aop on (aop.id_operacion=it.id_operacion)
inner join contabilidad.tbl_auxiliar aux on (aux.id_auxiliar=aop.id_auxiliar)
inner join common.tbl_igv ip on(ip.id_igv=it.id_impuesto)
LEFT JOIN contabilidad.tbl_plancuenta PCD ON (PCD.id_plancuenta=it.id_cuentadebe)
LEFT JOIN contabilidad.tbl_plancuenta PCH ON (PCH.id_plancuenta=it.id_cuentaHABER);

select * from common.tbl_igv

select *from contabilidad.tbl_interfacecontable  order by id_comprobante

create or replace view contabilidad.v__destinos__cuenta
as
select
pc.nro_cuenta,
pcd.nro_cuenta as debe,
pch.nro_cuenta as haber,
dc.PORCENT_DESITRIB as porcent,
pcd.nombre_cuenta as nom_debe,
pch.nombre_cuenta as nom_haber,
dc.id_debe,
dc.id_haber,
2::integer as op,
pc.id_estado,
dc.id_destino,
dc.id_plancuenta
from
CONTABILIDAD.TBL_DESTINOS_CUENTA dc
inner join  contabilidad.tbl_plancuenta pc ON (PC.id_plancuenta=dc.id_plancuenta)
LEFT JOIN contabilidad.tbl_plancuenta PCD ON (PCD.id_plancuenta=dc.id_debe)
LEFT JOIN contabilidad.tbl_plancuenta PCH ON (PCH.id_plancuenta=dc.id_haber);

ALTER TABLE ventas.tbl_percepcion ADD COLUMN ID_ESTADO INTEGER DEFAULT 1

SELECT *FROM ventas.v__percepcion__x__venta   where cliente||nrocomprobante ilike '%%' and id_empresa=1  and (fecha_venta::date>= '02/02/2015' and fecha_venta::date<= '06/02/2015')

select * from ventas.V__PERCEPCION__X__VENTA   where cliente||nrocomprobante ilike '%%' and id_empresa=1  and (fecha_Venta::date>= '01/01/2015' and fecha_Venta::date<= '31/01/2015') limit 100

CREATE OR REPLACE VIEW ventas.v__percepcion__x__venta
AS
 SELECT (((cp.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS nrocomprobante,
    f.fecha_venta as fecha_venta,
    cli.nombre_razon AS cliente,
    tv.descripcion_larga AS tipoventa,
    f.imp_total AS imp_venta,
    m.simbolo AS moneda,
    2::numeric(20,4) AS porcent_percep,
    f.imp_percepcion,
    f.imp_neto AS total_cobrado,
    f.id_facturacion,
    f.id_sucursal,
    f.id_cliente,
    f.id_direccion,
    s.id_empresa,
    cli.doc_persona AS doc_cliente,
    cp.descripcion_corta,
    f.serie_facturacion,
    f.numdoc_facturacion,
    f.id_comprobante,
    f.fecha_venta as fecha_emision
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = f.id_cliente::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
     LEFT JOIN ventas.tbl_detpercepcion dp ON f.id_facturacion = dp.id_facturacion AND f.id_sucursal = dp.id_sucursalfac
     LEFT JOIN ventas.tbl_percepcion per ON per.id_percepcion = dp.id_percepcion AND per.id_sucursal = dp.id_sucursal
  WHERE cli.percep_cliente = true AND f.imp_percepcion > 0::numeric AND (dp.id_facturacion IS NULL OR per.id_estado <> 1) AND f.id_tipoventa = 1 AND f.id_estado = 1
UNION
 SELECT v__creditos__cancelados.nrocomprobante,
    v__creditos__cancelados.ultimo_pago as fecha_venta,
    v__creditos__cancelados.cliente,
    v__creditos__cancelados.tipoventa,
    v__creditos__cancelados.imp_venta,
    v__creditos__cancelados.moneda,
    v__creditos__cancelados.porcent_percep,
    v__creditos__cancelados.imp_percepcion,
    v__creditos__cancelados.total_cobrado,
    v__creditos__cancelados.id_facturacion,
    v__creditos__cancelados.id_sucursal,
    v__creditos__cancelados.id_cliente,
    v__creditos__cancelados.id_direccion,
    v__creditos__cancelados.id_empresa,
    v__creditos__cancelados.doc_cliente,
    v__creditos__cancelados.descripcion_corta,
    v__creditos__cancelados.serie_facturacion,
    v__creditos__cancelados.numdoc_facturacion,
    v__creditos__cancelados.id_comprobante,
    v__creditos__cancelados.fecha_venta as fecha_emision
   FROM creditos.v__creditos__cancelados
  WHERE v__creditos__cancelados.saldo = 0::numeric and
  ( not exists(select *from ventas.tbl_detpercepcion dp where dp.id_facturacion=v__creditos__cancelados.id_facturacion and v__creditos__cancelados.id_sucursal=dp.id_sucursal))
order by fecha_venta asc;

select id_facturacion, *from ventas.tbl_facturacion f where f.imp_percepcion=0 and (exists(select *from ventas.tbl_detfacturacion df where f.id_facturacion=df.id_facturacion))
AND  NOTA_CREDITO=FALSE

"2015-01-31"

delete from ventas.tbl_detpercepcion;
delete from ventas.tbl_percepcion;

select *from ventas.tbl_detpercepcion;
select *from ventas.tbl_percepcion;

CREATE OR REPLACE VIEW creditos.v__creditos__cancelados
AS
 SELECT (((cp.descripcion_corta::text || '/'::text) || f.serie_facturacion::text) || '-'::text) || f.numdoc_facturacion::text AS nrocomprobante,
    f.fecha_venta,
    cli.nombre_razon AS cliente,
    tv.descripcion_larga AS tipoventa,
    f.imp_total AS imp_venta,
    m.simbolo AS moneda,
    2::numeric(20,4) AS porcent_percep,
    f.imp_percepcion,
    f.imp_neto AS total_cobrado,
    f.id_facturacion,
    f.id_sucursal,
    f.id_cliente,
    f.id_direccion,
    s.id_empresa,
    cli.doc_persona AS doc_cliente,
    cp.descripcion_corta,
    f.serie_facturacion,
    f.numdoc_facturacion,
    f.id_comprobante,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on (cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	where  f.id_facturacion=cred.id_facturacion and f.id_sucursal=cred.id_sucursal and f.id_tipoventa=2 and f.id_estado=1),0)-

COALESCE((select sum(mov.imp_movimiento)
	from   creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on ( cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   f.id_facturacion=cred.id_facturacion and f.id_sucursal=cred.id_sucursal and f.id_tipoventa=2 and f.id_estado=1),0)-
COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota_notacredito NC on(Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
where (f.id_facturacion=cred.id_facturacion and f.id_sucursal=cred.id_sucursal and f.id_tipoventa=2 and f.id_estado=1)),0) as saldo,

         (select mc.fecha_mov from
	 creditos.tbl_ventacredito  vc
          inner join creditos.tbl_detpagocuota dp on (vc.id_credito=dp.id_credito and vc.id_sucursal_credito=dp.id_sucursal_credito)
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where f.id_sucursal=vc.id_sucursal and  vc.id_facturacion=f.id_facturacion and f.id_tipoventa=2 and f.id_estado=1 order by mc.fecha_mov desc limit 1 ) as ultimo_pago

   FROM ventas.tbl_facturacion f
     JOIN creditos.tbl_ventacredito vc ON f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = f.id_cliente::text
    JOIN common.tbl_sucursal s ON s.id_sucursal = f.id_sucursal
    -- LEFT JOIN ventas.tbl_detpercepcion dp ON f.id_facturacion = dp.id_facturacion AND f.id_sucursal = dp.id_sucursalfac
    -- LEFT JOIN ventas.tbl_percepcion per ON per.id_percepcion = dp.id_percepcion AND per.id_sucursal = dp.id_sucursal
  WHERE  f.imp_percepcion > 0::numeric -- AND (dp.id_facturacion IS NULL OR per.id_estado <> 1)
  AND f.id_estado = 1 AND f.id_tipoventa = 2;

select *from VENTAS.V__PERCEPCIONES

select * from ventas.V__PERCEPCION__X__VENTA  where id_facturacion::text || id_sucursal::text='118811'

CREATE OR REPLACE VIEW VENTAS.V__PERCEPCIONES
AS
SELECT
(CP.DESCRIPCION_CORTA || '/'|| P.SERIE || '-' || P.NUMERO) AS DOCUMENTO,
P.FECHA,
CLI.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
p.imp_percepcion,
p.imp_total,
p.id_percepcion,
p.id_sucursal,
p.id_cliente,
p.id_direccion,
p.id_moneda,
p.id_comprobante,
p.serie,
p.numero,
cli.doc_persona as doc_cliente,
p.id_estado,
S.ID_EMPRESA,
p.status_sunat As Enviado
FROM VENTAS.TBL_PERCEPCION P
INNER JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=P.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=P.ID_MONEDA)
INNER JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=P.ID_CLIENTE)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=P.ID_SUCURSAL)
order by p.serie,
p.numero

select*
FROM VENTAS.TBL_PERCEPCION P
INNER JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=P.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=P.ID_MONEDA)
INNER JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=P.ID_CLIENTE)
--INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=P.ID_SUCURSAL)

select *from VENTAS.V__REGISTRO__PERCEPCION

CREATE OR REPLACE VIEW VENTAS.V__REGISTRO__PERCEPCION
AS
SELECT
(CP.DESCRIPCION_CORTA || '/'|| P.SERIE || '-' || P.NUMERO) AS DOCUMENTO,
 to_char(p.fecha, 'dd/mm/yyyy'::text) as FECHA,
CLI.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
dp.imp_venta,
dp.porcent_percepcion,
dp.imp_percepcion,
dp.imp_totalcobrado,
p.id_percepcion,
p.id_sucursal,
p.id_cliente,
p.id_direccion,
p.id_moneda,
p.id_comprobante,
p.serie,
p.numero,
cli.doc_persona as doc_cliente,
p.id_estado,
S.ID_EMPRESA,
(CPF.DESCRIPCION_CORTA || '/'|| FAC.SERIE_FACTURACION || '-' || FAC.NUMDOC_FACTURACION) AS DOCUMENTOREF,
to_char(fac.fecha_venta, 'dd/mm/yyyy'::text) fecha_venta
FROM VENTAS.TBL_PERCEPCION P
INNER JOIN VENTAS.TBL_DETPERCEPCION DP ON (P.ID_PERCEPCION=DP.ID_PERCEPCION AND P.ID_SUCURSAL=DP.ID_SUCURSAL)
INNER JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=P.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=P.ID_MONEDA)
INNER JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=P.ID_CLIENTE)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=P.ID_SUCURSAL)
INNER JOIN VENTAS.TBL_FACTURACION FAC ON (FAC.ID_FACTURACION=DP.ID_FACTURACION AND FAC.ID_SUCURSAL=DP.ID_SUCURSALFAC)
INNER JOIN COMMON.TBL_COMPROBANTE CPF ON (CPF.ID_COMPROBANTE=FAC.ID_COMPROBANTE)
order by p.serie,
p.numero

SELECT *FROM VENTAS.TBL_DETPERCEPCION

select *from  VENTAS.TBL_PERCEPCION P

SELECT *FROM VENTAS.TBL_FACTURACION

create or replace view ventas.v__detpercepcion
as
select
cp.descripcion_corta as tipo,
dp.serie,
dp.numero,
dp.fecha_emision,
dp.imp_venta,
dp.porcent_percepcion,
dp.imp_percepcion,
dp.imp_totalcobrado,
dp.id_facturacion,
dp.id_sucursalfac,
dp.id_igv,
dp.id_comprobante,
dp.item_id,
'2'::integer as op,
dp.id_estado,
dp.id_percepcion,
dp.id_sucursal
from ventas.tbl_detpercepcion dp
inner join common.tbl_comprobante cp on (cp.id_comprobante=dp.id_comprobante)

select *from ventas.tbl_percepcion where fecha::Date='31/12/2016'

update  ventas.tbl_percepcion set numero='0000322' where id_percepcion=7279

select *from ventas.v__imp___percepcion where fecha::Date='10/01/2017' order by 1

create or replace view ventas.v__imp___percepcion
as
SELECT
(CP.DESCRIPCION_CORTA || '/'|| P.SERIE || '-' || P.NUMERO) AS DOCUMENTO,
P.FECHA,
CLI.NOMBRE_RAZON AS CLIENTE,
M.SIMBOLO AS MONEDA,
p.imp_percepcion as imp_perceptot,
p.imp_total as tot_percep,
cli.doc_persona as doc_cliente,
cpd.descripcion_corta as tipo,
case when fac.fecha_venta::date<'01/12/2016' then dp.serie else  right(dp.serie,3) end as serie_doc,
dp.numero as numero_doc,
dp.fecha_emision,
dp.imp_venta,
dp.porcent_percepcion,
dp.imp_percepcion,
dp.imp_totalcobrado,
p.id_percepcion,
p.id_sucursal,
fu_numero_letras(p.imp_percepcion) as tot_letras,
(PER.APELL_PATERNO || ' ' || PER.APELL_MATERNO || ', ' || PER.NOMBRES) AS VENDEDOR,
cpd.codigosunat as TipoDocRelaciondado,
'P'::TEXT AS prefix,
dist.distrito,
prov.provincia,
dpto.departamento,
dir.direccion,
s.sector,
CASE
    WHEN length(trim(cli.doc_persona::text)) = 8 THEN 1 ELSE 6 END AS tipo_docliente,
dist.id_distrito as ubigeo,
right(P.SERIE,3) as Serie ,
P.NUMERO,
to_char(P.FECHA,'YYYY-MM-DD') AS fechaPercepcion,
to_char(fac.fecha_venta,'yyyy-mm-dd') as FechaDocrelacionado,
to_char(dp.fecha_emision,'yyyy-mm-dd') as FechaAbono,
fu_numero_letras(dp.imp_percepcion) as ImpLetras
FROM VENTAS.TBL_PERCEPCION P
INNER JOIN VENTAS.TBL_DIRECCION DIR ON DIR.id_direccion=p.id_direccion and dir.id_persona=p.id_cliente
INNER JOIN PLANILLAS.TBL_PERSONA CLI ON CLI.id_persona=dir.id_persona
inner join ventas.tbl_sector s on s.id_sector=dir.id_sector
inner join ventas.tbl_zona z on z.id_zona=s.id_zona
inner join common.tbl_distrito dist on dist.id_distrito=z.id_distrito
inner join common.tbl_provincia prov on prov.id_provincia=dist.id_provincia
inner join common.tbl_dpto dpto on dpto.id_dpto=prov.id_dpto
INNER JOIN COMMON.TBL_COMPROBANTE CP ON (CP.ID_COMPROBANTE=P.ID_COMPROBANTE)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=P.ID_MONEDA)
LEFT JOIN planillas.tbl_tipdocidentidad TDC ON TDC.id_tipdocidentidad=CLI.id_tipdocidentidad
--INNER JOIN PLANILLAS.TBL_PERSONA CLI ON (CLI.ID_PERSONA=P.ID_CLIENTE)
INNER JOIN PLANILLAS.TBL_PERSONA PER ON (PER.ID_PERSONA=CLI.ID_VENDTITULAR)
INNER JOIN ventas.tbl_detpercepcion dp on (p.id_percepcion=dp.id_percepcion and p.id_sucursal=dp.id_sucursal)
inner join common.tbl_comprobante cpd on (cpd.id_comprobante=dp.id_comprobante)
JOIN ventas.tbl_facturacion fac ON fac.id_facturacion = dp.id_facturacion AND fac.id_sucursal = dp.id_sucursalfac

SELECT *FROM VENTAS.TBL_FACTURACION

select *from planillas.tbl_persona

select *from ventas.tbl_zona limit  4
select *from  ventas.v__imp___percepcion

SELECT *FROM PLANILLAS.TBL_PERSONA

CREATE OR REPLACE VIEW contabilidad.v_clase
AS
 SELECT tbl_clase.id_clase,
    tbl_clase.descripcion_larga,
    tbl_clase.descripcion_corta,
    tbl_clase.id_estado,
    tbl_clase.id_usuario
   FROM contabilidad.tbl_clase;

CREATE OR REPLACE VIEW contabilidad.v_tipocuenta
AS
 SELECT tbl_tipocuenta.id_tipocuenta,
    tbl_tipocuenta.descripcion_larga,
    tbl_tipocuenta.descripcion_corta,
    tbl_tipocuenta.id_estado,
    tbl_tipocuenta.id_usuario
   FROM contabilidad.tbl_tipocuenta;

CREATE OR REPLACE VIEW contabilidad.v_tiposaldo
AS
 SELECT tbl_tiposaldo.id_tiposaldo,
    tbl_tiposaldo.descripcion_larga,
    tbl_tiposaldo.descripcion_corta,
    tbl_tiposaldo.id_estado,
    tbl_tiposaldo.id_usuario
   FROM contabilidad.tbl_tiposaldo;

-- DROP VIEW seguridad.v__documento__usuario;

CREATE OR REPLACE VIEW seguridad.v__documento__usuario
AS
 SELECT p.nombre_proceso,
    cp.descripcion_larga AS comprobante,
    ud.serie,
    ud.predeterminado,
    p.id_proceso,
    cp.id_comprobante,
    ud.id_configserie,
    '2'::text AS op,
    ud.id_estado,
    ud.id_usuario
   FROM seguridad.tbl_usuariodocumento ud
     JOIN seguridad.tbl_proceso p ON p.id_proceso = ud.id_proceso
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = ud.id_comprobante
  ORDER BY p.id_proceso, cp.id_comprobante;

select *from contabilidad.v__diario__general

CREATE OR REPLACE VIEW contabilidad.v__diario__general
as
SELECT date_part('year',dc.fechadoc_das)::text as anio,
date_part('month',dc.fechadoc_das)::text as mes,
date_part('day',dc.fechadoc_das)::text as dia ,
ax.descripcion as auxillar,
(cp.descripcion_corta || '/' || dc.serie ||'-' || dc.numero) as documento,
pc.nro_cuenta as cuenta,
pc.nombre_cuenta,
dc.debe_das,
dc.haber_das,
dc.fechadoc_das,
dc.id_estado,
ac.id_proceso
FROM
contabilidad.tbl__asiento__contable ac
inner join contabilidad.tbl_auxiliar ax on (ax.id_auxiliar=ac.id_auxiliar)
inner join contabilidad.tbl__detalle__asiento__contable dc on (ac.id_asiento=dc.id_asiento)
inner join common.tbl_comprobante cp on (cp.id_comprobante=dc.id_comprobante)
inner join contabilidad.tbl_plancuenta pc on (pc.id_plancuenta=dc.id_plancuenta)

create or replace view contabilidad.v__proceso__contable
as
SELECT
id_proceso,
descripcion,
id_estado,
id_empresa,
formato
  FROM contabilidad.tbl_procesocontable;

select *from ventas.v_impnotascredito

CREATE OR REPLACE VIEW ventas.v_impnotascredito
AS
 SELECT f.numdoc_facturacion,
    "right"(f.serie_facturacion::text, 3) AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END AS cliente,
    (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS direccion,
    f.fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
        CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE ((split_part(p.descripcion_larga::text, ','::text, 1) || ''::text) || btrim(COALESCE(almacen.fn_getseriesventas(f.id_facturacion::bigint, f.id_sucursal, df.id_producto, df.id_unidadventa), ''::text))) || COALESCE(
            CASE
                WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    mc.id_caja_destino AS id_caja,
    mc.imp_recibido,
    mc.imp_vuelto,
    f.id_vendedor,
    NULL::text AS vale,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    mc.puntos,
    pto.puntos AS tot_puntos,
    mc.id_turno,
    tv.descripcion_larga AS tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
    df.ancho,
    df.largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS ubigeo,
    COALESCE(( SELECT c_1.fec_vencimiento
           FROM creditos.tbl_credito cr
             JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
             JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
          WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
          ORDER BY c_1.nro_cuota DESC
         LIMIT 1), f.fecha_venta) AS fec_vencimiento,
    df.imp_percepcion,
    df.precio / 1.02 AS precio_percep_l,
    df.precio / 1.02 * df.cantidad AS total_percep_l,
    f.valor_venta AS valorventa_percep,
    f.imp_igv AS impigv_percep,
    f.imp_total AS total_percep,
    f.imp_percepcion AS impprecep_percep,
    split_part(vfv.nombre_razon::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
    (cpc.descripcion_corta::text || (fc.serie_facturacion::text || '-'::text)) || fc.numdoc_facturacion::text AS comprobante_origen,
    mtv.descripcion_larga AS motivo_notacredito,
        CASE cpc.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
    cp.codigosunat,
    cpc.codigosunat AS codigosunat_ref,
        CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE
            CASE
                WHEN cpc.id_comprobante = 3 THEN 6
                ELSE 1
            END
        END AS tipo_docliente,
    "right"(fc.serie_facturacion::text, 3) AS serie_ref,
    fc.numdoc_facturacion AS numero_ref,
    to_char(f.fecha_venta::date::timestamp with time zone, 'yyyy-mm-dd'::text) AS fechaemision,
    f.glosa,
        CASE
            WHEN df.imp_igv > 0::numeric THEN df.precio / 1.18
            ELSE df.precio
        END AS valor_unitario,
        CASE
            WHEN df.imp_igv > 0::numeric THEN df.precio / 1.18
            ELSE df.precio
        END * df.cantidad AS valor_venta_item,
        CASE
            WHEN df.precio = 0::numeric THEN '02'::text
            ELSE '01'::text
        END AS tipoprecio,
        CASE
            WHEN df.imp_igv > 0::numeric THEN df.precio / 1.18 * df.cantidad * 0.18
            ELSE 0::numeric
        END AS imp_detiten,
    mtv.id_motivonotacredito,
    btrim(dep.departamento::text) AS departamento,
    btrim(prov.provincia::text) AS provincia,
    btrim(dis.distrito::text) AS distrito,
    dis.id_distrito as UbigeoSunat,
    f.digestvalue,
    f.signaturevalue,
    COALESCE(c.email, ''::character varying) AS email,--87
    suc.direccion AS direccion_suc,--88
    suc.telefono,--89
    suc.celular,--90
    emp.ruc,     --91
    suc.codigo_establecimiento,--92
    suc.id_ubigeo,--93
    suc.nom_ubigeo AS ubigeo_sucursal--94
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND df.id_estado = 1
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unimedventa
     JOIN common.v_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp ON emp.id_empresa = suc.id_empresa
     JOIN ventas.tbl_facturacion fc ON fc.id_facturacion = f.id_facturacionref
     JOIN common.tbl_comprobante cpc ON cpc.id_comprobante = fc.id_comprobante
     JOIN common.tbl_motivonotacredito mtv ON mtv.id_motivonotacredito = f.id_motivonotacredito
     LEFT JOIN caja.tbl_movcaja mc ON f.id_sucursal = mc.id_sucursal_fac AND f.id_facturacion = mc.id_facturacion
     LEFT JOIN ventas.tbl_puntos pto ON pto.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona vfv ON vfv.id_persona::bpchar = fc.id_vendedor::bpchar
  WHERE df.cantidad > 0::numeric
  ORDER BY f.fecha_venta, f.id_comprobante, f.serie_facturacion, f.numdoc_facturacion, df.item;

select *from ventas.v_impnotascredito

select *from ventas.fn_conmunicacionBaja();

create or replace function ventas.fn_conmunicacionBaja()
returns table(
	id integer,
	item integer,
	tipodocumento char(2),
	serie char(4),
	numero char(7),
	motivo text,
	fecha timestamp
) as $$
declare
	dat record;
	id integer;
begin
	CREATE TEMPORARY TABLE temp_anulados(
		_id integer,
		_item integer,
		_tipodocumento char(2),
		_serie char(4),
		_numero char(7),
		_motivo text,
		_fecha timestamp
	)ON COMMIT DROP;

for dat in select 1 as Id,cp.codigosunat,cp.codigosunat,f.serie_facturacion as Serie,f.numdoc_facturacion as numero,F.MOTIVO_ANULACION as motivo,f.fecha_venta as fecha from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on f.id_comprobante=cp.id_comprobante where f.id_estado=7 loop
	select max(_item) into id from temp_anulados;
	if id is null then
		id:=1;
	else
		id:=id+1;
	end if;
	insert into temp_anulados(_id,_item,_tipodocumento,_serie,_numero,_motivo,_fecha)values(1,id,dat.codigosunat,dat.serie,dat.numero,dat.motivo,dat.fecha);
end loop;
return query select *from temp_anulados order by _item asc;

end;$$
language 'plpgsql';

CREATE OR REPLACE VIEW ventas.v_impnotasdebito
AS
 SELECT f.numdoc_facturacion,
     right(f.serie_facturacion,3) as serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS documento,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END AS cliente,
    (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS direccion,
    f.fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_total) AS tot_letras,
    f.valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
        CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE split_part(p.descripcion_larga::text, ','::text, 1) || COALESCE(
            CASE
                WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN '
TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.importe AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    mc.id_caja_destino AS id_caja,
    mc.imp_recibido,
    mc.imp_vuelto,
    f.id_vendedor,
    NULL::text AS vale,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    mc.puntos,
    pto.puntos AS tot_puntos,
    mc.id_turno,
    tv.descripcion_larga AS tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
    df.ancho,
    df.largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS ubigeo,
    COALESCE(( SELECT c_1.fec_vencimiento
           FROM creditos.tbl_credito cr
             JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
             JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
          WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
          ORDER BY c_1.nro_cuota DESC
         LIMIT 1), f.fecha_venta) AS fec_vencimiento,
    df.imp_percepcion,
    df.precio / 1.02 AS precio_percep_l,
    df.precio / 1.02 * df.cantidad AS total_percep_l,
    f.valor_venta AS valorventa_percep,
    f.imp_igv AS impigv_percep,
    f.imp_total AS total_percep,
    f.imp_percepcion AS impprecep_percep,
    split_part(vfv.nombre_razon::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
     CPC.DESCRIPCION_CORTA || (fc.serie_facturacion::text || '-'::text) || fc.numdoc_facturacion::text AS comprobante_origen,
      Mtv.descripcion_larga AS MOTIVO_NOTADEBITO,
      Mtv.ID_MOTIVONOTADEBITO,
     case CPC.id_comprobante
	when 3 then 'F'
	WHEN 2 THEN 'B'
    END AS prefix,
    cp.codigosunat,
    cpc.codigosunat as codigosunat_ref,
     CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE  CASE WHEN cpc.id_comprobante=3 THEN 6 ELSE 1 END
        END AS tipo_docliente,
        right(fc.serie_facturacion,3) as serie_ref,
        fc.numdoc_facturacion as numero_ref,
        to_char( f.fecha_venta::date,'yyyy-mm-dd') as FechaEmision,
        (case when df.imp_igv>0 then df.precio/1.18 else df.precio end) as valor_unitario,
       (case when df.imp_igv>0 then df.precio/1.18 else df.precio end)*df.cantidad as valor_venta_item  ,
       case when df.precio=0 then '02' else '01' end tipoPrecio,
       ((case when df.imp_igv>0 then ((df.precio/1.18)*df.cantidad)*0.18 else 0 end)) as imp_detIten,
       f.glosa
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND df.id_estado = 1
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unimedventa
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
     INNER JOIN VENTAS.TBL_FACTURACION FC ON (FC.ID_FACTURACION=F.ID_FACTURACIONREF)
     INNER JOIN COMMON.TBL_COMPROBANTE CPC ON (CPC.ID_COMPROBANTE=FC.ID_COMPROBANTE)
     INNER JOIN common.tbl_motivoNotaDebito Mtv on mtv.ID_MOTIVONOTADEBITO=f.ID_MOTIVONOTADEBITO
     LEFT JOIN caja.tbl_movcaja mc ON f.id_sucursal = mc.id_sucursal_fac AND f.id_facturacion = mc.id_facturacion
     LEFT JOIN ventas.tbl_puntos pto ON pto.id_persona::text = f.id_cliente::text
     JOIN planillas.tbl_persona vfv ON vfv.id_persona::bpchar = fc.id_vendedor
  WHERE df.cantidad > 0::numeric
  ORDER BY F.FECHA_VENTA,F.id_comprobante,f.serie_facturacion,F.numdoc_facturacion, DF.ITEM ASC;

create or replace view creditos.v__creditos__cancelados__totales
as
select
CP.DESCRIPCION_CORTA || (fac.serie_facturacion::text || '-'::text) || fac.numdoc_facturacion::text AS comprobante,
to_char(fac.fecha_venta,'dd/mm/YYYY') AS fecha,
COALESCE(to_char((select mc.fecha_mov
	from creditos.tbl_ventacredito vc
	inner join creditos.tbl_detpagocuota dp on (dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito)
	inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where fac.id_facturacion=vc.id_facturacion and fac.id_sucursal=vc.id_sucursal order by mc.fecha_mov desc limit 1 ),'dd/mm/yyyy'::text),'') as fec_pago,
cli.nombre_razon as cliente,
cli.doc_persona,
(select sum(dfac.cantidad) from ventas.tbl_detfacturacion dfac where (fac.id_facturacion=dfac.id_facturacion and fac.id_sucursal=dfac.id_sucursal)) as cantidad,
(select u.desc_corta from ventas.tbl_detfacturacion dfac
inner join almacen.tbl_unidad u on(u.id_unidadventa=dfac.id_unidadventa)  where (fac.id_facturacion=dfac.id_facturacion and fac.id_sucursal=dfac.id_sucursal) limit 1) as unidad,
fac.imp_neto,
    COALESCE((select sum(mc.imp_movimiento)from creditos.tbl_ventacredito vc
inner join  creditos.tbl_detpagocuota dp on (dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito)
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where FAC.id_facturacion=vc.id_facturacion and fac.id_sucursal=vc.id_sucursal ),0) as pagos,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on (cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	where  fac.id_facturacion=cred.id_facturacion and fac.id_sucursal=cred.id_sucursal and fac.id_tipoventa=2),0)-
COALESCE((select sum(mov.imp_movimiento)
	from   creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota c on ( cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   fac.id_facturacion=cred.id_facturacion and fac.id_sucursal=cred.id_sucursal and fac.id_tipoventa=2),0)-
COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_ventacredito cred
	inner join creditos.tbl_cuota_notacredito NC on(Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)
where (fac.id_facturacion=cred.id_facturacion and fac.id_sucursal=cred.id_sucursal and fac.id_tipoventa=2)),0) as saldo,
s.id_empresa,
cp.descripcion_corta as tipotdo,
fac.serie_facturacion as serie,
fac.numdoc_facturacion as numero
from
ventas.tbl_facturacion fac
inner join common.tbl_comprobante cp on (cp.id_comprobante=fac.id_comprobante)
inner join common.tbl_sucursal s on (s.id_sucursal=fac.id_sucursal)
inner join planillas.tbl_persona cli on (cli.id_persona=fac.id_cliente)
where fac.id_tipoventa=2 and fac.id_Estado=1 and fac.nota_credito=false order by fac.fecha_venta

select  to_char(fecha_venta, 'TMMonth'::text) AS fec_larga from ventas.tbl_facturacion
select *from planillas.tbl_persona

select *from common.tbl_comprobante

CREATE OR REPLACE VIEW CREDITOS.V_CREDITOS_CANCELADOS_TOTALES
AS
select comprobante,fecha,fec_pago,doc_persona,cliente,imp_neto,pagos,saldo,
case when saldo>0 then 'DEBE' else 'CANCELO' end AS ESTADO,
 CASE WHEN SALDO=0 THEN fec_pago ELSE 'DEBE' END AS FECHA_CANCELO,
id_empresa,
tipotdo,serie,numero from creditos.v__creditos__cancelados__totales
where (saldo<>0 OR pagos<>0)

select *from
ventas.tbl_facturacion fac
inner join ventas.tbl_detfacturacion dfac on (fac.id_facturacion=dfac.id_facturacion)

create or replace   view caja.v__ingresos__Caja
as
select
(cp.descripcion_corta ||'/' || fac.serie_facturacion || '-'|| fac.numdoc_facturacion) as documento,
to_char(fac.fecha_venta,'dd/mm/yyyy') as fecha,
cli.doc_persona,
cli.nombre_razon as cliente,
fac.valor_venta,
fac.imp_igv,
fac.imp_total,
COALESCE(vend.apell_paterno || '' ||vend.apell_materno || ''|| vend.nombres,vend.nombre_razon) as vendedor,
mov.imp_movimiento,
s.id_empresa,
to_char(fac.fecha_venta, 'TMMonth'::text) as mes,
date_part('day',fac.fecha_venta)::integer as dia,
date_part('year',fac.fecha_venta)::integer as anio,
to_char(fac.fecha_venta, 'TMDay'::text) as dia_letras,
cp.descripcion_corta as tipodocumento
from ventas.tbl_facturacion fac
inner join common.tbl_comprobante cp on (cp.id_comprobante=fac.id_comprobante)
inner join common.tbl_sucursal s on s.id_sucursal=fac.id_sucursal
inner join planillas.tbl_persona cli on (cli.id_persona=fac.id_cliente)
inner join planillas.tbl_persona vend on (vend.id_persona=fac.id_vendedor)
inner join caja.tbl_movcaja mov on (fac.id_facturacion=mov.id_facturacion and fac.id_sucursal=mov.id_sucursal_fac)
inner join caja.tbl_detmovpago dm on (mov.id_movimcaja=dm.id_movimcaja and  mov.id_sucursal=dm.id_sucursal and dm.id_formapago<>'05' )
where fac.id_estado=1
order by  date_part('month',fac.fecha_venta)::integer asc, date_part('day',fac.fecha_venta)::integer asc

--clientes por zona de ventas vendedores
select
coalesce(vend.apell_paterno || '' || vend.apell_materno || ', ' || vend.nombres,vend.nombre_razon) as vendedor,
dis.distrito,
to_char(f.fecha_Venta,'dd/mm/yyyy')  as fecha_venta,count(*) as nro_clientes
  from ventas.tbl_facturacion f
inner join planillas.tbl_persona cli on (cli.id_persona=f.id_cliente)
inner join planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
inner join ventas.tbl_direccion dir on (cli.id_persona=dir.id_persona)
inner join ventas.tbl_sector s on (s.id_sector=dir.id_Sector)
inner join ventas.tbl_zona z on (z.id_zona=s.id_sector)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
group by vend.apell_paterno , vend.apell_materno , vend.nombres,vend.nombre_razon,to_char(f.fecha_Venta,'dd/mm/yyyy'),dis.distrito
order by dis.distrito

select
coalesce(vend.apell_paterno || '' || vend.apell_materno || ', ' || vend.nombres,vend.nombre_razon) as vendedor,
to_char(f.fecha_Venta,'dd/mm/yyyy')  as fecha_venta,
dis.distrito,
sum(cantidad) as nro_unidades
  from ventas.tbl_facturacion f
  inner join ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join planillas.tbl_persona cli on (cli.id_persona=f.id_cliente)
inner join planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
inner join ventas.tbl_direccion dir on (cli.id_persona=dir.id_persona)
inner join ventas.tbl_sector s on (s.id_sector=dir.id_Sector)
inner join ventas.tbl_zona z on (z.id_zona=s.id_sector)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
group by vend.apell_paterno , vend.apell_materno , vend.nombres,vend.nombre_razon,to_char(f.fecha_Venta,'dd/mm/yyyy'),dis.distrito
order by coalesce(vend.apell_paterno || '' || vend.apell_materno || ', ' || vend.nombres,vend.nombre_razon),to_char(f.fecha_Venta,'dd/mm/yyyy'),dis.distrito

CREATE OR REPLACE VIEW COMPRAS.V__DET__EGRESOS
AS
SELECT
D.ITEM,
D.ID_CONCEPTO,
C.DESCRIPCION_LARGA AS CONCEPTO,
D.CANTIDAD,
D.PRECIO,
D.IMP_TOTAL,
'+'::TEXT AS AGREGAR,
FALSE AS AFECTO,
D.IMP_VENTA,
D.IMP_IGV,
D.PORCENT_IGV,
2::INTEGER AS OP,
D.ID_ESTADO,
D.ID_DETEGRESO,
D.id_sucursalcompra,
D.anio,
D.id_compra,
D.id_mes,
d.id__compra
FROM compras.tbl_detegreso D
INNER JOIN COMMON.TBL_CONCEPTO C ON (C.id::text=D.ID_CONCEPTO)

CREATE OR REPLACE VIEW COMPRAS.V__DET__RBOHONORARIOS
AS
SELECT
D.ITEM,
D.ID_CONCEPTO,
C.DESCRIPCION_LARGA AS CONCEPTO,
D.CANTIDAD,
D.PRECIO,
D.IMP_TOTAL,
'+'::TEXT AS AGREGAR,
FALSE AS AFECTO,
D.IMP_VENTA,
D.IMP_IGV,
D.PORCENT_IGV,
2::INTEGER AS OP,
D.ID_ESTADO,
D.ID_DETEGRESO,
D.id_sucursalcompra,
D.anio,
D.id_compra,
D.id_mes,
D.ID__COMPRA
FROM compras.tbl_detegreso D
INNER JOIN COMMON.TBL_CONCEPTO C ON (C.id::text=D.ID_CONCEPTO)

SELECT *FROM VENTAS.V__VENTAS_X_VENDEDOR_X_PRODUCTO

CREATE or replace VIEW VENTAS.V__VENTAS_X_VENDEDOR_X_PRODUCTO
AS
 select
	cc.descripcion_corta as tipo_documento,
	f.serie_facturacion  as nro_serie,
	f.numdoc_facturacion as nro_comprobante,
	f.fecha_venta::date as fecha_emision,
	tbl_persona.doc_persona doc_cliente,
	trim(REPLACE(tbl_persona.nombre_razon,'"','')) as cliente,
	P.id_producto as codigo,
	p.descripcion_larga as producto,
	df.cantidad,
	df.precio,
	df.importe as total_det,
	df.id_estado,
	coalesce(trim(REPLACE(VEND.nombre_razon,'"','')),VEND.APELL_PATERNO || '' || VEND.APELL_MATERNO || ', ' ||VEND.NOMBRES) as VENDEDOR,
	VEND.ID_PERSONA,
	suc.id_empresa,
	(cc.descripcion_corta || '/' || f.serie_facturacion || '-'||f.numdoc_facturacion) as documento,
	f.valor_venta,
	f.imp_igv,
	f.imp_total,
	f.id_cliente
 	from  ventas.tbl_facturacion f
	INNER JOIN VENTAS.TBL_DETFACTURACION DF ON (f.id_facturacion=df.id_facturacion)
	INNER JOIN ALMACEN.TBL_DETPRODUCTO DP ON (DP.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa)
	INNER JOIN ALMACEN.TBL_PRODUCTO P ON (P.ID_PRODUCTO=DP.ID_PRODUCTO)
	JOIN common.tbl_comprobante cc ON f.id_comprobante = cc.id_comprobante
	inner join common.tbl_estado on (tbl_estado.id_estado=f.id_estado)
	JOIN ventas.tbl_direccion ON f.id_direccion = tbl_direccion.id_direccion  AND f.id_cliente = tbl_direccion.id_persona
	JOIN planillas.tbl_persona ON tbl_persona.id_persona= tbl_direccion.id_persona
	INNER JOIN PLANILLAS.TBL_PERSONA VEND ON (VEND.ID_PERSONA=tbl_persona.ID_VENDtitular)
	INNER JOIN common.tbl_sucursal suc on (suc.id_sucursal=f.id_sucursal) where  f.id_estado=1
	ORDER BY TRIM(VEND.ID_PERSONA) asc;

select *from VENTAS.V__REGISTROVENTAS__PLE limit  10

CREATE OR REPLACE VIEW VENTAS.V__REGISTROVENTAS__PLE_COLUMNS
AS
select
cast(date_part('year',v.fecha_emision) as CHAR(4)) || right('00' || cast(date_part('month',v.fecha_emision) as varCHAR(2)),2) || '00|' C1,
'22|'::TEXT  C2,
  'M'||cast(ROW_NUMBER() OVER ( PARTITION BY   date_part('month',v.fecha_emision)   ORDER BY v.fecha_emision ASC) as varchar(10)) || '|' C3  ,
 to_char(v.fecha_emision,'dd/mm/yyyy')  || '|' C4,
 '01/01/0001|'::TEXT C5,
V.TIPO ||'|'  C6,
V.NRO_SERIE || '|' C7,
V.NRO_COMPROBANTE || '|' C8,
'|'::TEXT C9,
case when
	v.tipo  in('00','05','06','07','08','11','12','13','14','15','16','18','19','23','26','28','30','34','35','36','37','55','56','87' , '88') then
		'0' else
			case  length(v.doc_cliente)
				when 11 then  '6'
				when 8 then '1'
				else
				'0'
			end
end || '|' C10,
case when
	v.tipo  in('00','05','06','07','08','11','12','13','14','15','16','18','19','23','26','28','30','34','35','36','37','55','56','87' , '88') then
		'0' else v.doc_cliente
end  || '|' C11,
replace(v.cliente,'/','-') || '|' C12,
 '0.00|'::text C13,
 cast(v.va_afecto::numeric(20,2) as varchar(12)) || '|' C14 ,--base imponible de la operacion gravada
 '0.00|' c15,-- descuento de la base imponible
cast(v.igv::numeric(20,2) as varchar(12)) || '|' C16,--C16 impuesto general a las ventas
'0.00|' c17, --  Descuento del Impuesto General a las Ventas y/o Impuesto de Promoción Municipal
cast(coalesce(va_exonerado,0)::numeric(20,2) as varchar(12)) || '|' C18,--vaexonerado_col18,
'0.00|'::text C19,
'0.00|'::TEXT C20,--impuesto selectivo al consumo
'0.00|'::TEXT C21,
'0.00|'::TEXT C22,
'0.00|'::TEXT C23,
 -- CAST(coalesce(V.imp_percepcion,0.00)::numeric(20,2) as VARCHAR(12)) ||'|' ||--C23,
 CAST(V.IMP_NETO::numeric(20,2) as VARCHAR(12)) || '|' C24 ,
 '|'::TEXT C25,-- codigo d ela moneda
 '|' C26, --TIPO DE CAMBIO
 case when v.id_estado<>1 then '01/01/0001' else coalesce(to_char(v.fecha_ref,'dd/mm/yyyy'),'01/01/0001') end || '|' C27,
  CASE v.tipo
   WHEN '07' THEN
      CASE v.id_estado
       WHEN 7 THEN '00'
       ELSE coalesce(cast(v.tipo as varCHAR(2)),'00')
      END
   ELSE '00'
  END || '|' C28, --comprobanteref_col25,
 CASE v.tipo
   WHEN '07' THEN
      CASE v.id_estado
       WHEN 7 THEN '-' --isnull(RIGHT('0'+x.Serie_Cov,4),'00') --'00'
       ELSE coalesce(V.serie_ref,'00')  ---<<<aqui dice que la longitud debe ser 4 o 6 ???? sin embargo el validador atraca... todooooooooo jeje =)
      END
   ELSE '-'
  END ||'|' C29,
  CASE v.tipo
   WHEN '07' THEN
      CASE v.id_estado
       WHEN 7 THEN '-' --isnull(x.Numero_Cov,'00')  --'00'
       ELSE coalesce(v.numero_ref,'00')
      END
   ELSE '-'
  END 	||'|' C30,
'|'::text C31,
'|'::text C32,
'|'::text C33,

CASE v.id_estado
   when '07' then '2'
   else '1' end--C34
   || '|'C34  ,
  v.fecha_emision,
  v.id_empresa
from ventas.v_registroventas v;

CREATE OR REPLACE VIEW VENTAS.V__REGISTROVENTAS__PLE
as
SELECT
C1 ||
C2 ||
C3 ||
C4 ||
C5 ||
C6 ||
C7 ||
C8 ||
C9 ||
C10 ||
C11 ||
C12 ||
C13 ||
C14 ||
C15 ||
C16 ||
C17 ||
C18 ||
C19 ||
C20 ||
C21 ||
C22 ||
C23 ||
C24 ||
C25 ||
C26 ||
C27 ||
C28 ||
C29 ||
C30 ||
C31 ||
C32 ||
C33 ||
C34 AS DATA,
fecha_emision,
id_empresa
 FROM VENTAS.V__REGISTROVENTAS__PLE_COLUMNS

CREATE OR REPLACE VIEW VENTAS.V__REGISTROVENTAS__SIMPLIFICADO__PLE
AS
select
cast(date_part('year',v.fecha_emision) as CHAR(4)) || right('00' || cast(date_part('month',v.fecha_emision) as varCHAR(2)),2) || '00|' ||-- as COL1,
'22|M'::TEXT ||--  COL2,
  cast(ROW_NUMBER() OVER ( PARTITION BY   date_part('month',v.fecha_emision)   ORDER BY v.fecha_emision ASC) as varchar(10)) || '|' ||--  as cuo_col3  ,
 to_char(v.fecha_emision,'dd/mm/yyyy')  || '|' ||-- periodo_col4,
 '01/01/0001|'::TEXT ||-- FECVENCIMIENTO_col5  , --C5,
V.TIPO ||'|' ||-- AS TIPODOC_COL6,
V.NRO_SERIE || '|' ||-- SERIE_COL7,
V.NRO_COMPROBANTE || '|' ||-- COL_8,
'|'::TEXT ||-- COL_9,
case when
	v.tipo  in('00','05','06','07','08','11','12','13','14','15','16','18','19','23','26','28','30','34','35','36','37','55','56','87' , '88') then
		'0' else
			case  length(v.doc_cliente)
				when 11 then  '6'
				when 8 then '1'
				else
				'0'
			end
end || '|' ||
--CASE WHEN length(V.DOC_CLIENTE)=8 THEN '1' ELSE '0'  end ||'|' ||--AS COL_10,
case when
	v.tipo  in('00','05','06','07','08','11','12','13','14','15','16','18','19','23','26','28','30','34','35','36','37','55','56','87' , '88') then
		'0' else v.doc_cliente
end  || '|' ||--COL_11,
replace(replace(v.cliente,'->ANULADO',''),'/','-') || '|' ||--cliente_col12,
 cast(v.va_afecto::numeric(20,2) as varchar(12)) || '|' ||-- big_col13 ,--base imponible de la operacion gravada
cast(v.igv::numeric(20,2) as varchar(12)) || '|' ||--col14, impuesto general a las ventas
'0.00|'||    --C15
 CAST(V.IMP_NETO::numeric(20,2) as VARCHAR(12)) || '|'||-- IMPNETO_COL16 ,
 '|'::TEXT ||---C17, codigo d ela moneda
 '|' || --C18 TIPO DE CAMBIO
 case when v.id_estado<>1 then '01/01/0001' else coalesce(to_char(v.fecha_ref,'dd/mm/yyyy'),'01/01/0001') end || '|'||-- fecharef_col19,
  CASE v.tipo
   WHEN '07' THEN
      CASE v.id_estado
       WHEN 7 THEN '00'
       ELSE coalesce(cast(v.tipo as varCHAR(2)),'00')
      END
   ELSE '00'
  END || '|' ||--C20, ||--comprobanteref_col25,
 CASE v.tipo
   WHEN '07' THEN
      CASE v.id_estado
       WHEN 7 THEN '-' --isnull(RIGHT('0'+x.Serie_Cov,4),'00') --'00'
       ELSE coalesce(V.serie_ref,'00')  ---<<<aqui dice que la longitud debe ser 4 o 6 ???? sin embargo el validador atraca... todooooooooo jeje =)
      END
   ELSE '-'
  END ||'|' ||--C21,
  CASE v.tipo
   WHEN '07' THEN
      CASE v.id_estado
       WHEN 7 THEN '-' --isnull(x.Numero_Cov,'00')  --'00'
       ELSE coalesce(v.numero_ref,'00')
      END
   ELSE '-'
  END 	||'|'||--C22
'|' || --23
'|'||--c24
CASE v.id_estado
   when '07' then '2|'
   else '1|' end--C25
   C29  ,
  v.fecha_emision,
  v.id_empresa
from ventas.v_registroventas v

select * from compras.v__registrocompras__simplificado__ple   where id_empresa=1 and  (fechareg::date >= to_timestamp('2016-02-01 04:05:22.493','YYYY-MM-DD')   and fechareg::date <= to_timestamp('2016-02-29 04:05:22.493','YYYY-MM-DD'))

SELECT *FROM COMPRAS.TBL_COMPRA

CREATE OR REPLACE VIEW compras.v_registrocompras_ple
AS
 SELECT c.fec_documento::date AS fecha_emision,
        CASE c.id_comprobante
            WHEN 3 THEN '01'::text
            WHEN 2 THEN '03'::text
            WHEN 19 THEN '07'::text
			 WHEN 36 THEN '02'::text
			  WHEN 6 THEN '14'::text
            ELSE '00'::text
        END AS tipo,
    cp.descripcion_corta AS tipo_documento,
    c.serie AS nro_serie,
    c.nro_doc_compra AS nro_comprobante,
        CASE
            WHEN length(prov.doc_persona::text) <= 8 THEN 1
            ELSE 6
        END AS tipo_docliente,
    prov.doc_persona AS doc_cliente,
    prov.nombre_razon::text ||
        CASE
            WHEN c.id_estado = 7 THEN '->'::text || e.des_estado::text
            ELSE ''::text
        END AS cliente,
        CASE
            WHEN c.id_operacion = 2 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_total *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END AS va_exonerado,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_afecto *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END AS va_afecto,
        CASE
            WHEN c.id_operacion = 1 THEN
            CASE
                WHEN c.id_estado = 7 THEN 0::numeric
                ELSE c.imp_igv *
                CASE
                    WHEN c.id_moneda = 2 THEN c.tipo_cambio
                    ELSE 1::numeric
                END
            END
            ELSE 0::numeric
        END AS igv,
        CASE
            WHEN c.id_estado = 7 THEN 0::numeric
            ELSE c.imp_total *
            CASE
                WHEN c.id_moneda = 2 THEN c.tipo_cambio
                ELSE 1::numeric
            END
        END AS total,
    c.id_comprobante,
    c.id_dirproveedor,
    c.id_proveedor,
    c.id_sucursalcompra,
    dc.direccion,
    (((cp.descripcion_corta::text || '/'::text) || c.serie::text) || '-'::text) || c.nro_doc_compra::text AS nro_documento,
    'SON :'::text || fu_numero_letras(c.imp_total *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END) AS tot_letras,
    c.imp_venta *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END AS imp_venta,
    c.imp_igv *
        CASE
            WHEN c.id_moneda = 2 THEN c.tipo_cambio
            ELSE 1::numeric
        END AS imp_igv,
    m.simbolo AS moneda,
    tv.descripcion_larga AS tipo_venta,
    e.des_estado AS estado,
    ((c.id_compra::text || c.id_sucursalcompra::text) || c.anio::text) || c.id_mes::text AS codigo_compra,
    m.id_moneda,
    c.id_operacion,
    c.id_tipocompra,
    c.id_compra,
    cp.id_comprobante AS idtipcomprobante,
    c.id_estado,
    s.id_empresa,
    c.tipo_cambio AS tipocambio,
    c.referencia_ncr,
    c.fec_ingsistema AS fechareg,
    c.serie_nc,
    c.fecha_nc,
    c.fec_vencimiento,
    COALESCE(to_char(c.fec_pago, 'dd/MM/yyyy'::text), ''::text) AS fec_pago,
    c.nrooperacion_detatracion,
    c.afecto_detraccion,
    ref.codigosunat_ref,
    ref.serie_ref,
    ref.numero_ref,
    ref.fecha_ref,
    c.fec_ingsistema::date AS fecha_contable,
    c.id_mes,
    c.anio
   FROM compras.tbl_compra c
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = c.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = c.id_moneda
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = c.id_tipocompra
     JOIN common.tbl_estado e ON e.id_estado = c.id_estado
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = c.id_dirproveedor AND dc.id_persona::text = c.id_proveedor::text
     JOIN planillas.tbl_persona prov ON prov.id_persona::text = dc.id_persona::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = c.id_sucursalcompra
     JOIN common.tbl_tipocambio tc ON tc.id_tipocambio = c.id_tipocambio
     LEFT JOIN ( SELECT cref.id__compra,
            cref.id_sucursalcompra,
            cref.serie AS serie_ref,
            cref.nro_doc_compra AS numero_ref,
            to_char(cref.fec_documento, 'dd/MM/yyyy'::text) AS fecha_ref,
            cpref.codigosunat AS codigosunat_ref
           FROM compras.tbl_compra cref
             JOIN common.tbl_comprobante cpref ON cpref.id_comprobante = cref.id_comprobante
          WHERE cref.nota_credito = false AND cref.nota__debito = false) ref ON c.id__compra__ref = ref.id__compra AND c.id__sucursal__ref = ref.id_sucursalcompra
  WHERE c.id_estado = 1
  ORDER BY c.fec_ingsistema;

select *from compras.tbl_compra
select *from common.tbl_comprobante
  --c.id_comprobante, c.serie, c.nro_doc_compra::integer;

SELECT *FROM COMMON.TBL_MONEDA

select *from compras.v__registrocompras__ple_cols

CREATE OR REPLACE VIEW compras.v__registrocompras__ple_cols AS
 SELECT (date_part('year'::text, r.fecha_contable)::character(4)::text || "right"('00'::text || r.id_mes::character varying(2)::text, 2)) || '00|'::text AS c1,
    '22|'::text AS c2,
    ('M'::text || row_number() OVER (PARTITION BY r.id_mes ORDER BY r.id_mes)::character varying(10)::text) || '|'::text AS c3,
    to_char(r.fecha_emision::timestamp with time zone, 'dd/mm/yyyy'::text) || '|'::text AS c4,
        CASE
            WHEN rtrim(r.tipo) = '14'::text THEN to_char(r.fecha_emision::timestamp with time zone, 'dd/mm/yyyy'::text)
            ELSE ''::text
        END || '|'::text AS c5,
    r.tipo || '|'::text AS c6,
    r.nro_serie::text || '|'::text AS c7,
        CASE r.tipo
            WHEN '52'::text THEN date_part('YEAR'::text, r.fecha_emision)
            WHEN '50'::text THEN date_part('YEAR'::text, r.fecha_emision)
            ELSE '0'::double precision
        END::character varying(10)::text || '|'::text AS c8,
    r.nro_comprobante::text || '|'::text AS c9,
    '|'::text AS c10,
        CASE
            WHEN btrim(r.tipo) = ANY (ARRAY['03'::text, '05'::text, '06'::text, '07'::text, '08'::text, '11'::text, '12'::text, '13'::text, '14'::text, '15'::text, '16'::text, '18'::text, '19'::text, '22'::text, '23'::text, '26'::text, '28'::text, '30'::text, '34'::text, '35'::text, '36'::text, '37'::text, '55'::text, '56'::text, '87'::text, '88'::text, '91'::text, '97'::text, '98'::text]) THEN '0'::text
            ELSE
            CASE length(r.doc_cliente::text)
                WHEN 0 THEN '0'::text
                ELSE
                CASE length(r.doc_cliente::text)
                    WHEN 11 THEN '6'::text
                    WHEN 8 THEN '1'::text
                    ELSE '0'::text
                END
            END
        END || '|'::text AS c11,
    r.doc_cliente::text || '|'::text AS c12,
        CASE
            WHEN rtrim(r.tipo) = ANY (ARRAY['00'::text, '03'::text, '05'::text, '06'::text, '07'::text, '08'::text, '11'::text, '12'::text, '13'::text, '14'::text, '15'::text, '16'::text, '18'::text, '19'::text, '22'::text, '23'::text, '26'::text, '28'::text, '30'::text, '34'::text, '35'::text, '36'::text, '37'::text, '55'::text, '56'::text, '87'::text, '88'::text, '91'::text, '97'::text, '98'::text]) THEN ''::text
            ELSE btrim(r.cliente)
        END || '|'::text AS c13,
        CASE
            WHEN rtrim(r.tipo) = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN ((r.va_afecto::numeric(20,2) * '-1'::integer::numeric))::character varying(20)
            ELSE r.va_afecto::numeric(20,2)::character varying(20)
        END::text || '|'::text AS c14,
        CASE
            WHEN rtrim(r.tipo) = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN ((COALESCE(r.imp_igv::numeric(20,2), 0::numeric) * '-1'::integer::numeric))::character varying(20)
            ELSE COALESCE(r.imp_igv::numeric(20,2), 0::numeric)::character varying(20)
        END::text || '|'::text AS c15,
    '0.00'::text || '|'::text AS c16,
    '0.00'::text || '|'::text AS c17,
    '0.00'::text || '|'::text AS c18,
    '0.00'::text || '|'::text AS c19,
        CASE
            WHEN rtrim(r.tipo) = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN (r.va_exonerado * '-1'::integer::numeric)::numeric(20,2)::character varying(20)
            ELSE r.va_exonerado::numeric(20,2)::character varying(20)
        END::text || '|'::text AS c20,
    '0.00'::text || '|'::text AS c21,
    '0.00'::text || '|'::text AS c22,
        CASE
            WHEN btrim(r.tipo) = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN ((COALESCE(r.total::numeric(20,2), 0::numeric) * '-1'::integer::numeric))::character varying(20)
            ELSE COALESCE(r.total::numeric(20,2), 0::numeric)::character varying(20)
        END::text || '|'::text AS c23,
    r.moneda::text || '|'::text AS c24,
    COALESCE(r.tipocambio::numeric(20,3), 0::numeric)::character varying(10)::text || '|'::text AS c25,
        CASE
            WHEN rtrim(r.tipo) = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN r.fecha_ref
            ELSE '01/01/0001'::text
        END || '|'::text AS c26,
    COALESCE(r.codigosunat_ref, ''::text) || '|'::text AS c27,
        CASE
            WHEN r.tipo = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN COALESCE(r.serie_ref, '-'::bpchar)
            ELSE '-'::bpchar
        END::text || '|'::text AS c28,
    '|'::text AS c29,
        CASE
            WHEN rtrim(r.tipo) = ANY (ARRAY['07'::text, '87'::text, '97'::text]) THEN COALESCE(r.numero_ref, '-'::bpchar)
            ELSE '-'::bpchar
        END::text || '|'::text AS c30,
    r.fec_pago || '|'::text AS c31,
    r.nrooperacion_detatracion::text || '|'::text AS c32,
        CASE
            WHEN r.afecto_detraccion = true THEN '1'::text
            ELSE ''::text
        END || '|'::text AS c33,
    '|'::text AS c34,
    '|'::text AS c35,
    '|'::text AS c36,
    '|'::text AS c37,
    '|'::text AS c38,
    '|'::text AS c39,
    '|'::text AS c40,
        CASE
            WHEN (date_part('month'::text, r.fecha_emision) - date_part('month'::text, now()::date)) > 12::double precision AND rtrim(r.tipo) = '03'::text THEN '0'::text
            WHEN (date_part('month'::text, r.fecha_emision) - date_part('month'::text, now()::date)) > 12::double precision AND rtrim(r.tipo) <> '03'::text THEN '7'::text
            ELSE
            CASE
                WHEN rtrim(r.tipo) = ANY (ARRAY['03'::text, '22'::text, '16'::text, '10'::text,'02']) THEN '0'::text
                ELSE
                CASE
                    WHEN date_part('year'::text, r.fecha_emision) <= date_part('year'::text, r.fecha_contable) AND r.fecha_emision < r.fecha_contable AND date_part('month'::text, r.fecha_emision) <> date_part('month'::text, r.fecha_contable) THEN '6'::text
                    WHEN date_part('year'::text, r.fecha_emision) = date_part('year'::text, r.fecha_contable) AND date_part('month'::text, r.fecha_emision) = date_part('month'::text, r.fecha_contable) THEN '1'::text
                    ELSE '6'::text
                END
            END
        END || '|'::text AS c41,
    '|'::text AS c42,
    r.id_empresa,
    r.fecha_emision,
    r.fechareg,
    r.id_mes,
    r.anio
   FROM compras.v_registrocompras_ple r;

CREATE OR REPLACE VIEW compras.v__registrocompras__ple
AS
SELECT
COALESCE(C1,'') ||
COALESCE(C2,'')  ||
COALESCE(C3 ,'') ||
COALESCE(C4,'')  ||
COALESCE(C5,'')  ||
COALESCE(C6,'')  ||
COALESCE(C7,'')  ||
COALESCE(C8,'')  ||
COALESCE(C9,'')  ||
COALESCE(C10,'')  ||
COALESCE(C11,'')  ||
COALESCE(C12,'')  ||
COALESCE(C13,'')  ||
COALESCE(C14,'')  ||
COALESCE(C15,'')  ||
COALESCE(C16,'')  ||
COALESCE(C17,'')  ||
COALESCE(C18,'')  ||
COALESCE(C19,'')  ||
COALESCE(C20,'')  ||
COALESCE(C21,'')  ||
COALESCE(C22,'')  ||
COALESCE(C23,'')  ||
COALESCE(C24,'')  ||
COALESCE(C25,'')  ||
COALESCE(C26,'')  ||
COALESCE(C27,'')  ||
COALESCE(C28,'')  ||
COALESCE(C29,'')  ||
COALESCE(C30,'')  ||
COALESCE(C31,'')  ||
COALESCE(C32,'')  ||
COALESCE(C33,'')  ||
COALESCE(C34,'')  ||
COALESCE(C35,'')  ||
COALESCE(C36,'')  ||
COALESCE(C37,'')  ||
COALESCE(C38,'')  ||
COALESCE(C39,'')  ||
COALESCE(C40,'')  ||
COALESCE(C41,'') as data ,
id_empresa,
fecha_emision,
fechareg,
id_mes,
anio
FROM compras.v__registrocompras__ple_cols

select *from ventas.tbl_facturacion,

select * from compras.v__registrocompras__ple   where id_empresa=1 and  (fechareg::date >= to_timestamp('2018-08-01 02:05:29.267','YYYY-MM-DD')   and fechareg::date <= to_timestamp('2018-08-31 02:05:29.267','YYYY-MM-DD'))

create or replace view creditos.v__cobrazas_diarias_vendor
as
select
(cp.descripcion_corta || '/' || f.serie_facturacion || '-'|| numdoc_Facturacion) as nro_documento,
to_char(f.fecha_venta,'dd/mm/yyyy') as fecha,
date_part('year',mov.fecha_mov::date) as anio,
date_part('month',mov.fecha_mov::date) as mes,
date_part('day',mov.fecha_mov::date) as dia,
cli.doc_persona,
cli.nombre_razon as cliente,
dir.direccion,
dis.distrito,
f.imp_neto-COALESCE((
	SELECT SUM(NC.imp_neto) AS IMPORTE FROM VENTAS.TBL_FACTURACION NC WHERE (F.ID_FACTURACION=NC.ID_FACTURACIONREF AND F.ID_SUCURSAL=NC.ID_SUCURSALREF)
),0)::numeric(20,4) as imp_documento,
m.simbolo as moneda,
c.imp_total-COALESCE((
	SELECT SUM(NC.imp_neto) AS IMPORTE FROM VENTAS.TBL_FACTURACION NC WHERE (F.ID_FACTURACION=NC.ID_FACTURACIONREF AND F.ID_SUCURSAL=NC.ID_SUCURSALREF)
),0)::numeric(20,4) as imp_cuota,
(cpm.descripcion_corta || '/' || lpad(mov.serie,4,'0') || '-'|| lpad(mov.numero,7,'0')) as documento_mov,
to_char(mov.fecha_mov,'dd/mm/yyyy') as fecha_pago,
mov.imp_movimiento as imp_pago,
coalesce(vend.apell_paterno || '' || vend.apell_materno || '' || vend.nombres,vend.nombre_razon) as vendedor,
vend.id_persona as id_vendedor,
s.id_empresa
from
ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on (cp.id_comprobante=f.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=f.id_moneda)
inner join planillas.tbl_persona cli on (cli.id_persona=f.id_cliente)
inner join ventas.tbl_direccion dir on (cli.id_persona=dir.id_persona)
inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
inner join ventas.tbl_zona z on (z.id_zona=sec.id_zona)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
inner join creditos.tbl_ventacredito  vc on (f.id_facturacion=vc.id_facturacion and f.id_sucursal=vc.id_sucursal)
inner join creditos.tbl_cuota c on (vc.id_credito=c.id_credito)
inner join creditos.tbl_detpagocuota dp on (c.id_cuotas=dp.id_cuotas and c.id_credito=dp.id_credito and c.id_sucursal_credito=dp.id_sucursal_credito)
inner join caja.tbl_movcaja mov on (mov.id_movimcaja=dp.id_movimcaja and mov.id_sucursal=dp.id_sucursal)
inner join common.tbl_comprobante cpm on (cpm.id_comprobante=mov.id_comprobante)
inner join common.tbl_moneda mmv on (mmv.id_moneda=mov.id_moneda)
inner join planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)
where f.id_estado=1;

SELECT *FROM VENTAS.TBL_FACTURACION F
INNER JOIN VENTAS.TBL_FACTURACION NC ON (F.ID_FACTURACION=NC.ID_FACTURACIONREF AND F.ID_SUCURSAL=NC.ID_SUCURSALREF)

create or replace  view ventas.v_guiaremisionTransportista
as
select  ( c.descripcion_corta || '/'|| lpad(cab.serie,4,'0') || '-' || lpad(cab.numero,7,'0')) documento,
cab.fecha ,
CASE WHEN trim(f.id_cliente)='000' then trim(cab.NOMAPE_CLIENTE) else  trim(p.NOMBRE_RAZON)  end AS distinatario,
--p.nombre_razon as distinatario,
cab.direc_partida,
dir.direccion as dirllegada,
cab.fec_initraslado,
m.descripcion_larga as motivo,
case when trim(f.id_cliente)='000' then cab.DNI_CLIENTE else  trim(p.DOC_PERSONA) end as doc_dictinatario ,
--p.doc_persona as doc_dictinatario,
COALESCE(t.nombre_razon,COALESCE(t.nombres,'') || ' ' || COALESCE(t.apell_paterno,'') || ' ' || COALESCE(t.apell_materno,'')) as transportista,
COALESCE(t.doc_persona,t.dni) as doc_transportista,
cab.id_guia,
cab.id_sucursal,
cab.id_comprobante,
cab.id_tranzaccion,
cab.documento_referencia,
cab.id_motivo,
cab.imp_bruto,
cab.imp_dscto,
cab.imp_igv,
cab.imp_subtotal,
cab.imp_total,
cab.glosa,
cab.id_direccioncli,
cab.id_cliente,
cab.id_transportista,
cab.id_igv,
cab.id_tipocambio,
cab.id_tipoventa,
cab.id_moneda,
lpad(cab.serie,4,'0') as serie,
lpad(cab.numero,7,'0') as numero,
v.nombre_razon as vendedor,
p.doc_persona as doc_vendedor,
v.id_persona as id_vendedor,
cab.placa_transporte,
tr.nro_constanciaincripcion as nro_constinscripcion,
COALESCE(cab.id_facturacion,0) as id_facturacion,
COALESCE(cab.id_sucursalfac,0) as id_sucursalfac,
COALESCE((cf.descripcion_corta || '/'|| lpad(f.serie_facturacion,4,'0') || '-' || lpad(f.numdoc_facturacion,7,'0')),'SIN DOCUMENTO') documento_fact,
cab.id_estado,
(cab.id_guia || '' || cab.id_sucursal) as id_documentoguia,
suc.id_empresa,
lpad(cab.serie,4,'0')  ||'-'||lpad(cab.numero,7,'0') as GuiaTransportista,
tr.nro_licconducir,
e.des_estado as estado,
(cab.id_facturacion::text || cab.id_sucursalfac::text)  as id_facturacionref,
to_char(cab.fecha ,'dd/mm/yyyy') as fecha_report,
COALESCE(cpn.descripcion_corta || '/'|| lpad(fac.serie,4,'0')  ||'-'||lpad(fac.numero,7,'0'),'Sin G.Remitente') as GuiaRemitente,
cab.id_guiaref,
cab.id_sucursalref
from
ventas.tbl_guiaremisionventa cab
inner join ventas.tbl_direccion dir on (dir.id_direccion=cab.id_direccioncli and  dir.id_persona=cab.id_cliente)
inner join planillas.tbl_persona p on (p.id_persona=dir.id_persona)
inner  join common.tbl_comprobante c on (c.id_comprobante=cab.id_comprobante)
inner join  ventas.tbl_transportista tr on (tr.id_transportista=TRIM(cab.id_transportista)::INTEGER)
inner join planillas.tbl_persona t on (t.id_persona=tr.id_persona)
inner join common.tbl_concepto m on (m.id_concepto=cab.id_motivo)
inner join planillas.tbl_persona v on (v.id_persona=cab.id_vendedor)
inner join common.tbl_sucursal suc on (suc.id_sucursal=cab.id_sucursal)
inner join common.tbl_estado e on (e.id_estado=cab.id_estado)
left join ventas.tbl_facturacion f on (f.id_facturacion=cab.id_facturacion and f.id_sucursal=cab.id_sucursalfac)
left  join common.tbl_comprobante cf on (cf.id_comprobante=f.id_comprobante)
left  join ventas.tbl_guiaremisionventa fac on (fac.id_guia=cab.id_guiaref and fac.id_sucursal=cab.id_sucursalref)
left join common.tbl_comprobante cpn on (cpn.id_comprobante=fac.id_comprobante)
where cab.gtransportista=true
order by cab.fecha,cab.serie,cab.numero

select
case when fac.id_unidad is null then
(tbl_comprobante.descripcion_corta || '/' || fac.serie_facturacion || '-' || fac.numdoc_facturacion)
else (select prod.descripcion_larga from almacen.tbl_producto prod where prod.id_producto=fac.id_unidad) end ::text
 as documento,
to_char(cred.fec_emision,'dd/mm/yyyy'::text) as fec_credito,
   cli.nombre_razon AS cliente,
   (DIR.DIRECCION || ', ' || TRIM(DIS.distrito)) AS DIRECCION,
to_char((select c.fec_vencimiento
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito
		ORDER BY c.nro_cuota DESC
                 LIMIT 1),'dd/mm/yyyy'::text) as fec_vencimiento,
tbl_moneda.simbolo as moneda,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0) - COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_cuota_notacredito NC
where (Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)),0)
as credito,

COALESCE((select sum(mc.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito),0) as pagos,

COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-
COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-COALESCE((select sum(COALESCE(NC.imp_dscto,0))
	 from creditos.tbl_cuota_notacredito NC
where (Cred.ID_CREDITO=NC.ID_CREDITO AND Cred.ID_SUCURSAL_CREDITO=NC.id_sucursal_cred)),0) as saldo,

         fac.imp_total+COALESCE((select sum(c.imp_interes)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)   , 0.00)  as total_venta,

COALESCE(to_char((select mc.fecha_mov from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito order by mc.fecha_mov desc limit 1 ),'dd/mm/yyyy'::text),'') as ultimo_pago,

	(SELECT SUM(now()::date-cc.fec_vencimiento::date) FROM CREDITOS.TBL_CUOTA CC
	WHERE CRED.ID_CREDITO=CC.ID_CREDITO AND CRED.ID_SUCURSAL_CREDITO=CC.ID_SUCURSAL_CREDITO) as dias_atrazados,
tbl_tipoventa.descripcion_larga::text AS tipo_venta,
fac.id_facturacion,
fac.id_sucursal,
fac.id_cliente,
fac.id_direccion,
cred.id_credito,
cred.id_sucursal_credito,
tbl_comprobante.descripcion_corta as comprobante,
fac.serie_facturacion,
fac.numdoc_facturacion,
cli.doc_persona AS doc_cliente,
suc.id_empresa,
cli.id_vendtitular as id_vendedor,
((select c.fec_vencimiento::date
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito
		ORDER BY c.nro_cuota DESC
                 LIMIT 1)-cred.fec_emision::date)::text || ' DIAS' as dias_credito,
COALESCE((vend.apell_paterno || '' || vend.apell_materno || ', ' || vend.nombres),vend.nombre_razon)  as vendedor,
COALESCE(vend.dni,vend.doc_persona) as doc_vendedor,
dis.distrito
from ventas.tbl_facturacion fac
inner join ventas.tbl_detfacturacion df on(fac.id_facturacion=df.id_facturacion and fac.id_sucursal=df.id_sucursal)
inner join almacen.tbl_detproducto dp on (dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_producto prod on (prod.id_producto=dp.id_producto)
inner join almacen.tbl_familia fa on (fa.id_familia=prod.id_familia)
inner join creditos.tbl_ventacredito  vc on (fac.id_sucursal=fac.id_sucursal and  vc.id_facturacion=fac.id_facturacion and fac.id_tipoventa=2)
inner join creditos.tbl_credito cred on (cred.id_credito=vc.id_credito and  cred.id_sucursal_credito=vc.id_sucursal_credito)
INNER JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
INNER JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
INNER JOIN ventas.tbl_direccion dir ON dir.id_persona = fac.id_cliente::text  AND dir.id_direccion = fac.id_direccion
INNER JOIN ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
INNER JOIN ventas.tbl_zona Z ON (Z.id_zona=SEC.id_zona)
INNER JOIN common.tbl_distrito DIS ON (DIS.id_distrito=Z.id_distrito)
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = dir.id_persona
INNER JOIN planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
INNER JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=FAC.ID_SUCURSAL)
WHERE FAC.ID_ESTADO=1
order by (SELECT SUM(now()::date-cc.fec_vencimiento::date) FROM CREDITOS.TBL_CUOTA CC
	WHERE CRED.ID_CREDITO=CC.ID_CREDITO AND CRED.ID_SUCURSAL_CREDITO=CC.ID_SUCURSAL_CREDITO) desc

create or replace view ventas.v__cobrazans_vendedores
as
select vend.nombre_razon,
fa.descripcion_larga as familia,sum(df.importe) as importe_contado,0 as imp_cobrado,fac.fecha_venta::date as fecha
from ventas.tbl_facturacion fac
inner join ventas.tbl_detfacturacion df on(fac.id_facturacion=df.id_facturacion and fac.id_sucursal=df.id_sucursal)
inner join almacen.tbl_detproducto dp on (dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_producto prod on (prod.id_producto=dp.id_producto)
inner join almacen.tbl_familia fa on (fa.id_familia=prod.id_familia)
INNER JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = fac.id_tipoventa
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = fac.id_cliente
INNER JOIN planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
where   fac.id_estado=1 and fac.nota_credito=false and fac.id_tipoventa=1
group by vend.nombre_razon,fa.descripcion_larga,fac.fecha_venta
--order by fa.descripcion_larga
union all
select
z.vendedor,
z.familia,
0 as imp_contado,
sum(COALESCE((
	select sum(mc.imp_movimiento)
	from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito),0)) as imp_cobrado,
z.fecha_venta::date as fecha
from creditos.tbl_ventacredito vc
inner join (
	select distinct vend.nombre_razon as vendedor,f.id_facturacion,f.id_sucursal,fa.descripcion_larga as familia,f.fecha_venta from ventas.tbl_facturacion f
	INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = f.id_cliente
	INNER JOIN planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
	inner join ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
	inner join creditos.tbl_ventacredito  vc on (f.id_sucursal=vc.id_sucursal and  vc.id_facturacion=f.id_facturacion and f.id_tipoventa=2)
	inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
	inner  join almacen.tbl_familia fa on (fa.id_familia=p.id_familia)
	where f.id_estado=1 and f.nota_credito=false
) z on (vc.id_facturacion=z.id_facturacion and z.id_sucursal=vc.id_sucursal)
group by z.vendedor,z.familia,z.fecha_venta::date

CREATE OR REPLACE VIEW ventas.v__clientes__x__vendedor_distribuidoras
AS
 SELECT vend.id_persona AS id_vendedor,
    COALESCE((((vend.apell_paterno::text || ''::text) || vend.apell_materno::text) || ''::text) || vend.nombres::text, vend.nombre_razon::text) AS vendedor,
    cli.doc_persona,
    cli.nombre_razon AS cliente,
    dir.direccion,
    d.distrito,
    cli.id_persona AS id_cliente,
    COALESCE(ds.nombre_dia, ''::character varying)::character varying(50) AS nombre_dia,
    common.fn_gettelonospersona(cli.id_persona) as Telefono
   FROM planillas.tbl_persona cli
     JOIN planillas.tbl_persona vend ON cli.id_vendtitular = vend.id_persona::bpchar
     JOIN ventas.tbl_direccion dir ON cli.id_persona::text = dir.id_persona::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito d ON d.id_distrito::text = z.id_distrito::text
     LEFT JOIN ventas.tbl_visita v ON v.id_persona::text = cli.id_persona::text
     LEFT JOIN ventas.tbl_diasemana ds ON ds.id_diasemana = v.id_diasemana
  ORDER BY vend.id_persona, d.distrito;

slec

CREATE OR REPLACE  VIEW CAJA.V_CUENTAS_BANCARIAS
AS
SELECT
id_cuenta,
b.Nombre_Ban as banco,
cb.nro_cuenta as cuenta,
m.descripcion_larga ||'('|| m.simbolo ||')' as moneda,
pc.nro_cuenta as nro_cuenta,
e.des_estado as estado,
cb.id_sucursal,
m.id_moneda,
e.id_estado,
b.id_banco as id_cajabanco,
pc.id_plancuenta,
pc.nombre_cuenta,
cpto.descripcion_larga as concepto,
cpto.id_concepto,
s.id_empresa
 FROM CAJA.TBL_CUENTABANCARIA CB
INNER JOIN COMMON.tbl_BANCO B ON(B.id_banco=cb.id_banco)
INNER JOIN common.tbl_moneda m on (m.id_moneda=cb.id_moneda)
INNER JOIN contabilidad.tbl_plancuenta pc on (pc.id_plancuenta=cb.id_plancuenta)
INNER JOIN common.tbl_estado e on (e.id_estado=cb.id_estado)
INNER JOIN common.tbl_concepto cpto on (cpto.id_concepto=cb.id_concepto)
INNER JOIN COMMON.tbl_sucursal s ON (s.id_sucursal=cb.id_sucursal)

SELECT *FROM CAJA.TBL_CUENTABANCARIA

select * from caja.V_CUENTAS_BANCARIAS   order by ID_CUENTA

CREATE OR REPLACE VIEW VENTAS.V_COMISIONPORCENT
AS
SELECT
	cp.id_tipocomision,
	tv.descripcion_larga as tipo_venta,
	cp.descripcion,
	cp.porcentaje,
	cp.fecha_inicio,
	cp.fecha_fin,
	es.des_estado,
	es.id_estado,
	cp.id_empresa,
	cp.id_tipoventa,
	cp.id_usuarior,
	cp.id_usuarioa,
	cp.fecha_reg,
	(cp.descripcion || ' - ' || tv.descripcion_larga || ' ' ||  trunc(cp.porcentaje,2)::text || '%') as comicion,
	IMP_DESDE,
	IMP_HASTA

FROM  ventas.tbl_comisionporcent cp inner join
	common.tbl_tipoventa tv on  tv.id_tipoventa=cp.id_tipoventa inner join
	common.tbl_estado es on (es.id_estado=cp.id_estado)

SELECT *FROM ventas.tbl_comisionporcent

CREATE OR REPLACE VIEW VENTAS.V_COMISION_PERSONA
AS
SELECT
	cp.id_tipocomision,
	tv.descripcion_larga as tipo_venta,
	cp.descripcion,
	cp.porcentaje,
	cp.fecha_inicio,
	cp.fecha_fin,
	es.des_estado,
	cpp.id_estado,
	cp.id_empresa,
	cp.id_tipoventa,
	cp.id_usuarior,
	cp.id_usuarioa,
	cp.fecha_reg,
	(tv.descripcion_larga || ' ' ||  trunc(cp.porcentaje,2)::text || '%') as comicion,
	cpp.id_persona	,
	cpp.id_detcomicpersona,
	'2'::text op
FROM  ventas.tbl_comisionporcent cp inner join
	common.tbl_tipoventa tv on  tv.id_tipoventa=cp.id_tipoventa inner join
	common.tbl_estado es on (es.id_estado=cp.id_estado) inner join
	VENTAS.TBL_COMICPERSONA cpp on (cp.id_tipocomision=cpp.id_tipocomision)

SELECT *FROM VENTAS.V_COMIC_VENDEDORES

CREATE OR REPLACE VIEW VENTAS.V_COMIC_VENDEDORES
AS
SELECT VEN.NOMBRE_RAZON AS VENDEDOR ,
CP.descripcion,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
SUM(F.IMP_NETO) AS IMP_VENTA ,
CP.porcentaje,
SUM(F.IMP_NETO*(CP.porcentaje/100))::NUMERIC(20,4) AS IMP_COMISION,
F.FECHA_VENTA FECHA
FROM
VENTAS.TBL_FACTURACION F INNER JOIN
COMMON.TBL_TIPOVENTA TV ON (TV.ID_TIPOVENTA=F.ID_TIPOVENTA) INNER JOIN
PLANILLAS.TBL_PERSONA CLI  ON (F.ID_CLIENTE=CLI.ID_PERSONA)INNER JOIN
PLANILLAS.TBL_PERSONA VEN ON (VEN.ID_PERSONA=CLI.ID_VENDTITULAR) INNER JOIN
VENTAS.TBL_COMICPERSONA CMP ON (CMP.ID_PERSONA=VEN.ID_PERSONA ) INNER JOIN
VENTAS.TBL_COMISIONPORCENT CP ON ( CP.id_tipocomision=CMP.id_tipocomision AND CP.ID_TIPOVENTA=F.ID_TIPOVENTA)
WHERE F.ID_TIPOVENTA=1 --AND date_part('year',F.FECHA_VENTA::date)=2015 and date_part('month',F.FECHA_VENTA::date)=4
GROUP BY VEN.NOMBRE_RAZON,CP.descripcion,TV.DESCRIPCION_LARGA,CP.porcentaje,F.FECHA_VENTA
union
SELECT VEN.NOMBRE_RAZON AS VENDEDOR ,
CP.descripcion,
TV.DESCRIPCION_LARGA AS TIPO_VENTA,
SUM(F.IMP_NETO) AS IMP_VENTA ,
CP.porcentaje,
SUM(mov.imp_movimiento*(CP.porcentaje/100))::NUMERIC(20,4) AS IMP_COMISION,
mov.fecha_mov Fecha
FROM
VENTAS.TBL_FACTURACION F INNER JOIN
creditos.tbl_ventacredito vc on (f.id_facturacion=vc.id_Facturacion and f.id_sucursal=vc.id_sucursal) inner join
creditos.tbl_cuota c on (vc.id_credito=c.id_credito and vc.id_sucursal_credito=c.id_sucursal_credito) inner join
creditos.tbl_detpagocuota dpc on  (c.id_cuotas=dpc.id_cuotas and c.id_credito=dpc.id_credito and c.id_sucursal_credito=dpc.id_sucursal_credito) inner join
caja.tbl_movcaja mov on (mov.id_movimcaja=dpc.id_movimcaja and  mov.id_sucursal=dpc.id_sucursal) inner join
COMMON.TBL_TIPOVENTA TV ON (TV.ID_TIPOVENTA=F.ID_TIPOVENTA) INNER JOIN
PLANILLAS.TBL_PERSONA CLI  ON (F.ID_CLIENTE=CLI.ID_PERSONA)INNER JOIN
PLANILLAS.TBL_PERSONA VEN ON (VEN.ID_PERSONA=CLI.ID_VENDTITULAR) INNER JOIN
VENTAS.TBL_COMICPERSONA CMP ON (CMP.ID_PERSONA=VEN.ID_PERSONA ) INNER JOIN
VENTAS.TBL_COMISIONPORCENT CP ON ( CP.id_tipocomision=CMP.id_tipocomision AND CP.ID_TIPOVENTA=F.ID_TIPOVENTA)
WHERE F.ID_TIPOVENTA=2 --AND date_part('year',mov.fecha_mov::date)=2015 --and date_part('month',mov.fecha_mov::date)=4
GROUP BY VEN.NOMBRE_RAZON,CP.descripcion,TV.DESCRIPCION_LARGA,CP.porcentaje,mov.fecha_mov

create or replace view ventas.v_productos_x_vendedor
as
select
v.id_persona as id_vendedor,
v.doc_persona,
v.nombre_razon as vendedor,
(tdo.descripcion_corta || '/' || f.serie_facturacion || '-'|| f.numdoc_facturacion) as documento,
cli.nombre_razon as cliente,
p.descripcion_larga as producto,
und.desc_corta as unidad,
df.cantidad,
df.precio,
df.importe,
s.id_empresa,
p.id_producto,
f.fecha_venta
  from ventas.tbl_facturacion f
inner join common.tbl_comprobante tdo on (tdo.id_comprobante=f.id_comprobante)
inner join planillas.tbl_persona cli on (f.id_cliente=cli.id_persona)
inner join planillas.tbl_persona v on (v.id_persona=cli.id_vendtitular)
inner join ventas.tbl_detfacturacion df on (f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
inner join almacen.tbl_detproducto dp on (dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_unidad und on (und.id_unidadventa=dp.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)

create or replace view caja.v_tarjetacuentabanco
as
select t.id_tarjeta,t.denominacion,c.nro_cuenta,c.id_cuenta from common.tbl_tarjeta t
inner join caja.tbl_tarjetacuentabanco tcb on (t.id_tarjeta=tcb.id_tarjeta)
inner join caja.tbl_cuentabancaria c on (c.id_cuenta=tcb.id_cuenta)
where tcb.id_estado=1

create or replace  view caja.v_cheques
as
select
	(cp.descripcion_corta ||'/'|| mov.serie || '-' || mov.numero) as documento,
	mov.fecha_mov as fecha ,
	per.nombre_razon as proveedor,
	m.simbolo as moneda,
	mov.imp_movimiento,
	ban.Nombre_Ban as banco,
	cba.nro_cuenta,
	cco.descripcion_larga  as centro_costos,
	cpto.descripcion_larga as concepto,
	mov.doc_referencia,
	Mov.id_Estado,
	s.id_empresa,
	s.id_sucursal,
	per.doc_persona,
	mov.serie,
	mov.numero,
	ban.ID_BANCO,
	mov.id_cuenta,
	mov.id_personaingdiv,
	mov.id_centrocostos,
	mov.id_concepto,
	mov.id_moneda,
	mov.endosado,
	MOV.id_movimcaja,
	(select count(*) from creditos.tbl_detpagocuota dp where dp.id_movimcaja=mov.id_movimcaja and dp.id_sucursal=mov.id_sucursal) as nro_cuotas,
	mov.glosa

from caja.tbl_movcaja mov
inner join common.tbl_comprobante cp on (cp.id_comprobante=mov.id_comprobante)
inner join common.tbl_moneda m on (m.id_moneda=mov.id_moneda)
inner join planillas.tbl_persona per on  (per.id_persona=mov.id_personaingdiv)
inner join caja.tbl_cuentabancaria cba on (cba.id_cuenta=mov.id_cuenta)
inner join COMMON.tbl_BANCO ban on (ban.ID_BANCO=cba.ID_BANCO)
inner join contabilidad.tbl_centrocosto cco on (cco.id_centrocostos=mov.id_centrocostos)
inner join common.tbl_concepto cpto on (cpto.id_concepto=mov.id_concepto)
inner join common.tbl_sucursal s on (s.id_sucursal=mov.id_sucursal)

ALTER TABLE compras.tbl_compra
    ALTER COLUMN nro_doc_compra TYPE character(15) ;

drop view compras.v_comprasxproducto

create or replace view v_verdocumentocompras
as
select
(cp.descripcion_corta || '' ||  c.serie || '-' || c.nro_doc_compra) as documento,p.nombre_razon,
c.fec_documento,
pr.descripcion_larga as producto,
dc.cantidad,
dc.precio,
dc.imp_incluido
from compras.tbl_compra c
inner join common.tbl_comprobante cp on(cp.id_comprobante=c.id_comprobante)
inner join planillas.tbl_persona p on (p.id_persona=c.id_proveedor)
inner join compras.tbl_detcompra dc on (c.id_sucursalcompra=dc.id_sucursalcompra and c.anio=dc.anio and c.id_compra=dc.id_compra  and c.id_mes=dc.id_mes)
inner join almacen.tbl_producto pr on  pr.id_producto=dc.id_producto
ORDER BY c.serie,c.nro_doc_compra,c.fec_documento::date

CREATE  OR REPLACE view almacen.list__unidades__convertidas
as
SELECT
(ci.descripcion_corta || '/'|| cu.serie__ni ||''|| cu.numero__ni)  as Nota_ingreso ,
(cs.descripcion_corta || '/'|| cu.serie__ns||''|| cu.numero__ns)  as Nota_salida ,
cu.fecha,
p.descripcion_larga as producto,
us.desc_corta as unidad_salida,
cu.cantidad__a__convertir,
ui.desc_corta as unidad_ingreso,
cu.cantidad__convertidad,
s.id_empresa,
cu.id__almacen,
cu.id__comprobante_ni,
cu.serie__ni ,
cu.numero__ni,
cu.id__comprobante_ns,
cu.serie__ns,
cu.numero__ns,
cu.id__producto,
cu.val__unidad__base,
cu.val__unidad__destino,
cu.id__unidad__destino,
cu.id__unidad__base,
cu.id__conversion,
cu.id__sucursal,
cu.id__estado
FROM
almacen.tbl__conversion__unidad cu
INNER JOIN common.tbl_comprobante ci on (ci.id_comprobante=cu.id__comprobante_ni)
INNER JOIN common.tbl_comprobante cs on (cs.id_comprobante=cu.id__comprobante_ns)
INNER JOIN almacen.tbl_producto p on (p.id_producto=cu.id__producto)
INNER JOIN almacen.tbl_unidad ui on (ui.id_unidadventa=cu.id__unidad__destino)
INNER JOIN almacen.tbl_unidad us on (us.id_unidadventa=cu.id__unidad__base)
INNER JOIN almacen.tbl_almacen a on (a.id_almacen=cu.id__almacen)
INNER JOIN common.tbl_sucursal s on (s.id_sucursal=cu.id__sucursal)

create or replace view almacen.v_lotes
as
select
	nro__lote,
	lt.fecha__registro,
	lt.fecha__vencimiento,
	p.descripcion_larga as producto,
	un.desc_corta as unidad,
	lt.stock,
	lt.stock__inicial,
	lt.costo__inicial,
	lt.valor__actual,
	lt.id__producto,
	lt.id__unidadventa,
	lt.id__lote,
	lt.id__sucursal,
	lt.id__estado
from almacen.tbl__lote lt
inner join almacen.tbl_detproducto dp on (dp.id_producto=lt.id__producto and dp.id_unidadventa=lt.id__unidadventa)
inner join almacen.tbl_producto p  on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad un on (un.id_unidadventa=dp.id_unidadventa);

create or replace view almacen.v_lotes_proximo_vencer
as
select
	nro__lote,
	lt.fecha__registro,
	lt.fecha__vencimiento,
	p.descripcion_larga as producto,
	un.desc_corta as unidad,
	lt.stock,
	lt.stock__inicial,
	lt.costo__inicial,
	lt.valor__actual,
	lt.id__producto,
	lt.id__unidadventa,
	lt.id__lote,
	lt.id__sucursal,
	lt.id__estado,
	p.codigo
from almacen.tbl__lote lt
inner join almacen.tbl_detproducto dp on (dp.id_producto=lt.id__producto and dp.id_unidadventa=lt.id__unidadventa)
inner join almacen.tbl_producto p  on (p.id_producto=dp.id_producto)
inner join almacen.tbl_unidad un on (un.id_unidadventa=dp.id_unidadventa)
order by lt.id__producto,lt.fecha__vencimiento asc;

CREATE OR REPLACE  VIEW ALMACEN.V_MODELO
AS
SELECT
	m.id_modelo,
	m.descripcion_larga,
	m.descripcion_corta,
	mr.descripcion_larga as marca,
	e.des_estado as estado,
	m.id_marca,
	m.versions,
	m.potencia_motor,
	m.combustible1,
	m.combustible2,
	m.carroceria,
	m.formula_rodante,
	m.nro_ruedas,
	m.traccion,
	m.nro_ejes,
	m.dist_entre_ejes,
	m.longitud,
	m.ancho,
	m.nro_puertas,
	m.peso_bruto,
	m.peso_neto,
	m.carga_util,
	m.nro_asientos,
	m.nro_pasajeros,
	m.nro_cilindros,
	m.cilindrada,
	m.codigo_cayman,
	m.id_estado,
	m.tiempo_garantia,
	m.altura
  FROM almacen.tbl_modelo m
	inner join almacen.tbl_marca mr on (mr.id_marca=m.id_marca)
	inner join common.tbl_estado e on (e.id_estado=m.id_estado);

CREATE OR REPLACE view SERVICIOS.V_TIPO_SERVICIO
AS
SELECT id_tipo_servicio,descripcion_larga,descripcion_corta,genera_informe,importe,id_estado FROM SERVICIOS.TBL_TIPO_SERVICIO;

CREATE OR REPLACE VIEW servicios.v_listar_citas
AS
 SELECT
    c.id_cita,
    c.nro_placa,
    m.descripcion_larga as modelo,
    c.fecha_emision,
    tc.descripcion_larga as nombre,
    c.observaciones_srv as obs_servicio,
    c.libro_servicio,
    c.fec_servicio_anterior,
    c.km_serv_anterior,
    c.recomendacion_srv_anterior,
    c.id_tipo_servicio_anterior,
    c.id_tipo_servicio,
    c.fec_inicio_problema,
    c.frecuencia_problema,
    c.lugar_problema,
    c.otros_problemas,
    c.detalle_problema,
    c.fecha_recepcion,
    c.hora_recepcion,
    c.ingresa_cliente,
    c.recoge_empresa,
    c.fecha_entrega,
    c.hora_entrega,
    c.entregar_en_taller,
    c.entregar_en_casa,
    c.id_sucursal,
    c.id_estado,
    c.id_cliente,
    c.id_direccion,
    cli.doc_persona as nro_documento,
    cli.nombre_razon AS cliente,
    dir.direccion,
    cli.id_persona,
    c.id_modelo
   FROM servicios.tbl_cita c
     JOIN servicios.tbl_tipo_servicio tc ON c.id_tipo_servicio = tc.id_tipo_servicio
     JOIN ventas.tbl_direccion dir on (dir.id_direccion=c.id_direccion)
     JOIN planillas.tbl_persona cli ON dir.id_persona=cli.id_persona
     INNER JOIN ALMACEN.TBL_MODELO M ON (M.ID_MODELO=C.ID_MODELO)
     ;

CREATE OR REPLACE VIEW SERVICIOS.V_ESTACION_SUCURSAL
AS
SELECT id_estacion_sucursal,DESCRIPCION_LARGA,ID_SUCURSAL,E.ID_ESTADO FROM SERVICIOS.TBL_ESTACION E
INNER JOIN SERVICIOS.TBL_EST_SUCURSAL ES ON (E.ID_ESTACION=ES.ID_ESTACION)

CREATE OR REPLACE VIEW SERVICIOS.V_ESTADO_SERVICIO
AS
select id_estadosrv,descripcion_larga,id_estado from SERVICIOS.tbl_estadoservicio

create or replace view common.v_prioridad
as
select id_prioridad,descripcion_larga,id_estado from common.tbl_prioridad

select *from servicios.v_servicios

CREATE OR REPLACE VIEW servicios.v_servicios
AS
SELECT
    s.id_servicio,
    s.id_sucursal,
    s.fecha_servicio AS fecha,
    c.nombre_razon AS cliente,
    c.doc_persona,
    COALESCE(cc.apellidos || ' ' || cc.nombres, ''::character varying) AS usuario,
    COALESCE(tlf.telefono,'') as telefono,
    COALESCE(ts.descripcion_larga,'') AS servicio,
    s.id_estado,
    --nort_servicios.ips_get_serv_facturacion(s.id_servicio, s.id_susucrsal) AS estado,
    s.id_cliente,
    s.serie,
    s.numero,
    ''::text AS ficha,
    t.nombre AS tienda,
    COALESCE(cc.dni, ''::bpchar) AS doc_usuario,
    COALESCE(cc.telefono, '--'::character varying) AS tlf_usuario,
    COALESCE(s.id_sucursal_cita,0) as id_sucursal_cita,
    COALESCE(s.id_cita,0) as id_cita,
    cp.id_contacto,--id_contacpersona,
   COALESCE( (((p.apell_paterno::text || ' '::text) || p.apell_materno::text) || ' '::text) || p.nombres::text,p.nombre_razon) AS tecnico,
    p.id_persona AS idtecnico,
    s.id_estacion_sucursal,
    s.id_prioridad,
    s.id_tipo_servicio,
    s.id_comprobante,
    s.id_tipoventa,
    s.id_operacion,
    COALESCE(sp.nro_serie, ''::character varying) AS nroserie,
    COALESCE(sp.nro_chasis, ''::character varying) AS nro_chasis,
    col.id_color,
    mod.id_modelo,
    COALESCE(sp.anio_faricacion, 0) AS anio_fabricacion,
    COALESCE(sp.nro_placa, ''::bpchar) AS nro_placa,
    COALESCE(ss.km, ''::text) AS km,
    COALESCE(sp.id_serie,0) as id_serie,
    s.fecha_entrada,
    s.fecha_tentativa_entrega,
    dc.id_direccion,
    COALESCE(s.imp_bruto, 0::numeric) AS imp_bruto,
    COALESCE(s.imp_dscto, 0::numeric) AS dscto,
    COALESCE(s.imp_venta, 0::numeric) AS sub_total,
    COALESCE(s.imp_igv, 0::numeric) AS imp_igv,
    COALESCE(s.imp_total, 0::numeric) AS total,
    COALESCE(s.requerimiento, ''::text) AS requerimiento,
    dc.direccion,
    COALESCE(cc.celular, ''::text) AS celular,
    s.imp_repuestos,
    s.imp_accesorios,
    s.imp_lubricantes,
    s.imp_servicios,
    s.hora_tentativa_entrega,
    COALESCE(s.serie::text, '0001'::text) || s.numero::text AS documento,
    COALESCE(s.nro_ficha, '-'::bpchar) AS nro_ficha,
        CASE
            WHEN s.fecha_entrega IS NULL THEN ' '::text
            ELSE 'Entregado'::text
        END AS estado_entrega,
    s.informe,
    s.fecha_entrega,
    COALESCE(to_char(s.fecha_entrega, 'dd/mm/yyyy'::text), 'Pendiente'::text) AS fec_entrega_listado,
    S.id_estadosrv
 FROM servicios.tbl_servicio s
     JOIN ventas.tbl_direccion dc  on dc.id_direccion=s.id_direccion and dc.id_persona=s.id_cliente
     left JOIN  common.tbl_telefono tlf ON (tlf.id_direccion=DC.id_direccion AND DC.id_persona=tlf.id_persona AND tlf.predeterminado=TRUE )
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     LEFT JOIN ventas.tbl_contacpersona cp ON cp.id_contacpersona = s.id_usuario_servicio
     inner join ventas.tbl_contacto cc on (cc.id_contacto=cp.id_contacto)
     JOIN planillas.tbl_persona p ON p.id_persona::text = s.id_tecnico::text
     JOIN common.tbl_sucursal t ON t.id_sucursal = s.id_sucursal
     JOIN servicios.tbl_tipo_servicio ts ON ts.id_tipo_servicio = s.id_tipo_servicio
     LEFT JOIN SERVICIOS.TBL_SERVICIO_SERIE ss ON s.id_servicio=ss.id_servicio and  s.id_sucursal=ss.id_sucursal
     LEFT JOIN ALMACEN.TBL_SERIEPRODUCTO sp ON sp.id_serie = ss.id_serie
     LEFT JOIN ALMACEN.TBL_COLOR COL ON  COL.ID_COLOR=SS.ID_COLOR
     LEFT JOIN ALMACEN.TBL_MODELO MOD ON (MOD.ID_MODELO=SS.ID_MODELO)

  ORDER BY 1 ASC;

create or replace view servicios.v_detservicio
as
select
p.id_producto,
ds.id_almacen,
p.descripcion_larga as producto,
un.desc_corta as unidad,
ds.cantidad,
ds.lista,
ds.imp_precio,
ds.imp_igv,
ds.imp_total,
ds.item,
ds.porcent_igv,
p.servicio as crla_stock,
pre.coste,
ds.id_estado,
ds.imp_venta,
ds.imp_bruto,
0 as porcent_dscto,
pre.val_unidad,
pre.val_minimo_venta,
ds.id_unidadventa,
0 as IdTipoPrecios,
ds.id_listaprecio,
ds.r,
ds.a,
ds.l,
ds.s,
2 as op,
0 as id_personal,
g.descripcion_larga as patron,
ds.id_detservicio,
ds.id_servicio,
ds.id_sucursal
from servicios.tbl_detservicio ds
inner join almacen.tbl_precio pre on (pre.id_producto=ds.id_producto and  pre.id_unidadventa=ds.id_unidadventa and pre.id_listaprecio=ds.id_listaprecio)
inner join almacen.tbl_producto p on (p.id_producto=pre.id_producto)
inner join almacen.tbl_unidad un on (un.id_unidadventa=pre.id_unidadventa)
inner join almacen.tbl_familia f on (f.id_familia=p.id_familia)
inner join almacen.tbl_grupo g on (g.id_grupo=f.id_grupo)

create or replace  view compras.v_serie_compra
as
select
sc.item,
cp.nro_serie,
cp.nro_chasis,
cp.anio_modelo,
cp.anio_faricacion,
cp.id_serie,
cp.id_producto,
cp.id_unidadventa,
cp.id_estado,
cp.id_almacen,
2 as op,
sc.id__compra,
sc.id_sucursalcompra as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_seriecompra sc on (cp.id_serie=sc.id_serie)

create or replace  view almacen.v_serie_movalmacen
as
select
sc.item,
cp.nro_serie,
cp.nro_chasis,
cp.anio_modelo,
cp.anio_faricacion,
cp.id_serie,
cp.id_producto,
cp.id_unidadventa,
cp.id_estado,
cp.id_almacen,
2 as op,
sc.id_movimiento,
sc.id_sucursal as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_seriemovalm sc on (cp.id_serie=sc.id_serie)

select *from almacen.v_serie_producto

create or replace  view almacen.v_serie_producto
as
select distinct
cp.nro_serie,
cp.nro_chasis,
cp.anio_modelo,
cp.anio_faricacion,
cp.id_serie,
cp.id_producto,
cp.id_unidadventa,
cp.id_estado,
cp.id_almacen,
s.id_sucursal,
alm.descalmacen
from almacen.tbl_serieproducto cp
inner join almacen.tbl_detproducto dp on (dp.id_producto=cp.id_producto and dp.id_unidadventa=dp.id_unidadventa)
inner join almacen.tbl_almacen alm on (alm.id_almacen=cp.id_almacen)
inner join common.tbl_sucursal s on (s.id_sucursal=alm.id_sucursal)
where cp.id_estado not in(18,7);

update almacen.tbl_serieproducto set id_estado=1

select *from common.tbl_estado order by 1

select *from almacen.tbl_almacen

create or replace  view ventas.v_serie_venta
as
select
cp.id_serie,
cp.nro_serie,
cp.nro_chasis,
sc.id_estado,
cp.id_producto,
cp.id_unidadventa,
cp.id_almacen,
2 as op,
sc.id_serieventa,
cp.anio_modelo,
cp.anio_faricacion,
sc.id_facturacion,
sc.id_sucursal as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_serieventa sc on (cp.id_serie=sc.id_serie)
where sc.id_estado=18

create or replace  view almacen.v_serie_notasalida
as
select
cp.id_serie,
cp.nro_serie,
cp.nro_chasis,
sc.id_estado,
cp.id_producto,
cp.id_unidadventa,
cp.id_almacen,
2 as op,
sc.id_serieventa,
cp.anio_modelo,
cp.anio_faricacion,
sc.id_notasalida,
sc.id_sucursal as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_serienotasalida sc on (cp.id_serie=sc.id_serie)
where sc.id_estado=18

create or replace  view ventas.v_serie_guia
as
select
cp.id_serie,
cp.nro_serie,
cp.nro_chasis,
COALESCE(sc.id_estado,18) as id_estado,
cp.id_producto,
cp.id_unidadventa,
cp.id_almacen,
2 as op,
sc.id_serieguia,
cp.anio_modelo,
cp.anio_faricacion,
sc.id_guia,
sc.id_sucursal as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_serieguia sc on (cp.id_serie=sc.id_serie)
--where sc.id_estado=18

create or replace  view ventas.v_serie_preventa
as
select
cp.id_serie,
cp.nro_serie,
cp.nro_chasis,
sc.id_estado,
cp.id_producto,
cp.id_unidadventa,
cp.id_almacen,
2 as op,
sc.id_serieventa,
cp.anio_modelo,
cp.anio_faricacion,
sc.id_cotizapreventa,
sc.id_sucursal as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_seriecotizacionpreventa sc on (cp.id_serie=sc.id_serie)
where sc.id_estado=18

SELECT *FROM COMMON.TBL_ESTADO

select * from ventas.v_serie_notacredito   where id_facturacion=22 and id_sucursal=1

create or replace  view ventas.v_serie_notacredito
as
select
cp.id_serie,
cp.nro_serie,
cp.nro_chasis,
sc.id_estado,
cp.id_producto,
cp.id_unidadventa,
cp.id_almacen,
2 as op,
sc.id_serieventa,
cp.anio_modelo,
cp.anio_faricacion,
sc.id_facturacion,
sc.id_sucursal as id_sucursal
from almacen.tbl_serieproducto cp
inner join almacen.tbl_serieventa sc on (cp.id_serie=sc.id_serie)
---where sc.id_estado=19

select *from common.v_reportes

create or replace view common.v_reportes
as
select id_reporte,descripcion,path,item,id_estado from common.tbl_reportes

create or replace view ventas.v_actaentrega
as
select
	f.id_facturacion,
	f.id_sucursal,
	cli.nombre_razon as cliente,
	cli.doc_persona as nro_documento,
	s.nombre as sucursal ,
	vend.nombre_razon as vendedor,
	mod.descripcion_larga as modelo,
	col.descripcion_larga as color,
	mar.descripcion_larga as marca,
	ser.nro_serie as nro_motor,
	ser.nro_chasis
	from ventas.tbl_facturacion f
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)
inner join ventas.tbl_direccion dir on (dir.id_direccion=f.id_direccion and f.id_cliente=dir.id_persona)
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join almacen.tbl_serieventa sv on (f.id_facturacion=sv.id_facturacion and f.id_sucursal=sv.id_sucursal)
inner join almacen.tbl_serieproducto ser on (ser.id_serie=sv.id_serie)
inner join almacen.tbl_detproducto dp on (dp.id_producto=ser.id_producto and dp.id_unidadventa=ser.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join planillas.tbl_persona vend on (vend.id_persona=f.id_vendedor)
inner join almacen.tbl_modelo mod on (mod.id_modelo=p.id_modelo)
inner join almacen.tbl_marca mar on (mar.id_marca=mod.id_marca)
inner join almacen.tbl_color col on (col.id_color=p.id_color)
where sv.id_estado<>7

create or replace view ventas.v_clausulaadicional
as
select
	f.id_facturacion,
	f.id_sucursal,
	cli.nombre_razon as cliente,
	cli.doc_persona as nro_documento,
	s.nombre as sucursal ,
	(cp.descripcion_corta || '/' || f.serie_facturacion || '-' || f.numdoc_facturacion) as comprobante,
	emp.nombre as razon_social,
	emp.ruc,
	emp.dni_representante,
	emp.direccion,
	mar.descripcion_larga as marca,
	f.imp_neto as total,
	to_char(f.fecha_Venta::date,'dd/mm/yyyy') as fecha,
	emp.rep_legal
	from ventas.tbl_facturacion f
	inner join common.tbl_comprobante cp on (cp.id_comprobante=f.id_comprobante)
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)
inner join common.tbl_empresa emp on (emp.id_empresa=s.id_empresa)
inner join ventas.tbl_direccion dir on (dir.id_direccion=f.id_direccion and f.id_cliente=dir.id_persona)
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join almacen.tbl_serieventa sv on (f.id_facturacion=sv.id_facturacion and f.id_sucursal=sv.id_sucursal)
inner join almacen.tbl_serieproducto ser on (ser.id_serie=sv.id_serie)
inner join almacen.tbl_detproducto dp on (dp.id_producto=ser.id_producto and dp.id_unidadventa=ser.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join almacen.tbl_modelo mod on (mod.id_modelo=p.id_modelo)
inner join almacen.tbl_marca mar on (mar.id_marca=mod.id_marca)

create or replace view ventas.v_cartapoder
as
select
	f.id_facturacion,
	f.id_sucursal,
	cli.nombre_razon as cliente,
	cli.doc_persona as nro_documento,
	s.nombre as sucursal ,
	vend.nombre_razon as vendedor,
	mod.descripcion_larga as modelo,
	col.descripcion_larga as color,
	mar.descripcion_larga as marca,
	ser.nro_serie as nro_motor,
	ser.nro_chasis,
	(dir.direccion || '-' || trim(dto.departamento) || '-'|| trim(prov.provincia) || '-'|| trim(dis.distrito)) as direccion
	from ventas.tbl_facturacion f
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)
inner join ventas.tbl_direccion dir on (dir.id_direccion=f.id_direccion and f.id_cliente=dir.id_persona)
inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
inner join ventas.tbl_zona z on (z.id_zona=sec.id_zona)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
inner join common.tbl_provincia prov on prov.id_provincia=dis.id_provincia
inner join common.tbl_dpto dto on  dto.id_dpto=prov.id_dpto
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join almacen.tbl_serieventa sv on (f.id_facturacion=sv.id_facturacion and f.id_sucursal=sv.id_sucursal)
inner join almacen.tbl_serieproducto ser on (ser.id_serie=sv.id_serie)
inner join almacen.tbl_detproducto dp on (dp.id_producto=ser.id_producto and dp.id_unidadventa=ser.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join planillas.tbl_persona vend on (vend.id_persona=f.id_vendedor)
inner join almacen.tbl_modelo mod on (mod.id_modelo=p.id_modelo)
inner join almacen.tbl_marca mar on (mar.id_marca=mod.id_marca)
inner join almacen.tbl_color col on (col.id_color=p.id_color)
where sv.id_estado<>7

create or replace view ventas.v_documentoprivadoentrega
as
select
	f.id_facturacion,
	f.id_sucursal,
	cli.nombre_razon as cliente,
	cli.doc_persona as nro_documento,
	s.nombre as sucursal ,
	vend.nombre_razon as vendedor,
	mod.descripcion_larga as modelo,
	col.descripcion_larga as color,
	mar.descripcion_larga as marca,
	ser.nro_serie as nro_motor,
	ser.nro_chasis,
	mod.carroceria,
	ser.nro_placa,
	(dir.direccion || '-' || trim(dto.departamento) || '-'|| trim(prov.provincia) || '-'|| trim(dis.distrito)) as direccion,
	emp.direccion as direccion_empresa,
	(cp.descripcion_corta || '/' || f.serie_facturacion || '-' || f.numdoc_facturacion) as comprobante,
	f.fecha_venta
	from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on (cp.id_comprobante=f.id_comprobante)
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)
inner join common.tbl_empresa emp on emp.id_empresa=s.id_empresa
inner join ventas.tbl_direccion dir on (dir.id_direccion=f.id_direccion and f.id_cliente=dir.id_persona)
inner join ventas.tbl_sector sec on (sec.id_sector=dir.id_sector)
inner join ventas.tbl_zona z on (z.id_zona=sec.id_zona)
inner join common.tbl_distrito dis on (dis.id_distrito=z.id_distrito)
inner join common.tbl_provincia prov on prov.id_provincia=dis.id_provincia
inner join common.tbl_dpto dto on  dto.id_dpto=prov.id_dpto
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join almacen.tbl_serieventa sv on (f.id_facturacion=sv.id_facturacion and f.id_sucursal=sv.id_sucursal)
inner join almacen.tbl_serieproducto ser on (ser.id_serie=sv.id_serie)
inner join almacen.tbl_detproducto dp on (dp.id_producto=ser.id_producto and dp.id_unidadventa=ser.id_unidadventa)
inner join almacen.tbl_producto p on (p.id_producto=dp.id_producto)
inner join planillas.tbl_persona vend on (vend.id_persona=f.id_vendedor)
inner join almacen.tbl_modelo mod on (mod.id_modelo=p.id_modelo)
inner join almacen.tbl_marca mar on (mar.id_marca=mod.id_marca)
inner join almacen.tbl_color col on (col.id_color=p.id_color)
where sv.id_estado<>7

create or replace view ventas.v_cartacompromiso
as
select
	f.id_facturacion,
	f.id_sucursal,
	cli.nombre_razon as cliente,
	cli.doc_persona as nro_documento,
	s.nombre as sucursal ,
	emp.direccion as direccion_empresa,
	(cp.descripcion_corta || '/' || f.serie_facturacion || '-' || f.numdoc_facturacion) as comprobante,
	f.fecha_venta,
	emp.nombre as empresa,
	emp.ruc as ruc_empresa
	from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on (cp.id_comprobante=f.id_comprobante)
inner join common.tbl_sucursal s on (s.id_sucursal=f.id_sucursal)
inner join common.tbl_empresa emp on emp.id_empresa=s.id_empresa
inner join ventas.tbl_direccion dir on (dir.id_direccion=f.id_direccion and f.id_cliente=dir.id_persona)
inner join planillas.tbl_persona cli on (cli.id_persona=dir.id_persona)
inner join almacen.tbl_serieventa sv on (f.id_facturacion=sv.id_facturacion and f.id_sucursal=sv.id_sucursal)
where sv.id_estado<>7

create or replace view almacen.v_producto_modelo
as
select
p.id_producto,
p.codigo,
p.descripcion_larga as producto,
COALESCE(mod.descripcion_larga,'') as modelo,
c.descripcion_larga as color,
 almacen.f_stock_unides(p.id_producto,al.id_sucursal) AS stock_fisico,
 f.descripcion_larga as familia ,
 p.gestiona_series as solicitar_serie
 from almacen.tbl_producto p
left join almacen.tbl_modelo mod on mod.id_modelo=p.id_modelo
inner join almacen.tbl_color c on  c.id_color=p.id_color
JOIN almacen.tbl_detproducto dp ON p.id_producto::text = dp.id_producto::text AND dp.unidad_inventario = true
JOIN almacen.tbl_unidad u ON u.id_unidadventa = dp.id_unidadventa
JOIN almacen.tbl_existencia ex ON dp.id_producto::text = ex.id_producto::text AND dp.id_unidadventa = ex.id_unidadventa
JOIN almacen.tbl_almacen al ON al.id_almacen = ex.id_almacen
JOIN common.tbl_sucursal suc ON suc.id_sucursal = al.id_sucursal
INNER JOIN ALMACEN.TBL_FAMILIA F ON (F.ID_FAMILIA=P.ID_FAMILIA)

select *from almacen.tbl_producto where

create or replace view creditos.v_factorcreditos
as
 SELECT id_prodcreditos,
    imp_desde,
    imp_hasta,
    plazo_desde,
    plazo_hasta,
    id_estado,
    tasa1,
    tasa2,
    tasa3,
    tasa4
   FROM creditos.tbl_prodcredito
  ORDER BY id_prodcreditos;

create or replace view ventas.v_vales_x_factura
as
select lpad(serie_vale,4,'0') || '-' || lpad(nro_vale,7,'0') as Nro_Vale,
	fec_emision as fecha,
	cli.nombre_razon,
	imp_vale,
	id_sucursal,
	id_facturacion,
	vc.id_vale,
	vc.id_sucrusal_vale
from ventas.tbl_valesconsumo vc
inner join  ventas.tbl_facvale fv on vc.id_vale=fv.id_vale and vc.id_sucrusal_vale=fv.id_sucrusal_vale
inner join ventas.tbl_direccion dir on dir.id_direccion=vc.id_direccion and dir.id_persona=vc.id_cliente
inner join planillas.tbl_persona cli on cli.id_persona=dir.id_persona;

create or replace view configuracion.v_documentocliente
as
select cd.id_persona,p.nombre_razon as cliente,p.doc_persona,c.descripcion_larga,c.descripcion_corta,c.id_comprobante,cd.id_sucursal,ID_DOCLI,cd.id_estado,cd.obs from CONFIGURACION.TBL_DOCUMENTOCLIENTE cd
inner join planillas.tbl_persona p on p.id_persona=cd.id_persona
inner join common.tbl_comprobante c on c.id_comprobante=cd.id_comprobante

CREATE OR REPLACE VIEW ventas.v__registro__percepcion
 AS
 SELECT (((cp.descripcion_corta::text || '/'::text) || p.serie::text) || '-'::text) || p.numero::text AS documento,
    to_char(p.fecha, 'dd/mm/yyyy'::text) AS fecha,
    case when p.id_estado<>1 then  cli.nombre_razon || '(' || 'ANULADO' ||')' ELSE  cli.nombre_razon end AS cliente,
    m.simbolo AS moneda,
    case when p.id_estado=1 then dp.imp_venta else 0::numeric(20,4) end as imp_venta,
    dp.porcent_percepcion,
    case when p.id_estado=1 then dp.imp_percepcion else 0::numeric(20,4) end imp_percepcion,
    case when p.id_estado=1 then dp.imp_totalcobrado else 0::numeric(20,4) end imp_totalcobrado,
    p.id_percepcion,
    p.id_sucursal,
    p.id_cliente,
    p.id_direccion,
    p.id_moneda,
    p.id_comprobante,
    p.serie,
    p.numero,
    cli.doc_persona  AS doc_cliente,
    p.id_estado,
    s.id_empresa,
    (((cpf.descripcion_corta::text || '/'::text) || fac.serie_facturacion::text) || '-'::text) || fac.numdoc_facturacion::text AS documentoref,
    to_char(fac.fecha_venta, 'dd/mm/yyyy'::text) AS fecha_venta
   FROM ventas.tbl_percepcion p
     JOIN ventas.tbl_detpercepcion dp ON p.id_percepcion = dp.id_percepcion AND p.id_sucursal = dp.id_sucursal
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = p.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = p.id_moneda
     JOIN planillas.tbl_persona cli ON cli.id_persona::text = p.id_cliente::text
     JOIN common.tbl_sucursal s ON s.id_sucursal = p.id_sucursal
     JOIN ventas.tbl_facturacion fac ON fac.id_facturacion = dp.id_facturacion AND fac.id_sucursal = dp.id_sucursalfac
     JOIN common.tbl_comprobante cpf ON cpf.id_comprobante = fac.id_comprobante
  ORDER BY p.serie, p.numero;

CREATE OR REPLACE VIEW compras.v_comprasxproducto AS
 SELECT f.nro_doc_compra,
    f.serie,
    f.id_comprobante,
    f.id_dirproveedor,
    f.id_proveedor,
    f.id_sucursalcompra,
    c.doc_persona AS documento,
    c.nombre_razon AS proveedor,
    dc.direccion,
    f.fec_documento,
    (((cp.descripcion_corta::text || '/'::text) || f.serie::text) || '-'::text) || f.nro_doc_compra::text AS nro_documento,
    f.imp_venta AS valor_venta,
    f.imp_igv,
    f.imp_total,
    df.cantidad,
    df.precio,
    p.descripcion_larga::text ||
        CASE
            WHEN df.precio = 0::numeric THEN '
TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,
    df.imp_total AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_compra,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    0.00 AS coste,
    dp.val_unidad,
    dp.val_minimo,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    fa.descripcion_larga AS familia,
    fa.id_familia
   FROM compras.tbl_compra f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_dirproveedor AND dc.id_persona::text = f.id_proveedor::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN compras.tbl_detcompra df ON f.id_sucursalcompra = df.id_sucursalcompra AND f.anio = df.anio AND f.id_compra = df.id_compra AND f.id_mes = df.id_mes
     JOIN almacen.tbl_existencia tp ON tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa AND tp.id_almacen = df.id_almacen AND tp.id_inventario = df.id_inventario
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = tp.id_producto::text
     JOIN almacen.tbl_familia fa ON fa.id_familia = p.id_familia
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa;

create schema estadisticos;

create or replace view estadisticos.v_ventas_vendedor
as
SELECT V.NOMBRE_RAZON AS VENDEDOR,SUM(F.IMP_NETO) as Importe,date_part('month',f.fecha_venta::date) as mes,date_part('year',f.fecha_venta::date) as year,f.id_sucursal
FROM VENTAS.TBL_FACTURACION F
INNER JOIN PLANILLAS.TBL_PERSONA V ON V.ID_PERSONA=F.ID_VENDEDOR
where f.id_estado=1
GROUP BY V.NOMBRE_RAZON,date_part('month',f.fecha_venta::date) ,date_part('year',f.fecha_venta::date),f.id_sucursal

create or replace view almacen.v_Listmarcafamilia
as
select m.id_marca,m.descripcion_larga as marca,f.id_familia,f.descripcion_larga as familia from almacen.tbl_marca m
inner join almacen.tbl_familiamarca fa  on fa.id_marca=m.id_marca
inner join almacen.tbl_familia f on f.id_familia=fa.id_familia
where m.id_estado=1 and f.id_estado=1

CREATE OR REPLACE VIEW creditos.v_estado_cuenta_proveedor
AS
 SELECT cc.nro_letra AS letra,
    c.documento,
    cred.fec_emision AS fec_credito,
    cc.fec_vencimiento::date - cred.fec_emision::date AS dias,
    c.moneda::character varying(5) AS moneda,
    c.proveedor::character varying(100) AS _proveedor,
    cc.fec_vencimiento,
    cc.imp_cuota AS cargo,
    COALESCE(( SELECT sum(dp_1.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota dp_1
          WHERE dp_1.id_credito = cc.id_credito AND dp_1.id_sucursal_credito = cc.id_sucursal_credito AND dp_1.id_estado = 1 AND cc.id_cuotas = dp_1.id_cuotas), 0::numeric) AS abono,
    cc.imp_cuota - COALESCE(( SELECT sum(cmov_1.imp_pago) AS sum
           FROM creditos.tbl_detpagocuota cmov_1
          WHERE cred.id_credito = cmov_1.id_credito AND cred.id_sucursal_credito = cmov_1.id_sucursal_credito AND cmov_1.id_estado = 1 AND cc.id_cuotas = cmov_1.id_cuotas), 0::numeric)
          - COALESCE(( SELECT sum(nc_1.imp_dscto) AS sum
           FROM creditos.tbl_cuota_notacredito nc_1
          WHERE cred.id_credito = nc_1.id_credito AND cred.id_sucursal_credito = nc_1.id_sucursal_cred), 0::numeric) AS saldo,
    c.imp_total + COALESCE(( SELECT sum(c_1.imp_interes) AS sum
           FROM creditos.tbl_cuota c_1
          WHERE cred.id_credito = c_1.id_credito AND cred.id_sucursal_credito = c_1.id_sucursal_credito), 0.00) AS total_venta,
    c.tipo_venta,
    0 AS _id_compra,
    1 AS _id_sucursalcompra,
    c.id_proveedor::character varying(15) AS _id_proveedor,
    0::bigint AS _id_dirproveedor,
    cred.id_credito AS _id_credito,
    cred.id_sucursal_credito AS _id_sucursal_credito,
    c.comprobante,
    ''::character(4) AS serie,
    ''::character(7) AS _nro_doc_compra,
    c.doc_persona::character(11) AS _dni,
    e.des_estado::text AS estado,
    cred.id_estado,
    COALESCE(cb.descripcion, ''::character varying) AS banco,
    cc.nro_unico_pago,
    cc.fecha_protesto,
    COALESCE(( SELECT sum(nc_1.imp_dscto) AS sum
           FROM creditos.tbl_cuota_notacredito nc_1
          WHERE cred.id_credito = nc_1.id_credito AND cred.id_sucursal_credito = nc_1.id_sucursal_cred), 0::numeric)  as importe_nc
   FROM creditos.tbl_credito cred
     JOIN creditos.tbl_cuota cc ON cc.id_credito = cred.id_credito AND cc.id_sucursal_credito = cred.id_sucursal_credito
     LEFT JOIN planillas.tbl_nrocuenta nc ON nc.id_nrocuenta = cred.id_nrocuenta
     LEFT JOIN caja.tbl_cajabanco cb ON cb.id_cajabanco = nc.id_banco
     LEFT JOIN common.tbl_estado e ON e.id_estado = cred.id_estado
     JOIN LATERAL creditos.list_agrupadocscompras(cred.id_credito, cred.id_sucursal_credito) c(documento, id_credito, id_sucursal, moneda, tipo_venta, proveedor, imp_total, doc_persona, comprobante, id_proveedor, id_moneda) ON cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal
  WHERE cred.id_estado = 1
  ORDER BY (c.id_proveedor::bigint), cc.id_cuotas;

select *from creditos.tbl_credito cred

select *from planillas.tbl_nrocuenta

create or replace view CREDITOS.v_vaucher
as
select id_movimcaja,id_sucursal,vaucher from caja.tbl_movcaja --limit 10

CREATE OR REPLACE VIEW CONTABILIDAD.V_REGISTROVENTAS

AS
select
tdo.id_comprobante as codigo_Tdo,
tdo.descripcion_corta  as TipoDoc,
det.serie,
det.numero NumeroDoc_das,
to_char(det.fechadoc_das,'dd/mm/yyyy') Fecha,
date_part('day',fechadoc_das::date) Dia,
rub.descripcion_larga Rubro,
pc.nro_cuenta Cuenta ,
pc.nombre_cuenta NombreCuenta,
sum(COALESCE(debe_das,0)) Debe,
sum(COALESCE(haber_das,0)) Haber,
ABS( sum(COALESCE(debe_das,0)) -  sum(COALESCE(haber_das,0)))::numeric(20,4) Importe,
case LEFT (pc.numeracion_cta,2) when '40' then 'igv' ELSE 'venta' END TIPO,
det.responsable responsable_das ,
det.id_estado estado_das,
contabilidad.list_detalle_op(cab.id_auxiliar,det.id_movasientos) CODIGO_MOVTABLA  ,
det.doc__persona     ,
cab.id_empresa,
det.id_sucursal,
det.id_mes,
det.anio
 from contabilidad.tbl__detalle__asiento__contable det  inner join
contabilidad.tbl__asiento__contable cab   on cab.id_asiento = det.id_asiento inner join
common.tbl_comprobante tdo   on tdo.id_comprobante = det.id_comprobante inner join
contabilidad.tbl_plancuenta pc   on pc.id_plancuenta = det.id_plancuenta INNER JOIN
 almacen.tbl_producto RUB  ON RUB.id_producto = DET.id_producto
where cab.id_auxiliar = 2
and det.id_comprobante  in (3,2,19)
--and mes_asi =1
and LEFT (numeracion_cta,2) in ('40','70','75','77')
group by
tdo.descripcion_corta,
det.numero,
pc.nombre_cuenta,
pc.nro_cuenta,
to_char(det.fechadoc_das,'dd/mm/yyyy'),
rub.descripcion_larga ,
det.responsable,
tdo.id_comprobante ,
det.id_estado ,
det.id_movasientos,
date_part('day',fechadoc_das::date) ,
pc.numeracion_cta,
det.serie  ,
det.doc__persona ,cab.id_auxiliar,cab.id_empresa,
det.id_sucursal,det.id_mes,det.anio
order by tdo.descripcion_corta,   det.serie   ,
det.numero

create or replace view contabilidad.v_regventascontabilidad
as
select

	fecha,
	tipodoc,
	serie,
	NumeroDoc_das as numero,
	doc__persona as codigo,
	responsable_das as cliente,
	0 as valor_venta,
	sum(importe) as imp_igv,
	0::numeric(20,4) as total,
	listar(tipo),
	codigo_Tdo,
	estado_das,
	CODIGO_MOVTABLA,
	id_empresa,
	id_sucursal,
	id_mes,
	anio
from CONTABILIDAD.V_REGISTROVENTAS
where tipo= 'igv'
group by
fecha,
tipodoc,
serie,
NumeroDoc_das,
NumeroDoc_das ,
responsable_das,
codigo_Tdo,doc__persona,estado_das,total,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio
union
select

	fecha,
	tipodoc,
	serie,
	NumeroDoc_das as numero,
	doc__persona as codigo,
	responsable_das as cliente,
	sum(importe) as valor_venta,
	0 as imp_igv,
	0::numeric(20,4) as total,
	listar(tipo),
	codigo_Tdo,
	estado_das,
	CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio
from CONTABILIDAD.V_REGISTROVENTAS
where tipo ilike '%venta%'

group by
fecha,
tipodoc,
serie,
NumeroDoc_das,
NumeroDoc_das ,
responsable_das,
codigo_Tdo,doc__persona,estado_das,total,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio;

select *from CONTABILIDAD.V_PIVOTLIBROVENTAS

create or replace  VIEW CONTABILIDAD.V_PIVOTLIBROVENTAS
AS
select

	fecha,
	tipodoc,
	serie,
	numero ,
	codigo  ,
	cliente  ,
	sum(valor_venta) as valor_venta,
	sum(imp_igv) as imp_igv,
	sum(valor_venta)+sum(imp_igv)  as total,
	codigo_Tdo,
	estado_das,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio
from contabilidad.v_regventascontabilidad
group by
fecha,
tipodoc,
serie,
numero,
codigo ,
cliente,
codigo_Tdo,codigo,estado_das,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio;

CREATE OR REPLACE VIEW contabilidad.v_regventascontabilidad AS
 SELECT v_registroventas.fecha,
    v_registroventas.tipodoc,
    v_registroventas.serie,
    v_registroventas.numerodoc_das AS numero,
    v_registroventas.doc__persona AS codigo,
    v_registroventas.responsable_das AS cliente,
    0 AS valor_venta,
    sum(v_registroventas.importe) AS imp_igv,
    0::numeric(20,4) AS total,
    listar(v_registroventas.tipo) AS listar,
    v_registroventas.codigo_tdo,
    v_registroventas.estado_das,
    v_registroventas.codigo_movtabla,
    v_registroventas.id_empresa,
    v_registroventas.id_sucursal,
    v_registroventas.id_mes,
    v_registroventas.anio
   FROM contabilidad.v_registroventas
  WHERE v_registroventas.tipo = 'igv'::text
  GROUP BY v_registroventas.fecha, v_registroventas.tipodoc, v_registroventas.serie, v_registroventas.numerodoc_das, v_registroventas.responsable_das, v_registroventas.codigo_tdo, v_registroventas.doc__persona, v_registroventas.estado_das, (0::numeric(20,4)), v_registroventas.codigo_movtabla, v_registroventas.id_empresa, v_registroventas.id_sucursal, v_registroventas.id_mes, v_registroventas.anio
UNION
 SELECT v_registroventas.fecha,
    v_registroventas.tipodoc,
    v_registroventas.serie,
    v_registroventas.numerodoc_das AS numero,
    v_registroventas.doc__persona AS codigo,
    v_registroventas.responsable_das AS cliente,
    sum(v_registroventas.importe) AS valor_venta,
    0 AS imp_igv,
    0::numeric(20,4) AS total,
    listar(v_registroventas.tipo) AS listar,
    v_registroventas.codigo_tdo,
    v_registroventas.estado_das,
    v_registroventas.codigo_movtabla,
    v_registroventas.id_empresa,
    v_registroventas.id_sucursal,
    v_registroventas.id_mes,
    v_registroventas.anio
   FROM contabilidad.v_registroventas
  WHERE v_registroventas.tipo ~~* '%venta%'::text
  GROUP BY v_registroventas.fecha,
  v_registroventas.tipodoc,
  v_registroventas.serie,
  v_registroventas.numerodoc_das,
  v_registroventas.responsable_das,
  v_registroventas.codigo_tdo,
  v_registroventas.doc__persona,
  v_registroventas.estado_das,
  (0::numeric(20,4)),
  v_registroventas.codigo_movtabla,
  v_registroventas.id_empresa,
  v_registroventas.id_sucursal,
  v_registroventas.id_mes,
  v_registroventas.anio;

CREATE OR REPLACE VIEW contabilidad.v_registroventas
AS
 SELECT tdo.id_comprobante AS codigo_tdo,
    tdo.descripcion_corta AS tipodoc,
    det.serie,
    det.numero AS numerodoc_das,
    to_char(det.fechadoc_das, 'dd/mm/yyyy'::text) AS fecha,
    date_part('day'::text, det.fechadoc_das::date) AS dia,
    rub.descripcion_larga AS rubro,
    pc.nro_cuenta AS cuenta,
    pc.nombre_cuenta AS nombrecuenta,
    sum(COALESCE(det.debe_das, 0::numeric)) AS debe,
    sum(COALESCE(det.haber_das, 0::numeric)) AS haber,
    abs(sum(COALESCE(det.debe_das, 0::numeric)) - sum(COALESCE(det.haber_das, 0::numeric)))::numeric(20,4) AS importe,
        CASE "left"(pc.nro_cuenta::text, 2)
            WHEN '40'::text THEN 'igv'::text
            ELSE 'venta'::text
        END AS tipo,
    det.responsable AS responsable_das,
    det.id_estado AS estado_das,
    contabilidad.list_detalle_op(cab.subdiario_id, det.id_movasientos) AS codigo_movtabla,
    det.doc__persona,
    cab.id_empresa,
    det.id_sucursal,
    det.id_mes,
    det.anio
   FROM contabilidad.tbl__detalle__asiento__contable det
     JOIN contabilidad.tbl__asiento__contable cab ON cab.id_asiento = det.id_asiento
     inner join contabilidad.tbl_subdiario sub on sub.id=cab.subdiario_id
     JOIN common.tbl_comprobante tdo ON tdo.id_comprobante = det.id_comprobante
     JOIN contabilidad.tbl_plancuenta pc ON pc.id_plancuenta = det.id_plancuenta
     JOIN almacen.tbl_producto rub ON rub.id_producto::text = det.id_producto::text
  WHERE sub.auxiliar_id = 1 AND (det.id_comprobante = ANY (ARRAY[3, 2, 19,17])) AND ("left"(pc.nro_cuenta::text, 2) = ANY (ARRAY['40'::text, '70'::text, '75'::text, '77'::text]))
  GROUP BY tdo.descripcion_corta, det.numero, pc.nombre_cuenta, pc.nro_cuenta, (to_char(det.fechadoc_das, 'dd/mm/yyyy'::text)), rub.descripcion_larga, det.responsable, tdo.id_comprobante, det.id_estado, det.id_movasientos, (date_part('day'::text, det.fechadoc_das::date)), pc.numeracion_cta, det.serie, det.doc__persona, cab.subdiario_id, cab.id_empresa, det.id_sucursal, det.id_mes, det.anio
  ORDER BY tdo.descripcion_corta, det.serie, det.numero;

  select *from common.tbl_comprobante order by 1

CREATE OR REPLACE VIEW CONTABILIDAD.V_REGISTROCOMPRAS

AS
select
tdo.id_comprobante as codigo_Tdo,
tdo.descripcion_corta  as TipoDoc,
det.serie,
det.numero NumeroDoc_das,
to_char(det.fecha_contable,'dd/mm/yyyy') Fecha,
date_part('day',fecha_contable::date) Dia,
rub.descripcion_larga Rubro,
pc.nro_cuenta Cuenta ,
pc.nombre_cuenta NombreCuenta,
sum(COALESCE(debe_das,0)) Debe,
sum(COALESCE(haber_das,0)) Haber,
ABS( sum(COALESCE(debe_das,0)) -  sum(COALESCE(haber_das,0)))::numeric(20,4) Importe,
case LEFT (pc.numeracion_cta,2) when '40' then 'igv' ELSE 'venta' END TIPO,
det.responsable responsable_das ,
det.id_estado estado_das,
contabilidad.list_detalle_op(cab.id_auxiliar,det.id_movasientos) CODIGO_MOVTABLA  ,
det.doc__persona     ,
cab.id_empresa,
det.id_sucursal,
det.id_mes,
det.anio,
to_char(det.fechadoc_das,'dd/mm/yyyy') Fecha_doc
 from contabilidad.tbl__detalle__asiento__contable det
 inner join contabilidad.tbl__asiento__contable cab   on cab.id_asiento = det.id_asiento
 inner join common.tbl_comprobante tdo   on tdo.id_comprobante = det.id_comprobante
 inner join contabilidad.tbl_plancuenta pc   on pc.id_plancuenta = det.id_plancuenta
 INNER JOIN almacen.tbl_producto RUB  ON RUB.id_producto = DET.id_producto
where cab.id_auxiliar = 1
and det.id_comprobante  in (3,2,19)
--and mes_asi =1
--and LEFT (numeracion_cta,2) in ('60','40')
group by
tdo.descripcion_corta,
det.numero,
pc.nombre_cuenta,
pc.nro_cuenta,
to_char(det.fecha_contable,'dd/mm/yyyy'),
rub.descripcion_larga ,
det.responsable,
tdo.id_comprobante ,
det.id_estado ,
det.id_movasientos,
date_part('day',fecha_contable::date) ,
pc.numeracion_cta,
det.serie  ,
det.doc__persona ,cab.id_auxiliar,cab.id_empresa,
det.id_sucursal,det.id_mes,det.anio,to_char(det.fechadoc_das,'dd/mm/yyyy')

UNION ALL
select
tdo.id_comprobante as codigo_Tdo,
tdo.descripcion_corta  as TipoDoc,
det.serie,
det.numero NumeroDoc_das,
to_char(det.fecha_contable,'dd/mm/yyyy') Fecha,
date_part('day',fecha_contable::date) Dia,
rub.descripcion_larga::VARCHAR(200) Rubro,
pc.nro_cuenta Cuenta ,
pc.nombre_cuenta NombreCuenta,
sum(COALESCE(debe_das,0)) Debe,
sum(COALESCE(haber_das,0)) Haber,
ABS( sum(COALESCE(debe_das,0)) -  sum(COALESCE(haber_das,0)))::numeric(20,4) Importe,
case LEFT (pc.numeracion_cta,2) when '40' then 'igv' ELSE 'venta' END TIPO,
det.responsable responsable_das ,
det.id_estado estado_das,
contabilidad.list_detalle_op(cab.id_auxiliar,det.id_movasientos) CODIGO_MOVTABLA  ,
det.doc__persona     ,
cab.id_empresa,
det.id_sucursal,
det.id_mes,
det.anio,
to_char(det.fechadoc_das,'dd/mm/yyyy') Fecha_doc
 from contabilidad.tbl__detalle__asiento__contable det
 inner join contabilidad.tbl__asiento__contable cab   on cab.id_asiento = det.id_asiento
 inner join common.tbl_comprobante tdo   on tdo.id_comprobante = det.id_comprobante
 inner join contabilidad.tbl_plancuenta pc   on pc.id_plancuenta = det.id_plancuenta
 INNER JOIN COMMON.tbl_CONCEPTO RUB  ON RUB.id_CONCEPTO = DET.id_producto
where cab.id_auxiliar = 1
and det.id_comprobante  in (3,2,19,17)
--and mes_asi =1
--and LEFT (numeracion_cta,2) in ('60','40')
group by
tdo.descripcion_corta,
det.numero,
pc.nombre_cuenta,
pc.nro_cuenta,
to_char(det.fecha_contable,'dd/mm/yyyy'),
rub.descripcion_larga ,
det.responsable,
tdo.id_comprobante ,
det.id_estado ,
det.id_movasientos,
date_part('day',fecha_contable::date) ,
pc.numeracion_cta,
det.serie  ,
det.doc__persona ,cab.id_auxiliar,cab.id_empresa,
det.id_sucursal,det.id_mes,det.anio,to_char(det.fechadoc_das,'dd/mm/yyyy')
order by TipoDoc,   serie   ,
NumeroDoc_das

select *from compras.tipooperacion_compra order by idtipo_operacion

select *from ventas.facturacion  where fecha_emision::date='14/07/20012'
update ventas.facturacion set fecha_emision=date_act where fecha_emision::date='14/07/20012'

create or replace view contabilidad.v_regcomprascontabilidad
as
select

	fecha,
	tipodoc,
	serie,
	NumeroDoc_das as numero,
	doc__persona as codigo,
	responsable_das as cliente,
	0 as valor_venta,
	sum(importe) as imp_igv,
	0::numeric(20,4) as total,
	listar(tipo),
	codigo_Tdo,
	estado_das,
	CODIGO_MOVTABLA,
	id_empresa,
	id_sucursal,
	id_mes,
	anio,
	Fecha_doc
from CONTABILIDAD.V_REGISTROCOMPRAS
where tipo ILIKE '%igv%'
group by
fecha,
tipodoc,
serie,
NumeroDoc_das,
NumeroDoc_das ,
responsable_das,
codigo_Tdo,doc__persona,estado_das,total,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio,Fecha_doc
union
select

	fecha,
	tipodoc,
	serie,
	NumeroDoc_das as numero,
	doc__persona as codigo,
	responsable_das as cliente,
	sum(importe) as valor_venta,
	0 as imp_igv,
	0::numeric(20,4) as total,
	listar(tipo),
	codigo_Tdo,
	estado_das,
	CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio,Fecha_doc
from CONTABILIDAD.V_REGISTROCOMPRAS
where tipo = 'venta'

group by
fecha,
tipodoc,
serie,
NumeroDoc_das,
NumeroDoc_das ,
responsable_das,
codigo_Tdo,doc__persona,estado_das,total,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio,Fecha_doc;

create or replace  VIEW CONTABILIDAD.V_PIVOTLIBROCOMPRAS
AS
select

	fecha,
	tipodoc,
	serie,
	numero ,
	codigo  ,
	cliente  ,
	sum(valor_venta) as valor_venta,
	sum(imp_igv) as imp_igv,
	sum(valor_venta)+sum(imp_igv)  as total,
	codigo_Tdo,
	estado_das,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio,Fecha_doc
from contabilidad.v_regcomprascontabilidad
group by
fecha,
tipodoc,
serie,
numero,
codigo ,
cliente,
codigo_Tdo,codigo,estado_das,CODIGO_MOVTABLA,id_empresa,id_sucursal,id_mes,anio,Fecha_doc;

select *from ventas.tbl_detfacturacion limit 10

select *from ventas.v_reporteventas_producto

CREATE OR REPLACE VIEW ventas.v_reporteventas_producto
AS
SELECT
vend.doc_persona AS doc_vendedor,
vend.nombre_razon AS vendedor,
((tbl_comprobante.descripcion_corta::text || '/'::text) || tbl_facturacion.serie_facturacion::text) || tbl_facturacion.numdoc_facturacion::text AS comprobante,
  tbl_facturacion.id_facturacion,
    to_char(tbl_facturacion.fecha_venta, 'dd/mm/yyyy'::text) AS fecha_venta,
    CASE
            WHEN btrim(tbl_facturacion.id_cliente::text) = '000'::text THEN tbl_facturacion.dni_cliente::text
            ELSE btrim(tbl_persona.doc_persona::text)
        END AS doc_persona,
   CASE
            WHEN btrim(tbl_facturacion.id_cliente::text) = '000'::text THEN btrim(tbl_facturacion.nomape_cliente)
            ELSE btrim(tbl_persona.nombre_razon::text)
        END AS cliente,
     dir.direccion,
    dis.distrito,
   (df.cantidad-COALESCE((select sum(dnc.cantidad) from ventas.tbl_facturacion nc
			inner join ventas.tbl_detfacturacion dnc on nc.id_facturacion=dnc.id_facturacion and nc.id_sucursal=dnc.id_sucursal
		where nc.nota_credito=true and nc.id_facturacionref=tbl_facturacion.id_Facturacion and nc.id_sucursalref=tbl_facturacion.id_sucursal and  dnc.id_producto=df.id_producto and dnc.id_unidadventa=df.id_unidadventa),0)) as cantidad,
    p.descripcion_larga,
    tbl_tipoventa.descripcion_larga AS tipoventa,
    (df.importe-COALESCE((select sum(dnc.importe) from ventas.tbl_facturacion nc
			inner join ventas.tbl_detfacturacion dnc on nc.id_facturacion=dnc.id_facturacion and nc.id_sucursal=dnc.id_sucursal
		where nc.nota_credito=true and nc.id_facturacionref=tbl_facturacion.id_Facturacion and nc.id_sucursalref=tbl_facturacion.id_sucursal and  dnc.id_producto=df.id_producto and dnc.id_unidadventa=df.id_unidadventa),0)) as Importe,
    tbl_moneda.simbolo AS moneda,
    tbl_tipocambio.venta tipo_cambio,
   suc.id_empresa,
    tbl_tipoventa.descripcion_larga as tipo_venta
   FROM ventas.tbl_facturacion
     JOIN common.tbl_comprobante ON tbl_facturacion.id_comprobante = tbl_comprobante.id_comprobante
     JOIN common.tbl_moneda ON tbl_facturacion.id_moneda = tbl_moneda.id_moneda
     JOIN common.tbl_tipocambio ON tbl_facturacion.id_tipocambio = tbl_tipocambio.id_tipocambio
     JOIN ventas.tbl_direccion dir ON tbl_facturacion.id_direccion = dir.id_direccion AND tbl_facturacion.id_cliente::text = dir.id_persona::text
     JOIN ventas.tbl_sector sec ON sec.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = sec.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN planillas.tbl_persona ON tbl_persona.id_persona::text = dir.id_persona::text
     JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = tbl_facturacion.id_tipoventa
     JOIN common.tbl_estado ON tbl_estado.id_estado = tbl_facturacion.id_estado
     JOIN planillas.tbl_persona vend ON vend.id_persona::bpchar = tbl_persona.id_vendtitular
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = tbl_facturacion.id_sucursal
     INNER JOIN ventas.tbl_detfacturacion df on df.id_facturacion=tbl_facturacion.id_facturacion and df.id_sucursal=tbl_facturacion.id_sucursal
     inner join almacen.tbl_detproducto dp on dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa
     inner join almacen.tbl_producto p on p.id_producto=dp.id_producto

  WHERE tbl_facturacion.nota_credito=false and
  --DF.ID_FACTURACION=1793 AND
	(EXISTS ( SELECT dfac.item,
            dfac.cantidad,
            dfac.id_almacen,
            dfac.id_producto,
            dfac.id_unidadventa,
            dfac.id_listaprecio,
            dfac.precio,
            dfac.importe,
            dfac.imp_dscto,
            dfac.imp_igv,
            dfac.puntos,
            dfac.id_manguera,
            dfac.id_isla,
            dfac.id_lado,
            dfac.id_sucursal,
            dfac.id_facturacion,
            dfac.lista,
            dfac.id_estado,
            dfac.id_unimedventa,
            dfac.descripcion_linea,
            dfac.ancho,
            dfac.largo,
            dfac.val_unimedventa,
            dfac.id_usuario,
            dfac.inv_inicial,
            dfac.imp_percepcion,
            dfac.porcent_percepcion
           FROM ventas.tbl_detfacturacion dfac
          WHERE dfac.id_facturacion = tbl_facturacion.id_facturacion AND dfac.id_sucursal = tbl_facturacion.id_sucursal)) AND tbl_facturacion.id_estado = 1 AND tbl_facturacion.nota_credito = false
  ORDER BY tbl_facturacion.fecha_venta::date, tbl_facturacion.id_comprobante, tbl_facturacion.serie_facturacion, tbl_facturacion.numdoc_facturacion;

create or replace view restaurant.v_salon
as
select s.id_salon,s.nombre,s.apuntes,s.id_estado,s.id_sucursal,su.nombre as sucursal,e.des_estado as estado from restaurant.tbl_salon S
INNER JOIN common.tbl_sucursal su on su.id_sucursal=s.id_sucursal
inner join common.tbl_estado e on e.id_estado=s.id_estado;

CREATE OR REPLACE VIEW restaurant.v_mesa
as
select id_mesa,nro_mesa,nro_sillas,s.nombre as  salon,su.nombre as sucursal,e.des_estado as estado,m.x,m.y,m.id_salon,m.id_estado  from restaurant.tbl_mesa m
inner join restaurant.tbl_salon S on  s.id_salon=m.id_salon
INNER JOIN common.tbl_sucursal su on su.id_sucursal=s.id_sucursal
inner join common.tbl_estado e on e.id_estado=s.id_estado;

--reaturante

create or replace view veterinaria.v_alergias
as
select id_alergia as id,nombre, notas,e.des_estado as estado,a.id_estado from veterinaria.tbl_alergia a
inner join common.tbl_estado e on e.id_estado=a.id_estado;

create or replace view veterinaria.v_tipodiagnostico
as
select id_tipodiagnostico as id,nombre,codigo_estandarint, apuntes,e.des_estado as estado,a.id_estado from veterinaria.tbl_tipodiagnostico a
inner join common.tbl_estado e on e.id_estado=a.id_estado;

create or replace view veterinaria.v_tipoprocedimiento
as
select id_tipoprocedimiento as id,nombre,dias_notificacion, apuntes,e.des_estado as estado,a.id_estado from veterinaria.tbl_tipoprocedimiento a
inner join common.tbl_estado e on e.id_estado=a.id_estado;

create or replace view veterinaria.v_tipovacuna
as
select id_tipovacuna as id,nombre,dias_expiracion, apuntes,e.des_estado as estado,a.id_estado from veterinaria.tbl_tipovacuna a
inner join common.tbl_estado e on e.id_estado=a.id_estado;

create or replace view veterinaria.v_raza
as
select
r.id_raza,
r.nombre as raza,
es.nombre as especie,
e.des_estado as estado,
e.id_estado
from veterinaria.tbl_raza r
inner join veterinaria.tbl_especie es on es.id_especie=r.id_especie
inner join common.tbl_estado e on e.id_estado=r.id_estado;

create or replace  view  veterinaria.v_mascota
as
select id_paciente,p.nombres,p.apellidos,p.identificacion,r.nombre as raza,case when p.id_sexo=1 then 'Macho' else 'Embra' end as sexo ,
0::integer as edad,
p.fec_nacimiento,p.observaciones,p.id_raza,p.id_sexo,p.id_estado,
cast(fu_edad(fec_nacimiento::date,now()::date) as integer) as años,
cast(abs(cast(fu_edad(fec_nacimiento::date,now()::date) as integer)-fu_edad(fec_nacimiento::date,now()::date))*12  as integer)as mes,
to_char(fec_nacimiento,'dd/mm/YYYY') as fec_nac
 from veterinaria.tbl_paciente p
inner join veterinaria.tbl_raza  r on r.id_raza=p.id_raza
inner join common.tbl_estado e on e.id_estado=p.id_estado

select * from veterinaria.tbl_paciente p

create or replace view veterinaria.v_duenios_mascota
as
select pd.id_amo,p.doc_persona,p.nombre_razon as cliente,p.email,planillas.fn_getTelefonoPersona(p.id_persona) as telefonos,e.des_estado as estado,e.id_estado,2 as op,
pd.id_pacienteduenio,pd.id_paciente from  veterinaria.tbl_pacienteduenio pd
inner join planillas.tbl_persona p on p.id_persona=pd.id_amo
inner join common.tbl_estado e on e.id_estado=pd.id_estado

create or replace view veterinaria.v_alergiapaciente
as
select
ap.id_alergiapaciente,
a.nombre as alergia,
p.nombre_razon as doctor,
e.des_estado as estado,
e.id_estado,
ap.id_paciente,
p.doc_persona,
a.id_alergia,
ap.apuntes,
ap.id_doctor,
ap.fecha_reg
from veterinaria.tbl_alergiapaciente ap
inner join veterinaria.tbl_alergia a on a.id_alergia=ap.id_alergia
inner join planillas.tbl_persona p on p.id_persona=ap.id_doctor
inner join common.tbl_estado e on e.id_estado=ap.id_estado

create or replace view veterinaria.v_datoscontrol
as
SELECT id_datoscontrol, fecha,
to_char(fecha,'dd/mm/YYYY') || ' :  ' || case when peso>0  then 'Peso : ' || peso || 'kg | ' else '' end  ||
case when temperatura>0 then 'Temperatura : ' || temperatura || '°C | '  else '' end ||
case when altura>0 then 'Altura : ' || altura || 'mmHg | ' else '' end ||
case when presion_diastolica>0 then 'Presion Diastólica : ' || presion_diastolica || 'mmHg | '  else '' end ||
case when presion_sistolica>0 then 'Presion Sistólica : ' || presion_sistolica || 'mmHG |' else '' end ||
case when frec_respiratoria>0 then 'Frec. Respiratoria : ' || frec_respiratoria || 'rpm | ' else '' end ||
case when frec_cardiaca>0 then 'Frec. Cardiaca: ' || frec_cardiaca || 'ppm | ' else '' end||
case when schirmer>0 then 'Schirmer: ' || schirmer || 'mm | ' else '' end ||
case when presion_intraocular>0 then  'Presion intra ocular: ' || presion_intraocular || 'mmHg ' else '' end  as datos,
peso,
temperatura,
altura,
presion_diastolica,
presion_sistolica,
frec_respiratoria,
frec_cardiaca,
schirmer,
presion_intraocular,
id_paciente,
id_doctor,
fecha_reg,
fecha_act,
id_usuarioreg,
id_usuarioact,
dc.id_estado,
p.doc_persona,
p.nombre_razon as cliente
  FROM veterinaria.tbl_datoscontrol dc
  inner join planillas.tbl_persona p on p.id_persona=dc.id_doctor;

create or replace view veterinaria.v_procedimientopaciente
as
SELECT
	id_procedimiento,
	to_char(fecha, 'DD TMMonth YYYY'::text) fecha_cad,
	tp.nombre as tipo_procedimiento,
	pp.id_tipoprocedimiento,
	fecha_expiracion,
	pp.apuntes,
	remp_procedanteriores,
	id_doctor,
	pp.id_estado,
	fecha_reg,
	fecha_act,
	id_usuarioreg,
	id_usuarioact,
	id_paciente,
	p.doc_persona,
	p.nombre_razon as cliente,
	pp.fecha
  FROM veterinaria.tbl_procedimiento pp
    inner join planillas.tbl_persona p on p.id_persona=pp.id_doctor
    inner join veterinaria.tbl_tipoprocedimiento  tp on tp.id_tipoprocedimiento=pp.id_tipoprocedimiento;

select *from common.tbl_operacion

create or replace view ventas.v_resumenboletas
as
select
serie_facturacion::text as serie,
cp.codigosunat,
min(numdoc_facturacion::integer) as StartDocument ,
max(numdoc_facturacion::integer) as EndDocument ,
case when f.id_operacion=1 then sum(f.valor_venta) else 0 end AS valorventa_op_gravada,
case when f.id_operacion=2 then sum(f.valor_venta) else 0 end AS valorventa_op_exonerada,
0.00 AS valorventa_op_nafecta,
0.00 as otros_cargos,
0.00 as imp_isc,
sum(f.imp_igv) AS impigv,
sum(f.imp_total) AS total_percep,
sum(f.imp_percepcion) AS otros_tributos,
sum(f.imp_neto) as imp_total,
1 as nro_fila,
'RC'||'-'||to_char(f.fecha_venta::date,'yyyymmdd') AS identificador,
to_char(now()::date,'yyyy-mm-dd') as IssueDate,
to_char(f.fecha_venta::date,'yyyy-mm-dd') as ReferenceDate,
'RC'::text AS prefix
from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
where cp.id_comprobante=2 and date_part('year',f.fecha_venta)=2016 and date_part('month',f.fecha_venta)=6 and date_part('day',f.fecha_venta)=18 --and f.id_facturacion=6624
group by f.serie_facturacion,f.fecha_venta::date,cp.codigosunat,f.id_operacion

CREATE OR REPLACE VIEW PLANILLAS.V_TIPDOCIDENTIDAD
AS
SELECT id_tipdocidentidad,Descripcion_larga,descripcion_corta,id_estado,codigo_sunat FROM PLANILLAS.TBL_TIPDOCIDENTIDAD

/*
create or replace view restaurant.v_mesacomanda
as
select m.id_mesa,nro_mesa,nro_sillas,s.nombre as  salon,su.nombre as sucursal,e.des_estado as estado,m.x,m.y,m.id_salon,m.id_estado ,COALESCE(mc.ocupado ,false) as ocupado,
COALESCE(mc.id_cotizapreventa,0) AS id_cotizapreventa,su.id_sucursal,COALESCE(mc.id_mesacomanda,0) as id_mesacomanda
from restaurant.tbl_mesa m
inner join restaurant.tbl_salon S on  s.id_salon=m.id_salon
INNER JOIN common.tbl_sucursal su on su.id_sucursal=s.id_sucursal
inner join common.tbl_estado e on e.id_estado=s.id_estado
left join restaurant.TBL_COMANDAMESA mc on mc.id_mesa=m.id_mesa
where mc.id_facturacion is null;

create or replace view restaurant.v_mesacomanda
as
select m.id_mesa,nro_mesa,nro_sillas,s.nombre as  salon,su.nombre as sucursal,e.des_estado as estado,m.x,m.y,m.id_salon,m.id_estado ,COALESCE(mc.ocupado ,false) as ocupado,
COALESCE(mc.id_cotizapreventa,0) AS id_cotizapreventa,su.id_sucursal,COALESCE(mc.id_mesacomanda,0) as id_mesacomanda
from restaurant.tbl_mesa m
inner join restaurant.tbl_salon S on  s.id_salon=m.id_salon
INNER JOIN common.tbl_sucursal su on su.id_sucursal=s.id_sucursal
inner join common.tbl_estado e on e.id_estado=s.id_estado
left join
(
	select mc.id_cotizapreventa ,mc.id_mesacomanda,mc.ocupado ,mc.id_mesa,nombre_union
	from restaurant.TBL_COMANDAMESA mc where  mc.id_facturacion is null
) mc on mc.id_mesa=m.id_mesa
--where mc.id_facturacion is null;

*/
 /*
CREATE OR REPLACE VIEW restaurant.v_mesacomanda
AS
 SELECT distinct m.id_mesa,
    m.nro_mesa,
    m.nro_sillas,
    s.nombre AS salon,
    su.nombre AS sucursal,
    e.des_estado AS estado,
    m.x,
    m.y,
    m.id_salon,
    m.id_estado,
    COALESCE(mc.ocupado, false) AS ocupado,
    COALESCE(mc.id_cotizapreventa, 0::bigint) AS id_cotizapreventa,
    su.id_sucursal,
    COALESCE(mc.id_mesacomanda, 0::bigint) AS id_mesacomanda
   FROM restaurant.tbl_mesa m
     JOIN restaurant.tbl_salon s ON s.id_salon = m.id_salon
     JOIN common.tbl_sucursal su ON su.id_sucursal = s.id_sucursal
     JOIN common.tbl_estado e ON e.id_estado = s.id_estado
     LEFT JOIN (
	select
	sum(DC.cantidad)-COALESCE((Z.CANTIDAD),0) AS SaldoPendiente,
	mc_1.id_cotizapreventa,
	mc_1.id_mesacomanda,
	case when (sum(DC.cantidad)-COALESCE((Z.CANTIDAD),0))>0 then true else false end as ocupado,
	--mc_1.ocupado,
	mc_1.id_mesa,
	mc_1.nombre_union
	 FROM restaurant.tbl_comandamesa mc_1
	inner join  ventas.tbl_detpreventacotiza dc on dc.id_cotizapreventa=mc_1.id_cotizapreventa
	--inner join ventas.tbl_cotizacionpreventa cp on cp.id_cotizapreventa=mc_1.mc_1
	LEFT JOIN (
		SELECT SUM(DF.CANTIDAD) AS CANTIDAD,F.id_cotizapreventa,F.id_sucursalpreventa ,f.id_facturacion
		FROM VENTAS.TBL_FACTURACION F
		INNER JOIN VENTAS.TBL_DETFACTURACION DF ON F.ID_FACTURACION=DF.ID_FACTURACION
		where df.id_estado=1 and f.id_estado=1
		GROUP BY F.id_cotizapreventa,F.id_sucursalpreventa ,f.id_facturacion
	) Z ON Z.id_cotizapreventa=MC_1.id_cotizapreventa
	where mc_1.id_estado=1   and z.id_facturacion is null
	group by
		z.cantidad,
		mc_1.id_cotizapreventa,
		mc_1.id_mesacomanda,
		mc_1.ocupado,
		mc_1.id_mesa,
		mc_1.nombre_union
) mc ON mc.id_mesa = m.id_mesa
*/
--where mc.ocupado is null;

CREATE OR REPLACE VIEW restaurant.v_mesacomanda AS
 SELECT DISTINCT m.id_mesa,
    m.nro_mesa,
    m.nro_sillas,
    s.nombre AS salon,
    su.nombre AS sucursal,
    e.des_estado AS estado,
    m.x,
    m.y,
    m.id_salon,
    m.id_estado,
    COALESCE(mc.ocupado, false) AS ocupado,
    COALESCE(mc.id_cotizapreventa, 0::bigint) AS id_cotizapreventa,
    su.id_sucursal,
    COALESCE(mc.id_mesacomanda, 0::bigint) AS id_mesacomanda
   FROM restaurant.tbl_mesa m
     JOIN restaurant.tbl_salon s ON s.id_salon = m.id_salon
     JOIN common.tbl_sucursal su ON su.id_sucursal = s.id_sucursal
     JOIN common.tbl_estado e ON e.id_estado = s.id_estado
     LEFT JOIN ( SELECT sum(dc.cantidad) - COALESCE(z.cantidad, 0::numeric) AS saldopendiente,
            mc_1.id_cotizapreventa,
            mc_1.id_mesacomanda,
                CASE
                    WHEN (sum(dc.cantidad) - COALESCE(z.cantidad, 0::numeric)) > 0::numeric THEN true
                    ELSE false
                END AS ocupado,
            mc_1.id_mesa,
            mc_1.nombre_union
           FROM restaurant.tbl_comandamesa mc_1
             JOIN ventas.tbl_detpreventacotiza dc ON dc.id_cotizapreventa = mc_1.id_cotizapreventa
             LEFT JOIN (
             SELECT sum(df.cantidad) AS cantidad,
                    f.id_cotizapreventa,
                    f.id_sucursalpreventa,
                    f.id_facturacion
                   FROM ventas.tbl_facturacion f
                     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion
                  WHERE df.id_estado = 1 AND f.id_estado = 1
                  GROUP BY f.id_cotizapreventa, f.id_sucursalpreventa, f.id_facturacion) z ON z.id_cotizapreventa = mc_1.id_cotizapreventa
          WHERE mc_1.id_estado = 1 AND z.id_facturacion IS NULL
          GROUP BY z.cantidad, mc_1.id_cotizapreventa, mc_1.id_mesacomanda, mc_1.ocupado, mc_1.id_mesa, mc_1.nombre_union
          ) mc ON mc.id_mesa = m.id_mesa
          WHERE m.id_estado=1;

select from restaurant.v_mesacomanda   where id_mesa=1

select
sum(DC.cantidad)-COALESCE((Z.CANTIDAD),0) AS SaldoPendiente,
mc_1.id_cotizapreventa,
mc_1.id_mesacomanda,
case when (sum(DC.cantidad)-COALESCE((Z.CANTIDAD),0))>0 then true else false end as ocupado,
--mc_1.ocupado,
mc_1.id_mesa,
mc_1.nombre_union
 FROM restaurant.tbl_comandamesa mc_1
inner join  ventas.tbl_detpreventacotiza dc on dc.id_cotizapreventa=mc_1.id_cotizapreventa
LEFT JOIN (
	SELECT SUM(DF.CANTIDAD) AS CANTIDAD,F.id_cotizapreventa,F.id_sucursalpreventa
	FROM VENTAS.TBL_FACTURACION F
	INNER JOIN VENTAS.TBL_DETFACTURACION DF ON F.ID_FACTURACION=DF.ID_FACTURACION
	GROUP BY F.id_cotizapreventa,F.id_sucursalpreventa
) Z ON Z.id_cotizapreventa=MC_1.id_cotizapreventa
group by z.cantidad,mc_1.id_cotizapreventa,
mc_1.id_mesacomanda,
mc_1.ocupado,
mc_1.id_mesa,
mc_1.nombre_union

select * from ventas.v_detcotizaprevente   where id_cotizapreventa=1 and  id_sucursal=1 and cantidad_pendiente>0

delete from restaurant.tbl_comandamesa

delete from caja.tbl_detmovpago;
delete from caja.tbl_movcaja;
delete from ventas.tbl_detfacturacion;
delete from ventas.tbl_facturacion;
delete from restaurant.tbl_comandamesa;
DELETE FROM ventas.tbl_detpreventacotiza;
DELETE FROM ventas.tbl_cotizacionpreventa;

create or replace view ventas.v_imprimirventas
as
 SELECT
    f.numdoc_facturacion as _numdoc_facturacion,
    right(f.serie_facturacion,3)::char(3) as _serie_facturacion,
    f.id_comprobante as _id_comprobante,
    f.id_direccion as _id_direccion,
    f.id_cliente as _id_cliente,
    f.id_sucursal as  _id_sucursal,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END AS _documento ,
        CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END AS _cliente ,
     case when f.id_direccion<>0 then
    (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) else f.direccion_cliente end  AS _direccion,
    f.fecha_venta as _fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS _nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_neto) AS _tot_letras,
    f.valor_venta as _valor_venta,
    f.imp_igv as _imp_igv,
    f.imp_total as _imp_total,
    df.cantidad as _cantidad,
    df.precio as _precio,
        CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE split_part(p.descripcion_larga::text, ','::text, 1) || COALESCE(
            CASE
                WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN '
TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS _producto,
    df.importe AS _tot_detalle,
    u.desc_corta AS _unidad,
    m.simbolo AS _moneda,
    f.id_facturacion as _id_facturacion,
    df.id_producto as _id_producto,
    df.id_almacen as _id_almacen,
    df.id_unidadventa as _id_unidadventa,
    df.id_listaprecio as _id_listaprecio,
    df.id_manguera as _id_manguera,
    df.id_lado as _id_lado,
    df.id_isla as _id_isla,
    f.id_estado as _id_estado,
    df.imp_dscto as  _imp_dscto,
    df.imp_igv AS _imp_igvdetalle,
    df.item as _item,
    p.impuesto as _impuesto,
    p.servicio as _servicio,
    tp.coste as _coste,
    tp.val_unidad as _val_unidad,
    tp.val_minimo_venta as _val_minimo_venta,
    mc.id_caja_destino AS _id_caja,
    mc.imp_recibido as _imp_recibido,
    mc.imp_vuelto as _imp_vuelto,
    f.id_vendedor as _id_vendedor,
    NULL::text AS _vale,
    cp.descripcion_larga AS _nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS _mensaje,
    mc.puntos as _puntos,
    pto.puntos AS _tot_puntos,
    mc.id_turno as _id_turno,
    tv.descripcion_larga AS _tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS _vendedor,
    df.ancho as _ancho,
    df.largo as _largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS _fec_larga,
    suc.nombre AS _tienda,
    dc.direccion AS _dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS _ubigeo,
        CASE
            WHEN f.id_tipoventa = 1 THEN f.fecha_venta
            ELSE COALESCE(( SELECT c_1.fec_vencimiento
               FROM creditos.tbl_credito cr
                 JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
                 JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
              WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
              ORDER BY c_1.nro_cuota DESC
             LIMIT 1), f.fecha_venta)
        END AS _fec_vencimiento,
    df.imp_percepcion as _imp_percepcion,

    --df.precio / 1.02 AS precio_percep_l,
     (df.precio - ((df.imp_percepcion/(df.cantidad)))) AS _precio_percep_l,
      (df.precio - ((df.imp_percepcion/(df.cantidad))))*df.cantidad as _total_percep_l,
   -- df.precio / 1.02 * df.cantidad AS total_percep_l,

    f.valor_venta AS _valorventa_percep,
    f.imp_igv AS _impigv_percep,
    f.imp_total AS _total_percep,
    f.imp_percepcion AS _impprecep_percep,
    split_part(vfv.nombre_razon::text, ' '::text, 1) AS _vend_fuerzaventas,
    f.imp_neto as _imp_neto,
    suc.direccion AS _direccion_suc,
    suc.telefono as _telefono,
    suc.celular as _celular,
    emp.ruc as _ruc,
    case f.id_comprobante
	when 3 then 'F'
	WHEN 2 THEN 'B'
    END AS _prefix,
    cp.codigosunat as _codigosunat,
     CASE
            WHEN length(c.doc_persona::text) <= 8 THEN 1
            ELSE  CASE WHEN f.id_comprobante=3 THEN 6 ELSE 1 END
        END AS _tipo_docliente,
       to_char(f.fecha_venta,'yyyy-mm-dd') as _FechaEmision,
       ((df.precio/1.02)/1.18) as _valor_unitario,
       ((df.precio/1.02)/1.18)*df.cantidad as _valor_venta_item,
       case when df.precio=0 then '02' else '01' end _tipoPrecio,
       (((df.precio/1.02)/1.18)*df.cantidad)*0.18 as _imp_detIten,
       f.fecha_reg as _fecha_reg,
       caja.getformaspago(mc.id_movimcaja,mc.id_sucursal) as _formapago
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND df.id_estado = 1
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
     JOIN common.tbl_sucursal suc ON suc.id_sucursal = f.id_sucursal
     INNER JOIN common.tbl_empresa emp on emp.id_empresa=suc.id_empresa
     LEFT JOIN caja.tbl_movcaja mc ON f.id_sucursal = mc.id_sucursal_fac AND f.id_facturacion = mc.id_facturacion
     LEFT JOIN ventas.tbl_puntos pto ON pto.id_persona::text = f.id_cliente::text
    left JOIN planillas.tbl_persona vfv ON vfv.id_persona::bpchar = c.id_vendtitular

select * from almacen.V_PRODUCTOSALMACEN  where id_empresa=1 and  id_estado in(1,26) and producto || trim(COALESCE(cod_barra,'')) || codigo ilike '%%'

CREATE OR REPLACE VIEW ventas.v_imprimircomprobantes
AS
 SELECT f.numdoc_facturacion,
    "right"(f.serie_facturacion::text, 3)::character(3) AS serie_facturacion,
    f.id_comprobante,
    f.id_direccion,
    f.id_cliente,
    f.id_sucursal,
    COALESCE(x.doc_persona,    CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END)::text AS documento,
       COALESCE(x.cliente, CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END)::text AS cliente,
   COALESCE(x.direccion, (((((dc.direccion || ', '::text) || btrim(dep.departamento::text)) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text))::text AS direccion,
    f.fecha_venta,
    (f.serie_facturacion::text || '-'::text) || f.numdoc_facturacion::text AS nro_documento,
    'SON :'::text || fu_numero_letras(f.imp_neto,f.id_moneda) AS tot_letras,
    f.valor_venta::numeric(20,2) as valor_venta,
    f.imp_igv::numeric(20,2) as imp_igv,
    f.imp_total::numeric(20,2) as imp_total,
    f.imp_dscto::numeric(20,2) AS totaldscto,
    df.cantidad::numeric(20,2) as cantidad,
    (case when df.anticipo is false then df.precio else df.imp_dscto end) ::numeric(20,2) as precio,
	CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE ((split_part( replace(p.descripcion_larga::text,'|','
'), ','::text, 1) || ''::text) || trim(COALESCE(almacen.fn_getseriesventas(f.id_facturacion::bigint, f.id_sucursal, df.id_producto, df.id_unidadventa), ''::text))  || almacen.fn_attributes_ventas(df.id_producto)) || COALESCE(
            CASE
                WHEN df.ancho > 0::numeric AND df.largo > 0::numeric THEN split_part(df.descripcion_linea, ','::text, 2)
                ELSE NULL::text
            END, ''::text)
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto,

    (CASE WHEN df.anticipo is false then df.importe else df.imp_dscto*-1 end)::numeric(20,2) AS tot_detalle,
    u.desc_corta AS unidad,
    m.simbolo AS moneda,
    f.id_facturacion,
    df.id_producto,
    df.id_almacen,
    df.id_unidadventa,
    df.id_listaprecio,
    df.id_manguera,
    df.id_lado,
    df.id_isla,
    f.id_estado,
    df.imp_dscto,
    df.imp_igv::numeric(20,2) AS imp_igvdetalle,
    df.item,
    p.impuesto,
    p.servicio,
    tp.coste,
    tp.val_unidad,
    tp.val_minimo_venta,
    mc.id_caja_destino AS id_caja,
    mc.imp_recibido,
    mc.imp_vuelto,
    f.id_vendedor,
    NULL::text AS vale,
    cp.descripcion_larga AS nom_comprobante,
        CASE
            WHEN f.imp_igv > 0::numeric THEN NULL::text
            ELSE 'BIENES TRANSFERIDOS A LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMO'::text
        END AS mensaje,
    mc.puntos,
    trunc(pto.puntos,0) AS tot_puntos,
    mc.id_turno,
    tv.descripcion_larga AS tipoventa,
    split_part(vend.nombre_razon::text, ' '::text, 1) AS vendedor,
    df.ancho,
    df.largo,
    to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text) AS fec_larga,
    suc.nombre AS tienda,
    dc.direccion AS dir_cliente,
    (((btrim(dep.departamento::text) || ','::text) || btrim(prov.provincia::text)) || ', '::text) || btrim(dis.distrito::text) AS ubigeo,
        CASE
            WHEN f.id_tipoventa = 1 THEN f.fecha_venta
            ELSE COALESCE(( SELECT c_1.fec_vencimiento
               FROM creditos.tbl_credito cr
                 JOIN creditos.tbl_ventacredito vc ON cr.id_credito = vc.id_credito AND cr.id_sucursal_credito = vc.id_sucursal_credito
                 JOIN creditos.tbl_cuota c_1 ON cr.id_credito = c_1.id_credito AND cr.id_sucursal_credito = c_1.id_sucursal_credito
              WHERE f.id_facturacion = vc.id_facturacion AND f.id_sucursal = vc.id_sucursal
              ORDER BY c_1.nro_cuota DESC
             LIMIT 1), f.fecha_venta)
        END AS fec_vencimiento,
    df.imp_percepcion,
    (df.precio - df.imp_percepcion / (CASE WHEN df.cantidad=0 THEN 1 ELSE  df.cantidad  END))::numeric(20,2) AS precio_percep_l,
    ((df.precio - df.imp_percepcion / (CASE WHEN df.cantidad=0 THEN 1 ELSE  df.cantidad  END)) * df.cantidad)::numeric(20,2) AS total_percep_l,
    f.valor_venta::numeric(20,2) AS valorventa_percep,
    f.imp_igv::numeric(20,2) AS impigv_percep,
    f.imp_total::numeric(20,2) AS total_percep,
    f.imp_percepcion::numeric(20,2) AS impprecep_percep,
    split_part(vfv.nombre_razon::text, ' '::text, 1) AS vend_fuerzaventas,
    f.imp_neto,
    suc.direccion AS direccion_suc,
    suc.telefono,
    suc.celular,
    emp.ruc,
        CASE f.id_comprobante
            WHEN 3 THEN 'F'::text
            WHEN 2 THEN 'B'::text
            ELSE NULL::text
        END AS prefix,
    cp.codigosunat,
    COALESCE(trim(x.tipdoc_cliente),trim(din.codigo_sunat)) as tipo_docliente,
    to_char(f.fecha_venta, 'yyyy-mm-dd'::text) AS fechaemision,
        (CASE
            WHEN df.imp_igv > 0::numeric THEN (case when df.anticipo is false then df.precio else df.imp_dscto end) / 1.18
            ELSE (case when df.anticipo is false then df.precio else df.imp_dscto end)
        END)::numeric(20,2) AS valor_unitario,
        (CASE
            WHEN df.imp_igv > 0::numeric THEN (case when df.anticipo is false then df.precio else df.imp_dscto end) / 1.18
            ELSE (case when df.anticipo is false then df.precio else df.imp_dscto end)
        END * df.cantidad)::numeric(20,2) AS valor_venta_item,
        CASE
            WHEN df.precio = 0::numeric THEN
			(case when df.anticipo=false then '02'::text  else '01' end )
            ELSE '01'::text
        END AS tipoprecio,
        (CASE
            WHEN df.imp_igv > 0::numeric THEN (case when COALESCE(df.anticipo,false) is false then df.precio else df.imp_dscto*-1 end) / 1.18 * (CASE WHEN df.cantidad=0 THEN 1 ELSE  df.cantidad  END) * 0.18
            ELSE 0::numeric
        END)::numeric(20,2) AS imp_detiten,
    f.fecha_reg,
    caja.getformaspago(mc.id_movimcaja, mc.id_sucursal) AS formapago,
    f.status_sunat AS enviado,
    btrim(dep.departamento::text) AS departamento,
    btrim(prov.provincia::text) AS provincia,
    btrim(dis.distrito::text) AS distrito,
    COALESCE(f.imp_basepercepcion, 0::numeric)::numeric(14,2) AS imp_basepercepcion,
    COALESCE(f.imp_percepcion, 0::numeric) + COALESCE(f.imp_basepercepcion, 0::numeric) AS netopercepcion,
    COALESCE(f.digestvalue,'')::varchar(500) as digestvalue,
    COALESCE(f.signaturevalue,'')::varchar(500) as signaturevalue,
    COALESCE(c.email, ''::character varying) AS email,
    ventas.fn_ref_guia_ventas(f.id_facturacion::bigint, f.id_sucursal) AS guia_ref,
    suc.codigo_establecimiento,
    suc.id_ubigeo,
    suc.nom_ubigeo as ubigeo_sucursal,
    suc.direccion as direccion_sucursal,
    p.codigo,
    df.num_unidades,
    dis.id_distrito as ubigeo_cliente,
    c.codigo_persona,
    CASE
            WHEN btrim(df.id_producto::text) = 'TXT-01'::text THEN df.descripcion_linea
            ELSE ((split_part(p.descripcion_larga::text, ','::text, 1) || ''::text) || trim(COALESCE(almacen.fn_getseriesventas(f.id_facturacion::bigint, f.id_sucursal, df.id_producto, df.id_unidadventa), ''::text)))
        END ||
        CASE
            WHEN df.precio = 0::numeric THEN 'TRANSFERENCIA GRATUITA'::text
            ELSE ''::text
        END AS producto_sunat,
        f.imp_retencion,
	(f.fecha_venta + '20 days'::interval)::date AS vencimiento,
        suc.email as email_sucursal,
        emp.direccion as dir_empresa,
        f.glosa,
        p.caracteristicas as obs_producto,
	COALESCE(y.doc_referencia,'') as doc_referencia,
	(    CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN f.dni_cliente::text
            ELSE btrim(c.doc_persona::text)
        END)::text AS doccliente_responsable,
        (CASE
            WHEN btrim(f.id_cliente::text) = '000'::text THEN btrim(f.nomape_cliente)
            ELSE btrim(c.nombre_razon::text)
        END)::text AS nomcliente_responsable,
        h.orden_venta,
	z.zona,
        sec.sector,
	pais.codigosunat as codigo_pais,
        COALESCE(df.icbper,false) as icbper,
	COALESCE((df.imp_icbper*df.cantidad),0)::numeric(20,2) as imp_icbper,
	COALESCE(f.imp_icbper,0) as total_icbper,
	COALESCE(df.imp_icbper,0)::numeric(20,2) as icbper_det,
        COALESCE(f.tipo_factura,'0101') as tipo_factura,
	COALESCE(f.anticipo,false) as anticipo,
	COALESCE(f.con_anticipo,false) as con_anticipo,
	(case when f.con_anticipo is true then a.anticipo::numeric(20,2) else 0.00 end) as imp_anticipo,
	COALESCE(df.anticipo,false) as anticipo_det
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = f.id_tipoventa
     JOIN common.tbl_moneda m ON m.id_moneda = f.id_moneda
     JOIN ventas.tbl_direccion dc ON dc.id_direccion = f.id_direccion AND dc.id_persona::text = f.id_cliente::text
     JOIN ventas.tbl_sector sec ON dc.id_sector = sec.id_sector
     JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
     JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
     JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
     JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
     JOIN common.tbl_pais pais on pais.id_pais=dep.id_pais
     JOIN planillas.tbl_persona c ON c.id_persona::text = dc.id_persona::text
     INNER JOIN planillas.tbl_tipdocidentidad din on din.id_tipdocidentidad=c.id_tipdocidentidad
     JOIN planillas.tbl_persona vend ON vend.id_persona::text = f.id_vendedor::text
     JOIN ventas.tbl_detfacturacion df ON f.id_facturacion = df.id_facturacion AND f.id_sucursal = df.id_sucursal AND df.id_estado = 1
     JOIN almacen.tbl_precio tp ON tp.id_listaprecio = df.id_listaprecio AND tp.id_producto::text = df.id_producto::text AND tp.id_unidadventa = df.id_unidadventa
     JOIN almacen.tbl_detproducto dp ON dp.id_producto::text = tp.id_producto::text AND dp.id_unidadventa = tp.id_unidadventa
     JOIN almacen.tbl_producto p ON p.id_producto::text = dp.id_producto::text
     JOIN almacen.tbl_unidad u ON u.id_unidadventa = df.id_unidadventa
     JOIN common.v_sucursal suc ON suc.id_sucursal = f.id_sucursal
     JOIN common.tbl_empresa emp ON emp.id_empresa = suc.id_empresa
     LEFT JOIN (SELECT
		CLI.nombre_razon AS cliente,
		cli.doc_persona,
		DIR.direccion || ', '::text || btrim(dep.departamento::text) || ','::text || btrim(prov.provincia::text) || ', '::text || btrim(dis.distrito::text)  direccion,
		cli.id_persona,
		dir.id_direccion,
		tdin.codigo_sunat as tipdoc_cliente
		 FROM planillas.tbl_persona cli
			JOIN planillas.tbl_tipdocidentidad tdin on tdin.id_tipdocidentidad=cli.id_tipdocidentidad
			JOIN VENTAS.TBL_DIRECCION DIR ON CLI.ID_PERSONA=DIR.ID_PERSONA
			JOIN ventas.tbl_sector sec ON DIR.id_sector = sec.id_sector
			JOIN ventas.tbl_zona z ON sec.id_zona = z.id_zona
			JOIN common.tbl_distrito dis ON z.id_distrito::text = dis.id_distrito::text
			JOIN common.tbl_provincia prov ON dis.id_provincia::text = prov.id_provincia::text
			JOIN common.tbl_dpto dep ON prov.id_dpto::text = dep.id_dpto::text
		 ) X on x.id_persona=c.id_persona_ref and x.id_direccion=c.id_direccion_ref
     LEFT JOIN caja.tbl_movcaja mc ON f.id_sucursal = mc.id_sucursal_fac AND f.id_facturacion = mc.id_facturacion and mc.id_estado=1
     LEFT JOIN ventas.tbl_puntos pto ON pto.id_persona::text = f.id_cliente::text and pto.id_facturacion=f.id_facturacion and pto.id_sucursal=f.id_sucursal
     LEFT JOIN planillas.tbl_persona vfv ON vfv.id_persona::bpchar = c.id_vendtitular
     LEFT JOIN (
		SELECT serie_facturacion || '-' || numdoc_facturacion as doc_referencia, fc.id_facturacion,fc.id_sucursal   from ventas.tbl_facturacion fc
		JOIN common.tbl_comprobante cpc ON cpc.id_comprobante = fc.id_comprobante
	) Y on y.id_facturacion = f.id_facturacionref and y.id_sucursal=f.id_sucursalref
     LEFT JOIN  (
		SELECT
			glosa  as orden_venta,
			id_cotizapreventa
		FROM  ventas.tbl_cotizacionpreventa cv
	) h on h.id_cotizapreventa=f.id_cotizapreventa
     LEFT JOIN  (
		SELECT an.id_facturacion,an.id_sucursal,sum(PaidAmount) as anticipo FROM ventas.v_facturacionanticipo an
		group by an.id_facturacion,an.id_sucursal
	) a on a.id_facturacion=f.id_facturacion and a.id_sucursal=f.id_sucursal
      /*LEFT JOIN (select max(ccc.fec_vencimiento::date)as fec_vencimiento,cv.id_facturacion,cv.id_sucursal from creditos.tbl_credito cc
		inner join creditos.tbl_ventacredito cv on cc.id_credito=cv.id_credito and cc.id_sucursal_credito=cv.id_sucursal_credito
		inner join creditos.tbl_cuota ccc on cc.id_credito=ccc.id_credito and cc.id_sucursal_credito=ccc.id_sucursal_credito
		group by cv.id_facturacion,cv.id_sucursal

	) ccv on ccv.id_facturacion=f.id_Facturacion and ccv.id_sucursal=f.id_sucursal*/
  ORDER BY f.fecha_venta, f.id_comprobante, f.serie_facturacion, f.numdoc_facturacion, df.item;

SELECT
  COALESCE(
    pg_catalog.pg_tablespace_location(pg_tablespace.oid),
    current_setting('data_directory')||'/base/'
  )
  || (SELECT oid from pg_database where datname = current_database() )
  || '/'
  || relfilenode
  AS path_to_table_file
FROM pg_class
INNER JOIN pg_namespace ON (pg_class.relnamespace = pg_namespace.oid)
LEFT OUTER JOIN pg_tablespace on (reltablespace = pg_tablespace.oid)
WHERE nspname = 'ventas' AND relname = 'tbl_facturacion';

select * from ventas.v_imprimircomprobantes  where id_facturacion::text ||  id_sucursal::text='49381'

select * from ventas.v_imprimircomprobantes  where id_facturacion::text ||  id_sucursal::text='49361'

select *from ventas.tbl_facturacion where anticipo=true

update ventas.tbl_facturacion set  tipo_factura='0101' where anticipo=true

select *from  creditos.tbl_ventacredito
select *from planillas.tbl_persona
select *from planillas.v_cliente
select *from ventas.tbl_facturacion f

select *from ventas.tbl_facturacion

select *from ventas.tbl_facturacion limit 10
create or replace view ventas.v_filter_documents_sunat
as
 SELECT
    cp.codigosunat,
    case f.id_comprobante
	when 3 then 'F'
	WHEN 2 THEN 'B'
    END AS prefix,
    right(f.serie_facturacion,3)::char(3) as Serie,
    f.numdoc_facturacion as Numero,
    f.id_sucursal,
    f.id_facturacion,
    f.fecha_venta as Fecha
   FROM ventas.tbl_facturacion f
     JOIN common.tbl_comprobante cp ON cp.id_comprobante = f.id_comprobante
     ORDER BY F.id_comprobante,f.serie_facturacion,F.numdoc_facturacion ASC;

CREATE OR REPLACE VIEW SERVICIOS.V_TRABAJOSERVICIO
AS
SELECT id_trbajoservicio,descripcion_larga, descripcion_corta,id_estado FROM SERVICIOS.TBL_TRABAJOSERVICIO;

select *from ventas.v__programacion__visitas__clientes__x__vendedor

CREATE OR REPLACE VIEW ventas.v__programacion__visitas__clientes__x__vendedor
AS
 SELECT p.doc_persona AS doc_cliente,
    p.nombre_razon AS cliente,
    dir.direccion,
    vend.dni AS dni_vendedor,
    COALESCE((((vend.apell_paterno::text || ' '::text) || vend.apell_materno::text) || ', '::text) || vend.nombres::text, vend.nombre_razon::text) AS vendedor,
    p.id_persona AS id_cliente,
    vend.id_persona AS id_vendedor,
    dis.id_distrito::integer AS id_zona,
    btrim(dis.distrito::text) AS zona,
    COALESCE(( SELECT sum(c.imp_cuota) AS sum
           FROM ventas.tbl_facturacion fac
             JOIN creditos.tbl_ventacredito cred ON fac.id_facturacion = cred.id_facturacion AND fac.id_sucursal = cred.id_sucursal AND fac.id_tipoventa = 2 AND fac.id_estado = 1
             JOIN creditos.tbl_cuota c ON cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
          WHERE fac.id_cliente::text = p.id_persona::text), 0::numeric) - COALESCE(( SELECT sum(mov.imp_movimiento) AS sum
           FROM ventas.tbl_facturacion fac
             JOIN creditos.tbl_ventacredito cred ON fac.id_facturacion = cred.id_facturacion AND fac.id_sucursal = cred.id_sucursal AND fac.id_tipoventa = 2 AND fac.id_estado = 1
             JOIN creditos.tbl_cuota c ON cred.id_credito = c.id_credito AND cred.id_sucursal_credito = c.id_sucursal_credito
             JOIN creditos.tbl_detpagocuota cmov ON c.id_cuotas = cmov.id_cuotas AND c.id_credito = cmov.id_credito AND c.id_sucursal_credito = cmov.id_sucursal_credito
             JOIN caja.tbl_movcaja mov ON mov.id_movimcaja = cmov.id_movimcaja AND mov.id_sucursal = cmov.id_sucursal
          WHERE fac.id_cliente::text = p.id_persona::text), 0::numeric) - COALESCE(( SELECT sum(COALESCE(nc.imp_dscto, 0::numeric)) AS sum
           FROM ventas.tbl_facturacion fac
             JOIN creditos.tbl_ventacredito cred ON fac.id_facturacion = cred.id_facturacion AND fac.id_sucursal = cred.id_sucursal AND fac.id_tipoventa = 2 AND fac.id_estado = 1
             JOIN creditos.tbl_cuota_notacredito nc ON cred.id_credito = nc.id_credito AND cred.id_sucursal_credito = nc.id_sucursal_cred
          WHERE fac.id_cliente::text = p.id_persona::text), 0::numeric) AS saldo,
          vis.id_diasemana,
          dir.id_direccion
   FROM planillas.tbl_persona p
     JOIN ventas.tbl_direccion dir ON p.id_persona::text = dir.id_persona::text
     JOIN ventas.tbl_sector r ON r.id_sector = dir.id_sector
     JOIN ventas.tbl_zona z ON z.id_zona = r.id_zona
     JOIN common.tbl_distrito dis ON dis.id_distrito::text = z.id_distrito::text
     JOIN common.tbl_provincia pro ON pro.id_provincia::text = dis.id_provincia::text
     JOIN planillas.tbl_persona vend ON vend.id_persona::bpchar = p.id_vendtitular
     INNER JOIN ventas.tbl_visita vis on vis.id_persona=p.id_persona
     LEFT JOIN ventas.tbl_facturacion f ON p.id_persona::text = f.id_cliente::text
  GROUP BY p.doc_persona, p.nombre_razon, dir.direccion, vend.dni, vend.apell_paterno, vend.apell_materno, vend.nombres, vend.nombre_razon, p.id_persona, dis.id_distrito, vend.id_persona, dis.distrito, pro.provincia,vis.id_diasemana,dir.id_direccion
  ORDER BY dis.id_distrito, p.nombre_razon;

CREATE OR REPLACE VIEW almacen.v_retazos
AS
 SELECT rz.ancho,
    rz.halto,
    rz.area,
    rz.stock,
    und.desc_corta AS unidad,
    rz.id_producto,
    rz.id_almacen,
    rz.id_retazo,
    rz.id_unidadventa
   FROM almacen.tbl_retazoproducto rz
   JOIN almacen.tbl_unidad und ON und.id_unidadventa = rz.id_unidadventa
    where rz.id_Retazo not in (
		select id_retazo from ventas.tbl_detpreventacotiza where id_retazo is not null
		union
		select id_retazo from ventas.tbl_items where id_retazo is not null
   )

select *from ventas.tbl_items
select *from almacen.v_retazos rz

select *from almacen.v_TrasladosPendientes

create or replace view almacen.v_TrasladosPendientes
as
select
(cp.descripcion_corta || '/' || cm.serie || '-' || cm.numero) as Documento,
cm.fecha,
alm.descalmacen as almacen,
cm.glosa,
cm.id_almorigen,
cm.id_almdestino ,
cm.id_tranzaccion,
cm.id_sucursal,
cm.id_movimiento,
ald.descalmacen as destino
from almacen.tbl_cabmovalm cm
inner join common.tbl_comprobante cp on cp.id_comprobante=cm.id_comprobante
inner join almacen.tbl_almacen alm on alm.id_almacen=cm.id_almorigen
inner join almacen.tbl_almacen ald on ald.id_almacen=cm.id_almdestino
where cm.id_tranzaccion in ('27','28')
union

select
(cp.descripcion_corta || '/' || gui.serie || '-' || gui.numero) as Documento,
gui.fecha,
alo.descalmacen as origen,
gui.glosa,
gui.id_almacenorigen,
gui.id_almacendestino ,
gui.id_tranzaccion,
gui.id_sucursal,
gui.id_guia as id_movimiento,
ald.descalmacen as destino
from ventas.tbl_guiaremisionventa gui
inner join common.tbl_comprobante cp on cp.id_comprobante=gui.id_comprobante
inner join almacen.tbl_almacen alo on alo.id_almacen=gui.id_almacenorigen
inner join almacen.tbl_almacen ald on ald.id_almacen=gui.id_almacendestino
where gui.id_motivo='3'

select *from almacen.v_attribute_values

select *from ALMACEN.v_TrasladosPendientes

select * from common.V_CONFIGSERIES  where id_comprobante ='28' and serie='0002' and id_estado =1 and id_sucursal=2

CREATE OR REPLACE   VIEW ALMACEN.v_TrasladosPendientes
AS
SELECT
(c.descripcion_corta|| '/' ||CVM.SERIE || '-' || CVM.NUMERO) AS DOCUMENTO,--1
CVM.FECHA,--2
PROV.NOMBRE_RAZON AS PROVEEDOR,--3
M.SIMBOLO,--4
TC.VENTA AS TIPO_CAMBIO,--5
CVM.IMP_NETO,--6
E.DES_ESTADO AS ESTADO,--7
E.ID_ESTADO,--8
PROV.DOC_PERSONA AS DOC_PROVEEDOR,--9
id_movimiento,--10
CVM.serie,--11
CVM.numero,--12
CVM.id_comprobante       ,--13
CVM.id_comprobanteref    ,--14
CVM.id_almdestino        ,--15
CVM.id_tranzaccion       ,--16
cvm.doc_referencia,
cvm.id_motivo,
cvm.fec_llegada,
cvm.imp_bruto,
CVM.imp_dscto            ,--17
CVM.porcent_dscto	 ,--18
CVM.valor_venta          ,--19
CVM.imp_igv              ,--20
CVM.glosa                ,--21
cvm.id_sucursal id_sucursal_origen          ,--22
CVM.id_dirclientprov     ,--23
CVM.id_clientprov        ,--24
CVM.id_igv               ,--25
CVM.id_tipocambio        ,--26
CVM.id_moneda   ,        --27
CVM.id_vendedor,--28
I.IMP_IGV AS PORCENT_IGV,--29
cvm.id_operacion,--30
cvm.val_ventaexonerado,--31
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
compras.tbl_ordencotizacompra oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_cotizaorden=cvm.id_cotizaorden ),'') as ordencompra,--32
AMLO.DESCALMACEN AS ALMACEN,--33
ALM.ID_ALMACEN,--34
COALESCE((select cop.descripcion_corta || '/' ||oc.serie || '-' || oc.numero from
produccion.tbl_ordenproduccion oc
inner join common.tbl_comprobante cop on (cop.id_comprobante=oc.id_comprobante)
where oc.id_ordeproduccion=cvm.id_ordeproduccion ),'') as Ordenproduccion,--35
COALESCE(cvm.id_ordeproduccion,0) as id_ordeproduccion,--36
COALESCE(cvm.id_cotizaorden,0) AS id_ordencompra,--37
S.ID_EMPRESA,--38
COALESCE(CVM.serie_guia,'') as serie_guia,--39
CVM.serie_comprobante,--40
CVM.numero_comprobante,--41
CVM.id_comprobanteguia,--42
CASE WHEN LENGTH(TRIM(CVM.numero_comprobante))>0 THEN CREF.descripcion_corta ||'/'||CVM.serie_comprobante ||'-'||CVM.numero_comprobante ELSE '-' END  AS NRO_COMPROBANTE,--43
z.cantidad,--44
1 origen, --45
ALM.id_sucursal id_sucursal
FROM almacen.tbl_cabmovalm CVM
INNER JOIN PLANILLAS.TBL_PERSONA PROV ON (CVM.id_clientprov=PROV.ID_PERSONA)
INNER JOIN COMMON.TBL_COMPROBANTE C ON (C.ID_COMPROBANTE=CVM.ID_COMPROBANTE)
LEFT JOIN  COMMON.TBL_COMPROBANTE CREF ON (CREF.ID_COMPROBANTE=CVM.ID_COMPROBANTEREF)
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=CVM.ID_MONEDA)
INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=CVM.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=CVM.ID_ESTADO)
INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=CVM.ID_IGV)
INNER JOIN ALMACEN.TBL_ALMACEN AMLO ON AMLO.ID_ALMACEN=CVM.ID_ALMORIGEN
INNER JOIN ALMACEN.TBL_ALMACEN ALM ON (ALM.ID_ALMACEN=CVM.ID_ALMDESTINO)
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=ALM.id_sucursal) and cvm.ingreso=false and CVM.id_tranzaccion in('27','28')
left join( select count(*) cantidad,id_movimientoref as idMov from almacen.tbl_cabmovalm CVM where id_estado=1 group by id_movimientoref ) z on z.idMov=CVM.id_movimiento
where COALESCE(z.cantidad,0)=0
union all

select
(cp.descripcion_corta || '/' || g.serie || '-' || g.numero) as Documento,--1
g.fecha,--2
cli.NOMBRE_RAZON AS PROVEEDOR,--3
M.SIMBOLO,--4
TC.VENTA AS TIPO_CAMBIO,--5
g.imp_total as IMP_NETO,--6
E.DES_ESTADO AS ESTADO,--7
E.ID_ESTADO,--8
cli.DOC_PERSONA AS DOC_PROVEEDOR,--9
g.id_guia id_movimiento,--10
g.serie,--11
g.numero,--12
g.id_comprobante       ,--13
0 id_comprobanteref    ,--14
g.id_almacendestino        ,--15
g.id_tranzaccion       ,--16
g.documento_referencia as doc_referencia,--17
g.id_motivo,--18
g.fecha fec_llegada,--19
0 imp_bruto,--20
'0.00' imp_dscto            ,--21
0.00 porcent_dscto	     ,--22
0.00 valor_venta            ,--23
0.00 imp_igv              ,--24
g.glosa                ,--25
g.id_sucursal id_sucursal_origen          ,--26
g.id_direccioncli     ,--27
g.id_cliente,--28
g.id_igv ,        --29      ,
g.id_tipocambio        ,--30
g.id_moneda   ,         --31
g.id_vendedor,--32
0 AS PORCENT_IGV,--33
g.id_operacion,--34
0 val_ventaexonerado,--35
''  as ordencompra,--36
ald.DESCALMACEN AS destion,--37
ald.ID_ALMACEN,--38
'' Ordenproduccion,--39
0 id_ordeproduccion,--40
0  AS id_ordencompra,--41
S.ID_EMPRESA,--42
COALESCE(g.serie,'') as serie_guia,--43
g.serie serie_comprobante,--44
g.numero  numero_comprobante,--45
g.id_comprobante as id_comprobanteguia,--46
''  AS NRO_COMPROBANTE,--47
z.cantidad,--48
2 origen, --49
ald.id_sucursal          --50
from ventas.tbl_guiaremisionventa g
INNER JOIN PLANILLAS.TBL_PERSONA cli ON (g.id_cliente=cli.ID_PERSONA)
inner join common.tbl_comprobante cp on cp.id_comprobante=g.id_comprobante
INNER JOIN COMMON.TBL_MONEDA M ON (M.ID_MONEDA=g.ID_MONEDA)
INNER JOIN COMMON.TBL_TIPOCAMBIO TC ON (TC.ID_TIPOCAMBIO=g.ID_TIPOCAMBIO)
INNER JOIN COMMON.TBL_ESTADO E ON (E.ID_ESTADO=g.ID_ESTADO)
INNER JOIN COMMON.TBL_IGV I ON (I.ID_IGV=g.ID_IGV)
inner join almacen.tbl_almacen alo on alo.id_almacen=g.id_almacenorigen
inner join almacen.tbl_almacen ald on ald.id_almacen=g.id_almacendestino
INNER JOIN COMMON.TBL_SUCURSAL S ON (S.ID_SUCURSAL=g.id_sucursal)
left join(
	select
		count(*) cantidad,
		id_movimientoref idMov,
		id_sucursalref as id_sucursal
	from almacen.tbl_cabmovalm CVM where id_estado=1 and schema='ventas' and tabla='tbl_guiaremisionventa'   group by id_movimientoref,id_sucursalref
) z on z.idMov=g.id_guia and z.id_sucursal=g.id_sucursal
where COALESCE(z.cantidad,0)=0 and  g.id_motivo='3'

SELECT *FROM ventas.tbl_guiaremisionventa

select * from almacen.V_PRODUCTOSALMACEN  where id_sucursal=2 and  id_estado=1 and producto || codiGo ilike '%%'

select *from almacen.tbl_cabmovalm order by id_movimiento desc

select *from ventas.tbl_guiaremisionventa
select * from almacen.tbl_cabmovalm cm
select *from almacen.tbl_almacen

select *from SERVICIOS.TBL_INVSERVICIOPRODUCTO
delete from restaurant.TBL_COMANDAMESA

CREAT
select *from common.tbl_operacion
5012-5025

select *  from ventas.tbl_facturacion f
inner join common.tbl_comprobante cp on cp.id_comprobante=f.id_comprobante
inner join planillas.tbl_persona cli on cli.id_persona=f.id_cliente
where cp.id_comprobante=2 and date_part('year',f.fecha_venta)=2016 and date_part('month',f.fecha_venta)=4 and date_part('day',f.fecha_venta)=3  and f.id_facturacion=6624
order by f.id_facturacion
--roup by serie_facturacion
select *from common.tbl_comprobante

update ventas.tbl_facturacion set fecha_venta='03/04/2016' where id_facturacion in(
6624,
6625,
6629,
6630,
6631,
6632,
6634,
6635
)

select * from veterinaria.v_alergiapaciente  where id_paciente=1

select *from planillas.fn_getTelefonoPersona('E3');

SELECT *FROM veterinaria.tbl_alergiapaciente
select *from common.tbl_estado

insert into restaurant.v_salon(id_salon,nombre,apuntes,id_estado,id_sucursal)values(1,'PRIMER PISO','',1,1);

select listar(cast(importe as text)) as total from CONTABILIDAD.V_REGISTROVENTAS

create VIEW OR REPLACE CONTA_PIVOTLIBROVENTAS
AS
select
Fecha,
codigo_Tdo,
serie,
numero,
codigo,
RazonSocial_Cov  ,
isnull(venta,0) as Valor_Venta,
isnull(igv,0) as IGV,
isnull(venta,0) + isnull(igv,0) Precio_Venta,
'Detalle' AS detalle
    from (
select
Fecha,
codigo_Tdo,
left(NumeroDoc_das,3) as serie,
RIGHT(NumeroDoc_das,9) as numero,
NumeroDoc_das as codigo,
case estado_das
    when 'A' then 'ANULADO'
    else responsable_das
end as RazonSocial_Cov,
tipo ,
Importe as monto
	from
CONTA_VREGISTROVENTAS cpp
--where cm.codigo_aux=19
--group by cpp.PROCESO ,cp.PROCESO,cpp.ID_PROCESO
) source pivot(
	sum(source.monto) for source.tipo in (igv,venta)
) as pivottable
GO

CREATE FUNCTION coma_concat (text, text) RETURNS text
AS 'select case
WHEN $2 is null or $2 = '''' THEN $1
WHEN $1 is null or $1 = '''' THEN $2
ELSE $1 || '', '' || $2
END'
LANGUAGE sql;

CREATE AGGREGATE LISTAR (
BASETYPE = text,
SFUNC = coma_concat,
STYPE = text,
INITCOND = ''
);

SELECT projreport.*
	FROM crosstab('SELECT i.item_name::text As row_name,
		if.project::text As bucket,
		if.project::text As bucketvalue
	FROM inventory  i
			LEFT JOIN inventory_flow As if
	ON (i.item_id = if.item_id)
	WHERE if.num_used > 0
GROUP BY i.item_name, if.project
ORDER BY i.item_name, SUM(if.num_used) DESC, if.project')
	As projreport(item_name text, project_rank_1 text, project_rank_2 text,
			project_rank_3 text)

select *from CONTABILIDAD.V_REGISTROVENTAS
select * from crosstab(
		  '(select responsable_das,  tipo, Importe
		  from CONTABILIDAD.V_REGISTROVENTAS
		   order by 1) ',
		  'select m from generate_series(1,2) m') as (
		   numero text,
		   igv NUMERIC(14,4),
		   venta NUMERIC(14,4)

	  );

select *from common.tbl_comprobante order by id_comprobante
G
select * from compras.V_SEARCHORDENCOMPRA  where orden_compra || rucprov||proveedor ilike '%%' and cantidadpendiente>0

select *from caja.tbl_cajabanco

select *from common.tbl_tipoventa

select * from caja.v_deppagoscuotas   where  id_cuotas=461 and id_credito=2 and  id_sucursal_credito=2

select * from CREDITOS.v_vaucher   WHERE id_movimcaja=46587 and id_sucursal  = 1

select * from caja.v_deppagoscuotas   where  id_cuotas=461 and id_credito=2 and  id_sucursal_credito=2

select *from almacen.v_marcafamilia

select * from almacen.V_NOTASALIDADET   where id_movimiento=291271

select *from  ventas.tbl_facvale vc

select *from common.tbl_comprobante

select *from ventas.tbl_facturacion

select
id_comprobante,
descripcion_larga,
descripcion_corta,
id_estado
from common.tbl_comprobante cp where id_comprobante not in (select  id_Comprobante from contabilidad.tbl_auxiliaroperacion)

select *from contabilidad.tbl_plancuenta

select *from caja.tbl_cajabanco

select *from ventas.tbl_facturacion
select nombre_razon,familia,sum(importe_contado) as imp_contado,sum(imp_cobrado) as imp_cobrado from ventas.v__cobrazans_vendedores
group by nombre_razon,familia

select vend.nombre_razon as vendedor,
(select sum(imp_neto) from ventas.tbl_facturacion ff
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = ff.id_cliente
INNER JOIN planillas.tbl_persona v1 on (v1.id_persona=cli.id_vendtitular)
where v1.id_persona=vend.id_persona and ff.id_tipoventa=1 and date_part('month',ff.fecha_venta::date)=3) as imp_contado,
(select
	sum(COALESCE((select sum(mc.imp_movimiento)from creditos.tbl_detpagocuota dp
inner join caja.tbl_movcaja mc on(mc.id_movimcaja=dp.id_movimcaja and mc.id_sucursal=dp.id_sucursal)
where dp.id_credito=vc.id_credito and dp.id_sucursal_credito=vc.id_sucursal_credito),0))

 from ventas.tbl_facturacion ff
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = ff.id_cliente
INNER JOIN planillas.tbl_persona v1 on (v1.id_persona=cli.id_vendtitular)
inner join creditos.tbl_ventacredito  vc on (ff.id_sucursal=vc.id_sucursal and  vc.id_facturacion=ff.id_facturacion and ff.id_tipoventa=2)
inner join creditos.tbl_credito cred on (cred.id_credito=vc.id_credito and  cred.id_sucursal_credito=vc.id_sucursal_credito)
where v1.id_persona=vend.id_persona and ff.id_tipoventa=2 and date_part('month',ff.fecha_venta::date)=3 ) as imp_cobrado,
fa.descripcion_larga as familia
from ventas.tbl_facturacion fac
inner join ventas.tbl_detfacturacion df on(fac.id_facturacion=df.id_facturacion and fac.id_sucursal=df.id_sucursal)
inner join almacen.tbl_detproducto dp on (dp.id_producto=df.id_producto and dp.id_unidadventa=df.id_unidadventa)
inner join almacen.tbl_producto prod on (prod.id_producto=dp.id_producto)
inner join almacen.tbl_familia fa on (fa.id_familia=prod.id_familia)
INNER JOIN common.tbl_tipoventa tv ON tv.id_tipoventa = fac.id_tipoventa
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = fac.id_cliente
INNER JOIN planillas.tbl_persona vend on (vend.id_persona=cli.id_vendtitular)
where date_part('month',fac.fecha_venta::date)=3
group by vend.nombre_razon,vend.id_persona,fa.descripcion_larga
order by fa.descripcion_larga

select *from ventas.tbl_facturacion

select  R.REFERENCIA_NCR,CASE WHEN r.TIPO IN ('07','87','97') THEN
	CASE WHEN LENGTH(R.REFERENCIA_NCR)>0 THEN coalesce(TRIM(split_part(coalesce(TRIM(R.REFERENCIA_NCR),'-'),'-',1)),'-')
	ELSE
		'-'
	END

    ELSE
	'-'
   END || '|',
 CASE WHEN RTRIM(r.TIPO) IN ('07','87','97') THEN
  CASE WHEN LENGTH(R.REFERENCIA_NCR)>0 THEN
		split_part(coalesce(TRIM(R.REFERENCIA_NCR),'-'),'-',2)
	ELSE
		'-'
	END
   ELSE
	'-'
 END  || '|'
 from  compras.v_registrocompras R WHERE DATE_PART('MONTH',R.FECHA_EMISION)=1

select *from  compras.v_registrocompras

select *from  ventas.v_registroventas v
select *from planillas.tbl_persona
	select *from ventas.tbl_detfacturacion

SELECT *FROM  compras.tbl_detegreso D
SELECT *FROM COMMON.TBL_CONCEPTO

  select to_char(f.fecha_venta, 'DD "de" TMMonth "del" YYYY'::text),to_char(f.fecha_venta, 'TMDay "de" TMMonth "del" YYYY'::text) AS fec_larga from ventas.tbl_facturacion f
select *from caja.tbl_movcaja

select *from planillas.tbl_persona
ventas.tbl_facturacion fac
inner join caja.tbl_movcaja mov on (fac.id_facturacion=mov.id_facturacion and fac.id_sucursal=mov.id_sucursal_fac)
inner join caja.tbl_detmovpago dm on (mov.id_movimcaja=dm.id_movimcaja and  mov.id_sucursal=dm.id_sucursal and dm.id_formapago='05' )

select *from ventas.tbl_facturacion
select *from common.tbl_formapago

select *from creditos.v__creditos__cancelados__totales where saldo=0 and pagos>0

select *from creditos.v__creditos__cancelados

select *from almacen.tbl_unidad

select *from ventas.v_listar_cabecera_facturacion

select * from ventas.v_listar_cabecera_facturacion   where cliente||COMPROBANTE ilike '%%' and id_empresa=1  and (fecha_Venta::date>= '25/01/2011' and fecha_Venta::date<= '25/01/2015') limit 100

SELECT *FROM VENTAS.TBL_FACTURACION F
INNER JOIN VENTAS.TBL_FACTURACION FC ON (FC.ID_FACTURACION=F.ID_FACTURACIONREF)
WHERE ID_FACTURACIONREF IS NOT NULL

SELECT *FROM ventas.tbl_guiaremisionventa
INNER JOIN VENTAS.TBL

select *from contabilidad.tbl__asiento__contable

select *from common.tbl_comprobante
select *from contabilidad.tbl_auxiliar
v__documento__usuario	postgres

select * from ventas.V__PERCEPCIONES  where DOCUMENTO || CLIENTE like '%%'

select *from planillas.tbl_persona
SELECT *FROM VENTAS.TBL_detPERCEPCION
SELECT *FROM COMMON.TBL_COMPROBANTE
select *from contabilidad.tbl_plancuenta

SELECT *FROM VENTAS.TBL_DETFACTURACION
SELECT *FROM ALMACEN.TBL_UNIDAD
SELECT *FROM ALMACEN.TBL_PRODUCTO
SELECT *FROM PLANILLAS.TBL_PERSONA

SELECT *FROM COMMON.TBL_PROVINCIA

SELECT *FROM VENTAS.TBL_ZONA
select *from planillas.v_persona

SELECT *FROM COMMON.TBL_DISTRITO

SELECT *FROM VENTAS.TBL_SECTOR
select *from ventas.tbl_transportista
select *from planillas.tbl_persona
select *from ventas.tbl_facturacion

select *from creditos.tbl_cuota
SELECT *FROM creditos.tbl_credito
SELECT *FROM PLANILLAS.TBL_PERSONA
SELECT *FROM COMMON.TBL_COMPROBANTE

SELECT *FROM VENTAS.TBL_FACTURACION

SELECT *FROM COMMON.TBL_TIPOVENTA

select
case when fac.id_unidad is null then
	(tbl_comprobante.descripcion_corta || '/' || fac.serie_facturacion || '-' || fac.numdoc_facturacion)
else
	(select prod.descripcion_larga from almacen.tbl_producto prod where prod.id_producto=fac.id_unidad)
end ::text
 as documento,
cred.fec_emision as fec_credito,
cli.nombre_razon AS cliente,
(select c.fec_vencimiento
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito
		ORDER BY c.nro_cuota DESC
                 LIMIT 1) as fec_vencimiento,
tbl_moneda.simbolo as moneda,
COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)as credito,
0 as pagos,

COALESCE((select sum(c.imp_cuota)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0)-
COALESCE((select sum(mov.imp_movimiento)
	from  creditos.tbl_cuota c
	inner join creditos.tbl_detpagocuota cmov on (c.id_cuotas=cmov.id_cuotas and  c.id_credito=cmov.id_credito and  c.id_sucursal_credito=cmov.id_sucursal_credito)
	inner join caja.tbl_movcaja mov on (mov.id_movimcaja=cmov.id_movimcaja and  mov.id_sucursal=cmov.id_sucursal)
	where   cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito),0) as saldo,

         fac.imp_total+COALESCE((select sum(c.imp_interes)
	from  creditos.tbl_cuota c
	where  cred.id_credito=c.id_credito and  cred.id_sucursal_credito=c.id_sucursal_credito)   , 0.00)  as total_venta,
tbl_tipoventa.descripcion_larga::text AS tipo_venta,
fac.id_facturacion,
fac.id_sucursal,
fac.id_cliente,
fac.id_direccion,
cred.id_credito,
cred.id_sucursal_credito,
tbl_comprobante.descripcion_corta as comprobante,
fac.serie_facturacion,
fac.numdoc_facturacion,
cli.doc_persona AS dni,
suc.id_empresa
from ventas.tbl_facturacion fac
inner join creditos.tbl_ventacredito  vc on (fac.id_sucursal=fac.id_sucursal and  vc.id_facturacion=fac.id_facturacion)
inner join creditos.tbl_credito cred on (cred.id_credito=vc.id_credito and  cred.id_sucursal_credito=vc.id_sucursal_credito)
INNER JOIN common.tbl_comprobante ON fac.id_comprobante = tbl_comprobante.id_comprobante
INNER JOIN common.tbl_moneda ON fac.id_moneda = tbl_moneda.id_moneda
INNER JOIN ventas.tbl_direccion dir ON dir.id_persona = fac.id_cliente::text  AND dir.id_direccion = fac.id_direccion
INNER JOIN planillas.tbl_persona cli  ON cli.id_persona = dir.id_persona
INNER JOIN common.tbl_tipoventa ON tbl_tipoventa.id_tipoventa = fac.id_tipoventa
INNER JOIN COMMON.TBL_SUCURSAL SUC ON (SUC.ID_SUCURSAL=FAC.ID_SUCURSAL)

FROM CREDITOS.TBL_CUOTA

select *from common.v_ubigeo
select *from common.tbl_distrito
select *from ventas.tbl_facturacion

select *from PLANILLAS.TBL_PERSONA CLI
INNER JOIN VENTAS.TBL_DIRECCION DIR ON (CLI.ID_PERSONA=DIR.ID_PERSONA)
INNER JOIN VENTAS.TBL_SECTOR S ON (S.ID_SECTOR=DIR.ID_SECTOR)
INNER JOIN VENTAS.TBL_ZONA Z ON (Z.ID_ZONA=S.ID_ZONA)
INNER JOIN COMMON.TBL_DISTRITO DIS ON (DIS.ID_DISTRITO=Z.ID_DISTRITO)
INNER JOIN COMMON.TBL_PROVINCIA PROV ON (PROV.ID_PROVINCIA=DIS.ID_PROVINCIA)

SELECT *FROM COOMMON.TBL_SECTOR

select *from ventas.tbl_facturacion

SELECT * FROM (
(
	select ven.nombre_razon as vendedor,
	SUM(df.cantidad*df.precio) as subtotal
	from ventas.tbl_facturacion f
	inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
	inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
	inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
	inner join planillas.tbl_persona ven on(ven.id_persona=f.id_vendedor)
	inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
	group by ven.nombre_razon
	order by subtotal DESC)

UNION
(
SELECT 'TOTAL',
(
	select sum(subtotal) from
	(
		select ven.nombre_razon as vendedor,
			SUM(df.cantidad*df.precio) as subtotal
		from ventas.tbl_facturacion f
		inner join ventas.tbl_detfacturacion df on(f.id_facturacion=df.id_facturacion and f.id_sucursal=df.id_sucursal)
		inner join almacen.tbl_producto p on (p.id_producto=df.id_producto)
		inner join almacen.tbl_familia fa on(fa.id_familia=p.id_familia)
		inner join planillas.tbl_persona ven on(ven.id_persona=f.id_vendedor)
		inner join common.tbl_sucursal s on (s.id_sucursal=df.id_sucursal)
		group by ven.nombre_razon
		order by subtotal DESC
	)as t
)
)--fin consulta 2
) as t order by subtotal --fin consulta mayor

SELECT *FROM  ventas.v_listar_cabecera_facturacion

select * from CREDITOS.v__cuotas__x__cobrar__nc   where id_facturacion='511'

CREATE OR REPLACE FUNCTION func()
  RETURNS void AS
$BODY$
BEGIN

COPY (SELECT * FROM VENTAS.TBL_FACTURACION) TO 'D:/VENTAS2.XLS' HEADER;

--COPY (SELECT * FROM tbl2 WHERE NOT bar) TO '/path/to/my/file/tbl2.csv';

END;
$BODY$
  LANGUAGE plpgsql;

  SELECT *FROM func();

select *from common.tbl_comprobante

delete from ventas.tbl_Detfacturacion where id_facturacion::text || id_sucursal::text
in(
	select id_facturacion::text || id_sucursal::text from ventas.tbl_facturacion where id_comprobante=32
)

delete from caja.tbl_movcaja where id_facturacion::text || id_sucursal_fac::text
in(
	select id_facturacion::text || id_sucursal::text from ventas.tbl_facturacion where id_comprobante=32
)

DELETE FROM caja.tbl_detmovpago WHERE id_movimcaja::TEXT || id_sucursal::TEXT IN(
SELECT id_movimcaja::TEXT || id_sucursal::TEXT from caja.tbl_movcaja where id_facturacion::text || id_sucursal_fac::text
in(
	select id_facturacion::text || id_sucursal::text from ventas.tbl_facturacion where id_comprobante=32
)
)

DELETE FROM CREDITOS.tbl_detpagocuota WHERE id_movimcaja::TEXT || id_sucursal::TEXT IN(
SELECT id_movimcaja::TEXT || id_sucursal::TEXT from caja.tbl_movcaja where id_facturacion::text || id_sucursal_fac::text
in(
	select id_facturacion::text || id_sucursal::text from ventas.tbl_facturacion where id_comprobante=32
)
)

DELETE from caja.tbl_movcaja where id_facturacion::text || id_sucursal_fac::text
in(
	select id_facturacion::text || id_sucursal::text from ventas.tbl_facturacion where id_comprobante=32
)

DELETE from CREDITOS.tbl_ventacredito where id_facturacion::text || id_sucursal::text
in(
	select id_facturacion::text || id_sucursal::text from ventas.tbl_facturacion where id_comprobante=32
)

DELETE from ventas.tbl_facturacion where id_comprobante=32;

SELECT * from ventas.tbl_facturacion where id_comprobante=32;

select *from ventas.tbl_Facturacion

  COPY VENTAS.TBL_FACTURACION FROM 'D:/' WITH XLS HEADER;

  COPY VENTAS.TBL_FACTURACION from 'D:/VENTAS3.XLS' WITH DELIMITER ',' CSV HEADER ;

  COPY VENTAS.TBL_FACTURACION(ID_FACTURACION,FECHA_VENTA) TO 'C:\Temp\lugares.TXT' WITH DELIMITER '|'   CSV HEADER;