Version 5 (modified by pablo, 14 years ago)

--


Ver adjunto regente_instalacion_windows.txt (que contiene versión por Leo al mie 25/8/2010).

En el directorio \\192.168.1.7\soft\soft\regente en windows encontramos lo necesario para hacer la instalación.

Sistema Operativo:

*-Instalar Sistema Operativo con todos sus Drivers (La clave que le pongo al usuario administrador es bodrone33)

*-Instalar El winRar

*-Instalar el crack del xp http://192.168.1.10/soft/crackxp.rar chequear que no este el cd de xp en la lectora

*-Instalar el Antivirus y actualizarlo

*-Levantar el servicio telnet y asegurarse de que quede accesible (y que el equipo esté detrás de un firewall o router o que tenga firewall para que sólo nosotros podamos acceder vía telnet. *-Instalar algunas utilidades gnu para poder administrar vía línea de comandos por telnet. Por ejemplo tail.exe y wget.exe:
http://www.bircherasociados.com.ar/soft/unix_utils/tail.exe
http://www.bircherasociados.com.ar/soft/unix_utils/wget.exe
Otros: grep.exe, zip.exe, unzip.exe, tar.exe, rar.exe, unrar.exe,

Pasos necesarios para Regente:

*-Instalar el Apache (instalarlo como default)

*-Copiar el C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf\httpd.conf (remplazando el original) tener en cuenta si es para php4 o php5

*-Si va con php5. Copiar la carpeta php5 en el c: tener en cuenta que para el php5 el ini va dentro de esa misma carpeta, y el httpd.conf hay que copiar el que dice httpd- php5 y despues cambiarle en nombre a httpd. El archivo c:\php5\php5ts.dll copiarlo en c:\windows\system32

*-Si va con php4. Copiar la carpeta php que esta dentro del directorio php4 y el ini hay que copiarlo en c:\windows. El httpd.conf hay que copiar el que dice httpd-php4 y despues cambiarle en nombre a httpd.

*-Crear la carpeta de proyectos c:\proyectos

*-Copiar el Actualizar el la carpeta c:\proyectos

*-Instalar el postgre (postgresql-8.2), el usuario que uso es sistemas pass hwxn440, despues salen dos alertas. Cuando pregunta sobre el usuario del servicio poner SI y en la segunda poner q NO. Luego en Superuser name ingresar "sistemas" y la misma password. Todo lo q sigue por default.

*- Insatalar el postgre 8.3.6.1, automaticamente crea la instalacion con el usuario postgre, y en la instalacion pide la clave del usuario postgre (hwxn440) tener en cuenta que despues de terminar la instalacion le creamos el usuario sistemas con la misma clave desde el pgadmin. Durante la instalación pide los datos de la localizacion, seleccionamos "spanish, argentina". Este instalador tiene un bug, el cual no nos deja iniciar el servicio. Al usuario postgres no le da permisos a la carpeta de instalación para que pueda crear el posmaster.pid. Para esto seguimos estos pasos:

-> abrir el explorador de windows ir a la carpeta C:\Archivos de programa\PostgreSQL\8.3\
-> Ir al menú Herremientas / Opciones de Carpeta / Ver y destildar el último iten que dice "Usar uso compartido simple de archivo"
-> sobre la carpeta data clic derecho / propiedades, vamos a la solapa seguridad, y agregamos el usuario postgres, y le damos permisos de control total.

* - En el Archivo de configuracion de postgre, cambiar los parametros de configuracion:

En el archivo pg_hba agregar la linea 
host    all         all         192.168.0.0/16          md5
debajo de IP ver 4

En el archivo postgresql agregar la linea 
datestyle = 'iso, dmy'
y comentar la linea datestyle = 'iso, mdy'
agregar la linea 
statement_timeout = 240000
debajo de la linea #statement_timeout = 0
agregar la linea
listen_addresses = '*'
arriba de la linea #listen_addresses = 'localhost'

* - Instalar el Wincvs (wincvs_setup.exe) todo por default.

* - Ejecutar el Actualizar.bat

* - Crear la carpeta c:\logs

* - Para restaurar un backup de regente preguntar a Pablo cual está disponible.

* - Instalar paquetes Office

* - Instalar Acrobat

* - Instalar el OpenVpn?-gui(Los certificados que le creamos para el cliente son del server de bodrone.):

* - Tener dos usuarios: administrador con una clave nuestra (bodrone33), como se necesita otro usuario administrador para poder bajar el usuario regente a sin privilegios, creamos el usuario propietario con la misma pass de administrador. Un usuario regente, sin privilegios, sólo para abrir el explorer y ejecutar el regente local.

* - Instalar una secion de logmein, para esto entrar en la pagina www.logmein.com, ingresar con el usuario soporte@…, contraseña, la misma del vnc. Despues ir a la parte de agregar una pc y bajar el free. Despues de instalarla, entrar desde otra maquina a la pagina y chequear que se puede entrar en la pc. Cuando pide el segundo usuario para entrar en la pc, es el usuario y la contraseña de la pc.

* - Poner como sitio de confianza localhost, 127.0.0.1, www.bodroneonline.com.ar, 200.81.232.99. Para los sitios personalizados habilitar todas las funciones.

********************************************************************************
* - Seguir los pasos para instalar la impresora fiscal *
********************************************************************************
Además, este es el procedimiento para instalar impresora fiscal:

Regente:Hasar:Instalacion - de Proyectos

_*Instalación de Impresora Fiscal Hasar en un puesto Regente *_Tareas sobre la pc con Windows XP en la cual se va a conectar la impresora fiscal en el puerto serie com1._* *_

  1. Descargar este archivo: http://www.bircherasociados.com.ar/soft/hasar/winfis32.dll y guardarlo en c:\windows\system32\ (o windows\system en xp) (escribir esa url en el navegador y el sistema va a proponer descargarlo).
  2. Descargar este otro archivo: http://www.bircherasociados.com.ar/soft/hasar/fiscal010724.ocx y guardarlo en c:\windows\system32\ (o windows\system en xp)
  3. Abrir una ventana de línea de comandos: Para eso ir al boton Inicio, ejecutar, y luego escribir: cmd y "ENTER" Si salió bien, tiene que aparecer una ventana negra con un cursor titilando para escribir.
  4. En esa ventana escribir: cd \windows\system32 (o windows\system en xp) y "ENTER" regsvr32 fiscal010724.ocx y "ENTER" Si ejecuta bien el comando, puede salir un mensaje avisando eso (si es en inglés puede decir "DllRegisterServer? in fiscal010724.ocx succeeded") Cerrar la ventana de línea de comandos escribiendo "exit" y presionando "ENTER".
  5. Abrir la ventana de Regente.
  6. Copiar del regente.ini de bodrone la parte de [comprobante] En este caso dice esto

[comprobante] maxlengthdescrcondventa=50 obsepredet="Recibi conforme el articulo que se detalla con todos sus accesorios" pagoulprenoefectivo=nograbar ;predet:autorizar (envia a autorizar pero deja grabar)


********************************************************************************

* - Tomar el ini y cambiarle el valor que corresponde al area, de la tabla areas de regente tomar el numero correcto. dentro de [conexion] cambiar el idDb="18" Despues cambiar dentro de [general] el valor foro="http://www.bodroneonline.com.ar/regente/_tmp/forodemo.txt"

* - Hacer una tarea programada para hacer la replicarion, dentro del directorio c:\proyectos\replicacion\tareas ponemos el bat suscriptor.bat. La tarea rogramada la ponemos que se ejecute cada 15 minutos durante 14 hs. Asi esta en esquina que es la primer sucursal que esta instalada.

* - Para restaurar el backup de regente con los datos, seguir estos pasos. Por las dudas los script se vean mal en la wiki los voy a adjuntar en un archivo txt.

/*Ejecutar antes de restaurar.*/

*- Crear el usuario "replicacion" contraseña "hwxn440" (en caso de olvidarse y correr la restauracion correr esto: GRANT ALL ON SCHEMA replicacion TO replicacion; GRANT ALL ON TABLE replicacion.rep_instrucciones TO replicacion; despues de restaurar)

CREATE OR REPLACE FUNCTION comp_mon_cotiz_base(integer)

RETURNS double precision AS

$BODY$--recibe id de comp de cliente y devuelve cotiz. de la moneda del comprobante select 1::float8$BODY$

LANGUAGE 'sql' IMMUTABLE;

CREATE OR REPLACE FUNCTION art_comp_en_rd(integer, integer)

RETURNS integer AS

$BODY$select 0::int4$BODY$

LANGUAGE 'sql' IMMUTABLE;

CREATE OR REPLACE FUNCTION cant_cd_rd_por_comp(integer, integer)

RETURNS double precision AS

'SELECT 0::float8'

LANGUAGE 'sql' IMMUTABLE;

CREATE OR REPLACE FUNCTION cant_cd(integer, integer)

RETURNS double precision AS

'SELECT 0::float8'

LANGUAGE 'sql' IMMUTABLE;

CREATE OR REPLACE FUNCTION art_rd_en_comp(integer, integer)

RETURNS integer AS

$BODY$select 0::int4$BODY$

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION art_rd_en_oc(integer, integer)

RETURNS integer AS

$BODY$select 0::int4$BODY$

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION cant_ocd_rd_por_rd(integer, integer)

RETURNS double precision AS

'SELECT 0::float8'

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION cant_rd(integer, integer)

RETURNS double precision AS

'SELECT 0::float8'

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION cant_cd_rd_por_rd(integer, integer)

RETURNS double precision AS

'SELECT 0::float8'

LANGUAGE 'sql' STABLE;

/* Si el restore tiene nueve errores, está ok:WARNING: errors ignored on restore: 9 Son las 9 funcs. que ya existen.

ASÍ EL RESTORE DEMORA 6 MINUTOS*/

Correr esto para agregar unos campos

ALTER TABLE sujetos ADD COLUMN memo character varying(4096); DROP VIEW comp_v; CREATE OR REPLACE VIEW comp_v AS SELECT c.id_comp, c.letra, c.id_puesto, c.nro_comp, c.fecha, c.id_area, c.id_sujeto, c.obse, c.id_usuario, c.imp_total, c.obse_impre, c.id_moneda, c.estado_imp, c.fec_auto, c.obse_auto, c.id_usuario_auto, c.logcausas_auto, c.id_tipo_comp, c.pago, c.total_fiscal, c.id_vendedor, c.rem_fiscal, c.ult_modif, c.cotiz_base_comp, c.id_rubro_comp, c.nroz, c.id_comp_terceros, c.id_cp, ((COALESCE(ct.tc, ::character

varying)::text COALESCE(c.letra, ::character varying)::text) '-'::text)

compdes(c.id_puesto, c.nro_comp)::text AS nro, m.moneda, m.signo,

s.sujeto, a.area, s.doc AS cuit, s.direccion, s.memo, ci.condicion, ci.cod_cf AS id_cond_cf, ci.completra, ci.ci, l.localidad, sdt.tipo_doc_cf, ct.signo_comp, ct.tipo_comp, ct.tc, ct.esventa, cr.rubro_comp, s.cod_postal, p.provincia, a.id_tipo_comp_simple, cts.tipo_comp AS tipo_comp_simple, cp.descripcion AS descr_cp

FROM comp c LEFT JOIN sujetos s ON c.id_sujeto = s.id_sujeto LEFT JOIN condiciones_iva ci ON s.id_condicion = ci.id_condicion LEFT JOIN localidades l ON s.cod_postal::text = l.id_localidad::text LEFT JOIN provincias p ON l.id_provincia = p.id_provincia LEFT JOIN areas a ON c.id_area = a.id_area LEFT JOIN monedas m ON c.id_moneda = m.id_moneda LEFT JOIN sujetos_doc_tipos sdt ON s.id_tipo_doc = sdt.id_tipo_doc LEFT JOIN comp_tipos ct ON c.id_tipo_comp = ct.id_tipo_comp LEFT JOIN comp_rubros cr ON c.id_rubro_comp = cr.id_rubro_comp LEFT JOIN comp_tipos cts ON a.id_tipo_comp_simple = cts.id_tipo_comp LEFT JOIN centros_productivos cp ON c.id_cp = cp.id_cp;

/*Ejecutar después de restaurar*/ CREATE OR REPLACE FUNCTION comp_mon_cotiz_base(integer)

RETURNS double precision AS

$BODY$--recibe id de comp de cliente y devuelve cotiz. de la moneda del comprobante select cotiz_base_comp from comp where id_comp = $1$BODY$

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION art_comp_en_rd(integer, integer)

RETURNS integer AS

$BODY$select distinct rd.id_articulo from cd_rd left join remitos_detalles rd on cd_rd.id_rem = rd.id_remito and cd_rd.id_rem_det = rd.id_det where cd_rd.id_comp = $1 and cd_rd.id_comp_det = $2$BODY$

LANGUAGE 'sql' STABLE;

COMMENT ON FUNCTION art_comp_en_rd(integer, integer) IS 'Dada una fila de comprobante devuelve los arts de los remitos det. asociados. Deberia ser un solo art. y el mismo que el del detalle del comp';

CREATE OR REPLACE FUNCTION cant_cd_rd_por_comp(integer, integer)

RETURNS double precision AS

'SELECT coalesce(sum(coalesce(cant,0)),0) FROM cd_rd WHERE id_comp = $1 AND id_comp_det = $2'

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION cant_cd(integer, integer)

RETURNS double precision AS

'SELECT coalesce(cant,0) FROM comp_det WHERE id_comp = $1 AND id_det = $2'

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION art_rd_en_comp(integer, integer)

RETURNS integer AS

$BODY$select distinct cd.id_articulo from cd_rd

left join comp_det cd on cd_rd.id_comp = cd.id_comp and cd_rd.id_comp_det = cd.id_det where cd_rd.id_rem = $1 and cd_rd.id_rem_det = $2$BODY$

LANGUAGE 'sql' STABLE;

COMMENT ON FUNCTION art_rd_en_comp(integer, integer) IS 'Dada una fila de remito devuelve los arts de comp_det asociados. Deberia ser un solo art. y el mismo que el del detalle del remito';

CREATE OR REPLACE FUNCTION art_rd_en_oc(integer, integer)

RETURNS integer AS

$BODY$select distinct ocd.id_articulo from ocd_rd left join ordenes_compra_det ocd on ocd_rd.id_oc = ocd.id_oc and ocd_rd.id_oc_det = ocd.id_det where ocd_rd.id_rem = $1 and ocd_rd.id_rem_det = $2$BODY$

LANGUAGE 'sql' STABLE;

COMMENT ON FUNCTION art_rd_en_oc(integer, integer) IS 'Dada una fila de remito devuelve los arts de las ordenes_compra_det asociados. Deberia ser un solo art. y el mismo que el del detalle del remito';

CREATE OR REPLACE FUNCTION cant_ocd_rd_por_rd(integer, integer)

RETURNS double precision AS

'SELECT coalesce(sum(coalesce(cant,0)),0) FROM ocd_rd WHERE id_rem = $1 AND id_rem_det = $2'

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION cant_rd(integer, integer)

RETURNS double precision AS

'SELECT coalesce(cant,0) FROM remitos_detalles WHERE id_remito = $1 and id_det = $2'

LANGUAGE 'sql' STABLE;

CREATE OR REPLACE FUNCTION cant_cd_rd_por_rd(integer, integer)

RETURNS double precision AS

'SELECT coalesce(sum(coalesce(cant,0)),0) FROM cd_rd WHERE id_rem = $1 AND id_rem_det = $2'

LANGUAGE 'sql' STABLE;

DROP VIEW sujetos_v; CREATE OR REPLACE VIEW sujetos_v AS SELECT s.*, s.doc AS cuit, ci.condicion, ci.completra, ci.id_tipo_doc_pred, t.transporte, td.tipo_doc, l.localidad, le.localidad AS localidad_efec, rgt.afip_norm, l.id_provincia, p.provincia, ci.id_condicion_tercero, td.id_tipo_doc_tercero, lt.sujeto AS lug_tra, pl.listap AS listap_cli, ec.estado_civil, pr.profesion, c.calle AS dir_calle, pa.pais AS nacionalidad, ci.ci, lpad(s.id_sujeto::text, 13, 0::text) AS cod_barras

FROM sujetos s LEFT JOIN localidades l ON s.cod_postal::text = l.id_localidad::text LEFT JOIN localidades le ON s.cod_postal_efec::text = le.id_localidad::text LEFT JOIN provincias p ON l.id_provincia = p.id_provincia LEFT JOIN transporte t ON s.id_transporte = t.id_transporte LEFT JOIN condiciones_iva ci ON s.id_condicion = ci.id_condicion LEFT JOIN ret_gan_tipos rgt ON rgt.id_rg = s.id_rg LEFT JOIN sujetos_doc_tipos td ON s.id_tipo_doc = td.id_tipo_doc LEFT JOIN sujetos lt ON s.id_lug_tra = lt.id_sujeto LEFT JOIN precios_listas pl ON s.id_listap_cli = pl.id_listap LEFT JOIN estados_civiles ec ON s.id_estado_civil = ec.id_estado_civil LEFT JOIN profesiones pr ON s.id_profesion = pr.id_profesion LEFT JOIN calles c ON s.id_calle = c.id_calle LEFT JOIN paises pa ON s.id_nacionalidad = pa.id_pais;

CREATE OR REPLACE VIEW comp_combo_v AS

SELECT NULL::integer AS id_comp, NULL::integer AS id_det, NULL::integer AS

id_listap, NULL::integer AS id_articulo, NULL::character varying AS descripcion, NULL::character varying AS descrart, NULL::numeric AS precio, NULL::numeric AS cant, NULL::numeric AS p_unitario, NULL::numeric AS costo, NULL::numeric AS iva, NULL::numeric AS impint, NULL::double precision AS cant_en_combo, NULL::double precision AS subtotal; COMMENT ON VIEW comp_combo_v IS 'Tabla que se usa para enganiar al motor de regente para que nos cree el atributo info en el listado de componentes, es necesario para cuando se usan los combos y la habilidad para detallar las partes de los mismos'; CREATE OR REPLACE FUNCTION art_cant_en_combo(integer, integer) RETURNS double precision AS $BODY$--$1 idarticulo, $2 idcombo Devuelve la cantidad del art id_articulo($1) que participa en el combo $2 select cant from articulos_combos where id_articulo = $1 and id_art_combo =$2;$BODY$

LANGUAGE 'sql' STABLE;

ALTER TABLE sujetos ADD COLUMN memo character varying(4096); DROP VIEW comp_v; CREATE OR REPLACE VIEW comp_v AS SELECT c.id_comp, c.letra, c.id_puesto, c.nro_comp, c.fecha, c.id_area, c.id_sujeto, c.obse, c.id_usuario, c.imp_total, c.obse_impre, c.id_moneda, c.estado_imp, c.fec_auto, c.obse_auto, c.id_usuario_auto, c.logcausas_auto, c.id_tipo_comp, c.pago, c.total_fiscal, c.id_vendedor, c.rem_fiscal, c.ult_modif, c.cotiz_base_comp, c.id_rubro_comp, c.nroz, c.id_comp_terceros, c.id_cp, ((COALESCE(ct.tc, ::character

varying)::text COALESCE(c.letra, ::character varying)::text) '-'::text)

compdes(c.id_puesto, c.nro_comp)::text AS nro, m.moneda, m.signo,

s.sujeto, a.area, s.doc AS cuit, s.direccion, s.memo, ci.condicion, ci.cod_cf AS id_cond_cf, ci.completra, ci.ci, l.localidad, sdt.tipo_doc_cf, ct.signo_comp, ct.tipo_comp, ct.tc, ct.esventa, cr.rubro_comp, s.cod_postal, p.provincia, a.id_tipo_comp_simple, cts.tipo_comp AS tipo_comp_simple, cp.descripcion AS descr_cp

FROM comp c LEFT JOIN sujetos s ON c.id_sujeto = s.id_sujeto LEFT JOIN condiciones_iva ci ON s.id_condicion = ci.id_condicion LEFT JOIN localidades l ON s.cod_postal::text = l.id_localidad::text LEFT JOIN provincias p ON l.id_provincia = p.id_provincia LEFT JOIN areas a ON c.id_area = a.id_area LEFT JOIN monedas m ON c.id_moneda = m.id_moneda LEFT JOIN sujetos_doc_tipos sdt ON s.id_tipo_doc = sdt.id_tipo_doc LEFT JOIN comp_tipos ct ON c.id_tipo_comp = ct.id_tipo_comp LEFT JOIN comp_rubros cr ON c.id_rubro_comp = cr.id_rubro_comp LEFT JOIN comp_tipos cts ON a.id_tipo_comp_simple = cts.id_tipo_comp LEFT JOIN centros_productivos cp ON c.id_cp = cp.id_cp;

Attachments