#!/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 ${Pago} 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 "(.*)" "${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}