Ahora bien, me tope con algo que es tan complejo para mi que hasta me cuesta plantearmelo logicamnte para depsues abordarlo desde el codigo.
Les comento el escenario:
Tengo tres tablas:
Padron: un listado de empresas
Empleados: un listado de empleados de todas las empresas conun campo id_empresa que dierencia a que empresa pertenecen.
DDJJ: un listado igual al listado de empleados, pero con 2 campos mas (mes y año) donde guardo las declaraciones juradas de la nomina de empleados que cada empresa debe realizar mensualmente.
Y un select: que selecciona de la lista de empleados todos los que pertenecen a una empresa ne particular y que ademas estan marcados como activos. (los marco como activo o inactivo para no deletearlos de la base y no perder el registro) que me rellena una tabla dinamica que es una pagina.php con el maestro de los datos.
Para mejor ilustrar:
Tabla padron:
Código:
Tabla empleados:CREATE TABLE `proyecto`.`padron` ( `id_empresa` int( 6 ) NOT NULL auto_increment , `cuit_prefijo` int( 2 ) NOT NULL , `cuit_dni` int( 8 ) NOT NULL , `cuit_subfijo` int( 1 ) NOT NULL , `ingbrutos` varchar( 20 ) collate utf8_unicode_ci NOT NULL , `rsocial` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `calle_fiscal` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `nro_fiscal` varchar( 6 ) collate utf8_unicode_ci NOT NULL , `piso_fiscal` varchar( 2 ) collate utf8_unicode_ci NOT NULL , `dto_fiscal` varchar( 4 ) collate utf8_unicode_ci NOT NULL , `prov_fiscal` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `ciudad_fiscal` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `cp_fiscal` varchar( 8 ) collate utf8_unicode_ci NOT NULL , `calle_laboral` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `nro_laboral` varchar( 6 ) collate utf8_unicode_ci NOT NULL , `piso_laboral` varchar( 2 ) collate utf8_unicode_ci NOT NULL , `dto_laboral` varchar( 4 ) collate utf8_unicode_ci NOT NULL , `prov_laboral` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `ciudad_laboral` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `cp_laboral` varchar( 8 ) collate utf8_unicode_ci NOT NULL , `telef1` varchar( 20 ) collate utf8_unicode_ci NOT NULL , `telef2` varchar( 20 ) collate utf8_unicode_ci NOT NULL , `fax` varchar( 20 ) collate utf8_unicode_ci NOT NULL , `email1` varchar( 40 ) collate utf8_unicode_ci NOT NULL , `email2` varchar( 40 ) collate utf8_unicode_ci NOT NULL , `dia_fechaini` int( 2 ) NOT NULL , `mes_fechaini` int( 2 ) NOT NULL , `anio_fechaini` int( 4 ) NOT NULL , `nombre_contacto` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `apellido_contacto` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `tratamiento` varchar( 15 ) collate utf8_unicode_ci NOT NULL , `usuario` varchar( 16 ) collate utf8_unicode_ci NOT NULL , `password` varchar( 32 ) collate utf8_unicode_ci NOT NULL , `nivel` varchar( 16 ) collate utf8_unicode_ci NOT NULL default 'empresa', PRIMARY KEY ( `id_empresa` ) ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
Código:
Tabla ddjj:CREATE TABLE `proyecto`.`empleados` ( `id_empl` int( 8 ) NOT NULL auto_increment , `id_empresa` int( 6 ) NOT NULL , `cuit_prefijo` int( 2 ) NOT NULL , `cuit_dni` int( 8 ) NOT NULL , `cuit_subfijo` int( 1 ) NOT NULL , `cuil_prefijo` int( 2 ) NOT NULL , `cuil_dni` int( 8 ) NOT NULL , `cuil_subfijo` int( 1 ) NOT NULL , `nombre_empl` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `apellido_empl` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `diaalta_empl` int( 2 ) NOT NULL , `meslta_empl` int( 2 ) NOT NULL , `anioalta_empl` int( 4 ) NOT NULL , `convenio_empl` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `categoria_empl` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `sueldo_empl` varchar( 8 ) collate utf8_unicode_ci NOT NULL , `sueldo_cent_empl` varchar( 2 ) collate utf8_unicode_ci NOT NULL default '00', `activo` varchar( 10 ) collate utf8_unicode_ci NOT NULL default 'Inactivo', PRIMARY KEY ( `id_empl` ) ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
Código:
El select:CREATE TABLE `proyecto`.`ddjj` ( `id_ddjj` int( 10 ) NOT NULL auto_increment , `id_empl` int( 8 ) NOT NULL , `id_empresa` int( 6 ) NOT NULL , `cuit_prefijo` int( 2 ) NOT NULL , `cuit_dni` int( 8 ) NOT NULL , `cuit_subfijo` int( 1 ) NOT NULL , `cuil_prefijo` int( 2 ) NOT NULL , `cuil_dni` int( 8 ) NOT NULL , `cuil_subfijo` int( 1 ) NOT NULL , `nombre_empl` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `apellido_empl` varchar( 50 ) collate utf8_unicode_ci NOT NULL , `diaalta_empl` int( 2 ) NOT NULL , `meslta_empl` int( 2 ) NOT NULL , `anioalta_empl` int( 4 ) NOT NULL , `convenio_empl` varchar( 16 ) collate utf8_unicode_ci NOT NULL , `categoria_empl` varchar( 32 ) collate utf8_unicode_ci NOT NULL , `sueldo__empl` varchar( 8 ) collate utf8_unicode_ci NOT NULL , `mes_ddjj` varchar( 2 ) collate utf8_unicode_ci NOT NULL , `anio_ddjj` varchar( 4 ) collate utf8_unicode_ci NOT NULL , PRIMARY KEY ( `id_ddjj` ) ) ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
Código:
La pagina maestro.php tiene una tabla dinamica que muestra el recordset y un form con 2 textinput (mes, año) y boton enviar.SELECT * FROM empleados WHERE id_empresa = $_SESSION['MM_id_empresa'] AND activo='Activo'
Hasta aca llegue con la ayuda de dreamweaver y leyendo foros, faq's, y los manuales de MYSQL.
Pero estoy trabado en lo siguiente:
Necesito que cuando el usuario apriete el boton enviar del formulario el resultado del select de la tabla empleados (el mismo que me genera la tabla dinamica del maestro.php) se grabe a la tabla ddjj agregando mes y año ingresado en el form a cada registro.
Esto verificando previamente que esa empresa no haya realizado ya una daclaracion jurada para el mismo mes y mismo año, o sea pafra ese mismo periodo mensual.
Se me ocurren dos opciones:
1ra) IF EXISTS (hacer el mismo select agregando al WHERE año_ddjj=$_post['año_ddjj'] AND mes_ddjj=$_post['mes_ddjj'] pero desde la tabla ddjj)
SI VERDADERO emitir un alert indicando que ya se hizo la declaracion jurada por supuesto sin grabar nada en la tabla ddjj,
SI FALSO (hacer el INSERT INTO correspondiente, agregando los campos mes_ddjj y anio_ddjj a cada registro insertado).
2da) (hacer el mismo select agregando al WHERE año_ddjj=$_post['año_ddjj'] AND mes_ddjj=$_post['mes_ddjj'] pero desde la tabla ddjj) y
si el recuento de rows del resultado es =0, hacer el INSERT INTO correspodiente, agregando los campos mes_ddjj y anio_ddjj a cada registro insertado,
y si no mostrar el alert con el mensaje de error
(Esta opcion me parece que no recarga tanto al servidor donde corre la aplicacion).
Como el caso es muy puntual y muy particular, no encuentro en dreamweaver ninguna funcion prediseñada que pueda "toquetear" para poder hacer esto.
Ademas leyendo y googleando, lo mas cercano que encontre es "IF EXISTS UPDATE ELSE INSERT", pero yo no quiero updatear ni insertar nada si es que ya se hizo la DDJJ anteriormente.
Perdon por lo extenso, pero creo que cuando mas claro sea y mas datos aporte, tango mas probabilidades de obtener una buena respuesta.
Gracias de antemano.