---------------------------------------
--- INSERTAR CONCEPTOS QUE NO EXISTEN
---------------------------------------
DECLARE
   cursor cias is
      select cod_cia cia
      from   gen_compania;
BEGIN
   FOR c IN cias
   LOOP
      begin
         --ABOCREDLCN
         insert into concepto 
            (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
             BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
         values
           (c.cia, 'ABOCREDLCN', 'CONVERSION ABONO CREDITO DOLARES', 'CAJ', NULL, 'N', NULL,
             NULL, 'N', 'CNVMON(ABOCREDL, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'S', 0);

         dbms_output.put_line('.... Se inserto concepto ABOCREDLCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto ABOCREDLCN en cia '||c.cia||' ya existe....');
      end;


      ---VENCREDLCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'VENCREDLCN', 'CONVERSION VENTA CREDITO DOLARES', 'VEN', '4-2-00-01', 'C', '6-1',
          NULL, 'N', 'CNVMON(VENCREDL, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto VENCREDLCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto VENCREDLCN en cia '||c.cia||' ya existe....');
      end;

      ---VENCREDLEXCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'VENCREDLEXCN', 'CONVERSION VENTA CREDITO DOLARES EXENTA', 'VEN', '4-2-00-01', 'C', '6-1',
          NULL, 'N', 'CNVMON(VENCREDLEX, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto VENCREDLEXCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto VENCREDLEXCN en cia '||c.cia||' ya existe....');
      end;

      ---VENCREDLGRCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'VENCREDLGRCN', 'CONVERSION VENTA CREDITO DOLARES GRAVADA', 'VEN', '4-2-00-02', 'C', '6-1',
          NULL, 'N', 'CNVMON(VENCREDLGR, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto VENCREDLGRCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto VENCREDLGRCN en cia '||c.cia||' ya existe....');
      end;

      ---DEVCONDLCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEVCONDLCN', 'CONVERSION DEVOLUCION CONTADO DOLARES', 'VEN', '4-2-00-01', 'D', '6-1',
          NULL, 'N', 'CNVMON(DEVCONDL, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEVCONDLCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEVCONDLCN en cia '||c.cia||' ya existe....');
      end;

      ---DEVCONDLEXCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEVCONDLEXCN', 'CONVERSION DEVOLUCION CONTADO DOLARES EXENTA', 'VEN', '4-2-00-01', 'D', '6-1',
          NULL, 'N', 'CNVMON(DEVCONDLEX, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEVCONDLEXCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEVCONDLEXCN en cia '||c.cia||' ya existe....');
      end;

      ---DEVCONDLGRCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEVCONDLGRCN', 'CONVERSION DEVOLUCION CONTADO DOLARES GRAVADA', 'VEN', '4-2-00-02', 'D', '6-1',
          NULL, 'N', 'CNVMON(DEVCONDLGR, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEVCONDLGRCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEVCONDLGRCN en cia '||c.cia||' ya existe....');
      end;

      ---DEVCREDLCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEVCREDLCN', 'CONVERSION DEVOLUCION CREDITO DOLARES', 'VEN', '4-2-00-01', 'D', '6-1',
          NULL, 'N', 'CNVMON(DEVCREDL, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEVCREDLCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEVCREDLCN en cia '||c.cia||' ya existe....');
      end;

      ---DEVCREDLEXCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEVCREDLEXCN', 'CONVERSION DEVOLUCION CREDITO DOLARES EXENTA', 'VEN', '4-2-00-01', 'D', '6-1',
          NULL, 'N', 'CNVMON(DEVCREDLEX, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEVCREDLEXCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEVCREDLEXCN en cia '||c.cia||' ya existe....');
      end;

      ---DEVCREDLGRCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEVCREDLGRCN', 'CONVERSION DEVOLUCION CREDITO DOLARES GRAVADA', 'VEN', '4-2-00-02', 'D', '6-1',
          NULL, 'N', 'CNVMON(DEVCREDLGR, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEVCREDLGRCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEVCREDLGRCN en cia '||c.cia||' ya existe....');
      end;

      --NOTACREDITO 
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'NOTACREDITO', 'NOTA CREDITO POS', 'VEN', '4-1-00-01', 'D', NULL,
          NULL, 'N', NULL, 'CL', 0, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto NOTACREDITO en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto NOTACREDITO en cia '||c.cia||' ya existe....');
      end;

      --NOTADEBITO 
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'NOTADEBITO', 'NOTA DEBITO POS', 'VEN', '4-1-00-01', 'C', NULL,
          NULL, 'R', NULL, 'CL', 0, NULL, 'N', 0);

         dbms_output.put_line('.... Se inserto concepto NOTADEBITO en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto NOTADEBITO en cia '||c.cia||' ya existe....');
      end;

      ---DEPBACDL
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEPBACDL', 'DEPOSITO BAC DOLARES', 'BAN', NULL, 'N', NULL,
          '905537551', 'N', NULL, 'DL', 0, '02', 'N', 0);

         dbms_output.put_line('.... Se inserto concepto DEPBACDL en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEPBACDL en cia '||c.cia||' ya existe....');
      end;

      ---DEPBACDLCN
      begin
      insert into concepto 
         (CIA, CONCEPTO, DESCRIPCION, GRUPO, CUENTA, ESDEBITOCREDITO, CUENTAPUENTE,
          BANCO, EFECTO, FORMULA, MONEDA, PRIORIDAD, TIPO_MOVBAN, REPORTA, ORDENIMP)
      values
        (c.cia, 'DEPBACDLCN', 'CONVERSION DEPOSITO BAC DOLARES', 'BAN', '1-1-01-02', 'D', '6-1',
          '905537551', 'R', 'CNVMON(DEPBACDL, TIPOCAMBIO, CAMBIOBASE)', 'CL', 1, '02', 'S', 0);

         dbms_output.put_line('.... Se inserto concepto DEPBACDLCN en cia '||c.cia||'....');
      exception
         when dup_val_on_index then
            dbms_output.put_line('.... Concepto DEPBACDLCN en cia '||c.cia||' ya existe....');
      end;
   END LOOP;

   --Arregla formulas malas
   UPDATE CONCEPTO
   SET    FORMULA='VENCONDLEX+VENCONDLGR-ABOCONDL'
   WHERE  CONCEPTO='CONENTDL';
   dbms_output.put_line('.... Se corrigio formula de CONENTDL ....');

   UPDATE CONCEPTO
   SET    FORMULA='CNVMON(CONENTDL,TIPOCAMBIO, CAMBIOBASE)'
   WHERE  CONCEPTO='CONENTDLCN';
   dbms_output.put_line('.... Se corrigio formula de CONENTDLCN ....');

   UPDATE CONCEPTO
   SET    FORMULA='CNVMON(EFEDL, TIPOCAMBIO, CAMBIOBASE)'
   WHERE  CONCEPTO='EFEDLCN';
   dbms_output.put_line('.... Se corrigio formula de EFEDLCN ....');

   UPDATE CONCEPTO
   SET    FORMULA='RECTEL * 0.10'
   WHERE  CONCEPTO='RECTELCOM';
   dbms_output.put_line('.... Se corrigio formula de RECTELCOM ....');

   UPDATE CONCEPTO
   SET    FORMULA='RECTEL - RECTELCOM'
   WHERE  CONCEPTO='RECTELNET';
   dbms_output.put_line('.... Se corrigio formula de RECTELNET ....');

   UPDATE CONCEPTO
   SET    FORMULA='CNVMON(VENCONDLEX, TIPOCAMBIO, CAMBIOBASE)'
   WHERE  CONCEPTO='VENCONDLEXCN';
   dbms_output.put_line('.... Se corrigio formula de VENCONDLEXCN ....');

   UPDATE CONCEPTO
   SET    FORMULA='CNVMON(VENCONDLGR, TIPOCAMBIO, CAMBIOBASE)'
   WHERE  CONCEPTO='VENCONDLGRCN';
   dbms_output.put_line('.... Se corrigio formula de VENCONDLGRCN ....');

exception
   when others then
      raise_application_error(-20001, 'ERROR insertando conceptos nuevos: '||sqlerrm);
END;
/
