178 lines
5.2 KiB
Bash
178 lines
5.2 KiB
Bash
#!/bin/bash
|
|
|
|
SOFTWARE_PIN='20234'
|
|
SOFTWARE_ID='100b0d10-0ca0-4ad4-a894-b704a568cbf3'
|
|
NIT='901575528'
|
|
DV='2'
|
|
TIPO_AMBIENTE='AMBIENTE_PRUEBAS'
|
|
RAZON_SOCIAL='BICI PIZZA S.A.S'
|
|
SET_PRUEBAS='be4d232c-9c7b-4542-b24d-6044c4e316ce'
|
|
PASSPHARASE='7U3XbtZ76W'
|
|
#La ruta donde se encuentren estos archivos
|
|
LLAVE_PRIVADA='privada.pem'
|
|
LLAVE_PUBLICA='publica.pem'
|
|
CERTIFICADO='Certificado.pfx'
|
|
HABILITACION='True'
|
|
ARCHIVO_CSV='nomina.csv'
|
|
|
|
IFS=,
|
|
while read line; do
|
|
|
|
field=( $line )
|
|
|
|
Prefijo=${field[0]}
|
|
Numero=${field[1]}
|
|
Nombre=${field[2]}
|
|
P_Apellido=${field[3]}
|
|
S_Apellifo=${field[4]}
|
|
Cedula=${field[5]}
|
|
Direccion=${field[6]}
|
|
Salario=${field[7]}
|
|
Sueldo=${field[12]}
|
|
Dias=${field[8]}
|
|
Salud=${field[9]}
|
|
Pension=${field[10]}
|
|
AuxTp=${field[11]}
|
|
Pago=${field[13]}
|
|
Ingreso=${field[14]}
|
|
Inicio=${field[15]}
|
|
Fin=${field[16]}
|
|
Generacion=${field[17]}
|
|
Hora=${field[18]}
|
|
|
|
echo "
|
|
from facho import fe
|
|
|
|
SOFTWARE_PIN='${SOFTWARE_PIN}'
|
|
SOFTWARE_ID='${SOFTWARE_ID}'
|
|
NIT='${NIT}'
|
|
DV='${DV}'
|
|
|
|
def extensions(nomina):
|
|
return []
|
|
|
|
def nomina():
|
|
nomina = fe.nomina.DIANNominaIndividual()
|
|
|
|
nomina.asignar_fecha_pago('${Pago}')
|
|
|
|
nomina.asignar_metadata(fe.nomina.Metadata(
|
|
novedad=fe.nomina.Novedad(value='false'),
|
|
secuencia=fe.nomina.NumeroSecuencia(
|
|
prefijo='${Prefijo}',
|
|
consecutivo='${Numero}'
|
|
),
|
|
lugar_generacion=fe.nomina.Lugar(
|
|
pais = fe.nomina.Pais(
|
|
code = 'CO'
|
|
),
|
|
departamento = fe.nomina.Departamento(
|
|
code = '05'
|
|
),
|
|
municipio = fe.nomina.Municipio(
|
|
code = '05001'
|
|
),
|
|
),
|
|
proveedor=fe.nomina.Proveedor(
|
|
razon_social='${RAZON_SOCIAL}',
|
|
nit=NIT,
|
|
dv=DV,
|
|
software_id=SOFTWARE_ID,
|
|
software_pin=SOFTWARE_PIN
|
|
)
|
|
))
|
|
|
|
nomina.asignar_periodo(fe.nomina.Periodo(
|
|
fecha_ingreso= '${Ingreso}',
|
|
fecha_liquidacion_inicio='${Inicio}',
|
|
fecha_liquidacion_fin='${Fin}',
|
|
fecha_generacion='${Generacion}'
|
|
))
|
|
|
|
nomina.asignar_informacion_general(fe.nomina.InformacionGeneral(
|
|
fecha_generacion = '${Generacion}',
|
|
hora_generacion = '${Hora}-05:00',
|
|
tipo_ambiente = fe.nomina.InformacionGeneral.${TIPO_AMBIENTE},
|
|
software_pin = SOFTWARE_PIN,
|
|
periodo_nomina = fe.nomina.PeriodoNomina(code='1'),
|
|
tipo_moneda = fe.nomina.TipoMoneda(code='COP')
|
|
))
|
|
|
|
nomina.asignar_pago(fe.nomina.Pago(
|
|
forma=fe.nomina.FormaPago(
|
|
code='1',
|
|
),
|
|
metodo=fe.nomina.MetodoPago(
|
|
code='10'
|
|
)
|
|
))
|
|
nomina.asignar_empleador(fe.nomina.Empleador(
|
|
razon_social='${RAZON_SOCIAL}',
|
|
nit = NIT,
|
|
dv = DV,
|
|
pais = fe.nomina.Pais(
|
|
code = 'CO'
|
|
),
|
|
departamento = fe.nomina.Departamento(
|
|
code = '05'
|
|
),
|
|
municipio = fe.nomina.Municipio(
|
|
code = '05001'
|
|
),
|
|
direccion = 'calle etrivial'
|
|
))
|
|
|
|
nomina.asignar_trabajador(fe.nomina.Trabajador(
|
|
tipo_contrato = fe.nomina.TipoContrato(
|
|
code = '1'
|
|
),
|
|
alto_riesgo = False,
|
|
tipo_documento = fe.nomina.TipoDocumento(
|
|
code = '11'
|
|
),
|
|
primer_apellido = '${P_Apellido}',
|
|
segundo_apellido = '${S_Apellido}',
|
|
primer_nombre = '${Nombre}',
|
|
lugar_trabajo = fe.nomina.LugarTrabajo(
|
|
pais = fe.nomina.Pais(code='CO'),
|
|
departamento = fe.nomina.Departamento(code='05'),
|
|
municipio = fe.nomina.Municipio(code='05001'),
|
|
direccion = '${Direccion}'
|
|
),
|
|
numero_documento = NIT,
|
|
tipo = fe.nomina.TipoTrabajador(
|
|
code = '01'
|
|
),
|
|
salario_integral = False,
|
|
sueldo = fe.nomina.Amount(${Sueldo})
|
|
))
|
|
|
|
nomina.adicionar_devengado(fe.nomina.DevengadoBasico(
|
|
dias_trabajados = ${field[8]},
|
|
sueldo_trabajado = fe.nomina.Amount(${Salario})
|
|
))
|
|
|
|
nomina.adicionar_deduccion(fe.nomina.DeduccionSalud(
|
|
porcentaje = fe.nomina.Amount(4),
|
|
deduccion = fe.nomina.Amount(${Salud})
|
|
))
|
|
|
|
nomina.adicionar_deduccion(fe.nomina.DeduccionFondoPension(
|
|
porcentaje=fe.nomina.Amount(4),
|
|
deduccion = fe.nomina.Amount(${Pension})
|
|
))
|
|
return nomina
|
|
" > "${Prefijo}${Numero}".py
|
|
facho generate-nomina --private-key ${CERTIFICADO} --passphrase ${PASSPHARASE} --use-cache-policy --sign "${field[0]}${field[1]}".py "${Prefijo}${Numero}".xml
|
|
CUNE=`grep -oP "<CodigoQR>(.*)</CodigoQR>" "${Prefijo}${Numero}".xml | sed -n 's/.*documentkey=\([^<]*\)<\/CodigoQR>.*/\1/p'`
|
|
zip "${field[0]}${field[1]}".zip "${field[0]}${field[1]}".xml
|
|
if [ "$HABILITACION" == "True" ];then
|
|
facho soap-send-test-set-async --private-key ${LLAVE_PRIVADA} --public-key ${LLAVE_PUBLICA} --habilitacion --password ${PASSPHARASE} --test-setid ${SET_PRUEBAS} "${field[0]}${field[1]}".xml "${field[0]}${field[1]}".zip
|
|
else
|
|
facho soap-send-nomina-sync --private-key ${LLAVE_PRIVADA} --public-key ${LLAVE_PUBLICA} --password ${PASSPHARASE} "${field[0]}${field[1]}".xml "${field[0]}${field[1]}".zip --produccion
|
|
fi
|
|
|
|
|
|
done < ${ARCHIVO_CSV}
|
|
|