Informe con el que podemos generar el Planning de la explotación. El botón que genera está en Reproducción → Informes → Informes RE, el id de referencia es imprimePla, el id del informe es admin/central/14. La interfaz está definida en client/principal/f_informes_RE.xml. La ejecución comienza imprimePla.addActionListener - Primero obtenemos los registros de los animales que tenemos en la tabla de la interfaz de [[barra_menu_principal:menu_reproduccion#informes_re|Informes RE]] - Consultamos la entidad ''EAnimales'' para obtener los registros de la base de datos para los animales de la tabla anterior. - Con estos datos conformamos un Hashtable y hacemos una consulta nuevamente la entidad ''EAnimales'' con el flag de consulta ''planin'' con valor ''si'', también con el valor "mostra" que es el valor que tenemos en un selector que tenemos en la interfaz. - En la entidad EAnimales creamos un EntityResult con el valor generado por el método ''fai_planin'' - Borramos los datos de la entidad ''EInf_planing'' - Comenzamos a iterar por los animales - Para cada animal obtenemos primero los datos de la explotación a la que pertenece - Si en el selector que tenemos en la interfaz seleccionamos "muestra" creamos una variable ''nom'' con el valor "nombre", si seleccionamos "n_establo" se nos llena la variable ''nom'' con el valor del número de establo que tenga asignado el animal. - De la entidad ''EExplotaciones'' obtenemos el nombre del **propietario** y el **cea** y si no hubiesen resultados entonces los obtenemos desde la tabla de Animales - Utilizamos el método ''calculaFechaMeses'' para calcular las fechas correspondientes al siguiente mes, luego al siguiente y así hasta los 12 meses siguientes. - Inicializamos las variables ''mes_1'', ''mes_2'' hasta ''mes_12'' que contendrán las cadenas para los títulos de las columnas de los meses - Inicializamos las variables ''mes1'', ''mes2'', hasta el ''mes12'' que contienen el valor numérico de los meses siguientes - Lo mismo para el año - Rellenamos las variables de ''mes1'', ''mes2'' ... para que sean cadenas como **01/2023**, **02/2023**, etc.. - Pasamos estas variables a un Hashtable llamado ''av'' - Inicializamos el Hashtable con los valores para cada mes y para cada línea de cada casilla - Inicializamos en el Hashtable con el nombre del padre del animal, el número de saneamiento, la fecha de nacimiento, el nombre del técnico, teléfono, fecha de parto´, ícono del parto, fecha de la 1ª inseminación, fecha de la última inseminación, el número de inseminaciones. - Si el animal tiene relleno el campo del padre, entonces rellenamos el nombre del toro - Rellenamos el Hashtable con los datos del número de saneamiento y la fecha de nacimiento - Obtenemos los datos del técnico de ETecnicos, si no existen entonces de EAdministradores, si no hubiesen entonces de EGanaderos - Consultamos la tabla del **Historial Animales** para el último registro que no sea ni //Mamitis// ni //Alta// y que sea menos a la fecha en la que se consulta - Si hay resultados entonces rellenamos fecha de parto si existe, también con la fecha de la 1ª inseminación, la de última inseminación, el número de inseminaciones - También en el historial obtenemos el estado y el nombre corto del toro - Si la fecha de parto que obtuvimos en el paso 21 contiene algún valor, entonces consultamos en ''EAcciones_animales_RE'' para obtener el registro para el animal en la fecha de parto y de ahí obtenemos si es parto múltiple, macho o hembra. - Ahora volvemos a consultar la tabla de Historial Animal para el último registro, que no sea ni Mamitis ni Alta, y de aquí sacamos la fecha de parto y secado previsto - Además tenemos una variable **parida** con la que vamos controlando si la vaca está parida basándonos en el tipo de acciones insertadas - Si de la consulta de acciones obtenemos solo un resultado entonces en la segunda línea ponemos las fechas de secado previsto y el ícono de **ojo secado previsto** - Si de la consulta de acciones obtenemos dos resultados entonces en la tercera línea ponemos las fechas de parto previsto y el ícono de **ojo parto previsto** - Si de la consulta de acciones no obtenemos ningún resultado entonces en la segunda y tercera línea ponemos las fechas de secado y parto previsto y el ícono los íconos correspondientes - Ahora vamos rellenando los datos para las fechas de los posteriores 12 meses - Finalmente en dependencia del estado del animal rellenamos el valor "est" y el "todo_gest" al Hashtable - Insertamos el valor del Hashtable en la table Einformes_planin y tambien a un al EntityResult que le pasamos el método generador de informes. Así es el informe de planning {{ ::inform_planin.png?nolink&600 |}}