miércoles, 6 de julio de 2016

Configurar un buzón compartido en office365 para que los correos enviados vayan a la carpeta de enviados

Debería ser el valor por defecto, pero no lo es. Al contestar un mail recibido desde un buzón compartido se va al enviados de la cuenta personal, no de la compartida.

Hay que usar powershell, otra cosa con la que no estoy de acuerdo. Para que sirve un panel de control que no expone los atributos de los objetos ?

Para arreglar esto:

1.- Ejecutamos el powershell como administradores, introducimos las credenciales de administración del servicio de correo.

$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $cred -Authentication Basic -AllowRedirection

Metemos el mismo usuario y pwd que usariamos para entrar en el panel de control web.

Luego

Import-PSSession $session

set-mailbox sammer.prueba -MessageCopyForSentAsEnabled $True
set-mailbox sammer.prueba -MessageCopyForSendOnBehalfEnabled $True


Documentación útil

http://o365info.com/manage-email-address-using-powershell/

http://o365info.com/manage-office-365-users-password-using/

domingo, 3 de julio de 2016

Instalar chrome en Debian 8.5 jessie


nano /etc/apt/sources.list

    Añadimos...
   
    # Chrome   
  deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main


gpg --keyserver keys.gnupg.net --recv-key A040830F7FAC5991

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -

apt-get update

apt-get install google-chrome-stable



miércoles, 29 de junio de 2016

Implementar una solución sencilla a Vermas, sin coste, con Transkal

Dificultad: Alta

Como ya sabréis, y si no, es que afortunadamente este problema no os afecta, antes del 1 de julio de 2016, todas las partes implicadas en el transporte de contenedores deben comenzar a prepararse para los nuevos requisitos de verificación de peso de los contenedores, aprobados a finales de diciembre por la IMO.

Si usáis el Transkal es posible parar el golpe de 1 de Julio sin costes adicionales, aunque existe un desarrollo por parte de Adur para responder al VGM tiene un coste. El caso es que dependiendo de vuestros puertos y caso puede ser que os lo podáis ahorrar.

Desde el punto de vista del consignatario el VGM afecta al mensaje de ADMITASE, del grupo de mensajes ESMT, y a la lista de carga.

Vamos a ver primero como podemos adaptar el mensaje ADMITASE versión 2014 que posiblemente tenéis para poder transmitir 2 situaciones. Cada puerto va por libre, como siempre, yo me voy a limitar a hablar de los que conozco que son Barcelona, Valencia y Castellón.

Vamos a implementar 2 casos.

    No tengo VGM, y ordeno a al terminal que pese.
    Tengo VGM, y no quiero que pese la terminal.

  Y vamos a dejar pendiente el caso "No tengo VGM, y no ordeno a la terminal que pese, el embarcador se encarga de este tema" porque para nuestros clientes de momento no es necesario.

Necesitamos un buen editor de texto que no tenga problemas con los archivos de nuestro suselinux o similar. Os aconsejo el EditPad Lite, porque tiene la gran ventaja de que permite alternar entre diferentes codificaciones de texto visualmente, es decir, que podemos ir probando hasta que vemos correctamente los acentos y carácteres especiales.


( Ojo a las tonterías del windows on las mayúsculas y las minúsculas en los nombres de archivo. )

Vamos a tener que dividir el trabajo en tareas.

1. Modificar la cardinalidad máxima del segmento COPARNE02.GROUP9/trcd_reference

Traskal se guarda las relaciones entre grupos y elementos y sus relaciones y cardinalidades en la tabla PORTIC_DATA_POXML01, esta tabla no sabe nada del nuevo GROUP14 pero eso a mi de momento no me afecta porque simplemente quiero ampliar el GROUP9 para poderle añadir la referencia VOR ( referencia de petición del pesado ), lamentablemente eso provocaria un mensaje de error al generar el archivo porque en la tabla POXML01 esta marcado que como máximo solo puede haber un segmento así que tenemos que modificar un registro



2. Vamos a tocar el formato COPARNE2 y HERENCnn

Vamos a necesitar acceso via Samba a /home/adur/PORTIC/DATA pero como posiblemente ni tenéis ni queréis tener esa carpeta compartida  en realidad lo más recomendable es copiar los archivos COPARNE2 y HERENCnn a una carpeta a la que tengáis acceso. En mi caso me copio los archivos a /home/msdos/tmp para poder editarlos comódamente.

Esencialmente estos son los cambios necesarios... asigno a la variable Consolidador ( una que no uso ) el NC(57) que no es otro que mi fillerusu6, en esta variable digo si quiero pesar o no quiero pesar en terminal.

En HERENCnn...

########################
[CN-Export-Generar OT-Cabecera]

;Ordenar pesado a la terminal?
OPT=_TRIM(NC(57))="S"?"S";"N"   <--- ESTO NO FUNCIONA, (No me puedo inventar una variable nueva por que sí)

;necesito una variable que funcione
Consolidador=_TRIM(NC(57))="S"?"S";"N"         <-- ESTO Sí

;Consolidador="S"

En COPARNE2

Añadimos que según el valor de la variable Consolidador valoramos el segmento red_document.message.name.coded a 127 o 135, eso provoca que la terminal interprete que debe pesar o no. 

"≤?xml version=\Ω1.0\Ω encoding=\ΩISO-8859-1\Ω?≥≤!DOCTYPE COPARNE02 SYSTEM \ΩCOPARNE02.dtd\Ω≥" 
^ "≤COPARNE02≥"
^ " ≤COPARNE02.HEADER≥"
^ "  ≤anxs_interchange.header≥"
^ "   ≤anxe_sender.identification≥" @ANXE_SENDER_IDENTIFICATION "≤/anxe_sender.identification≥"
^ "   ≤anxe_recipient.identification≥" @ANXE_RECIPIENT_IDENTIFICATION "≤/anxe_recipient.identification≥"
^ "  ≤/anxs_interchange.header≥"
^ "  ≤anxs_message.header≥"
^ "  ≤anxe_message.reference.number≥" REFERENCIA.MENSAJE "≤/anxe_message.reference.number≥"
^ "  ≤anxe_message.type≥COPARN≤/anxe_message.type≥"
^ "  ≤anxe_message.version.number≥D≤/anxe_message.version.number≥"
^ "  ≤/anxs_message.header≥"
^ "  ≤trsd_beginning.of.message≥"
{ if CONSOLIDADOR = "S"
^ "   ≤tred_document.message.name.coded≥127≤/tred_document.message.name.coded≥"
}
{ if CONSOLIDADOR <> "S"
^ "   ≤tred_document.message.name.coded≥135≤/tred_document.message.name.coded≥"
}
^ "   ≤tred_document.message.number≥" REFERENCIA.MENSAJE "≤/tred_document.message.number≥"
^ "   ≤tred_message.function.coded≥" @FUNCION_MENSAJE "≤/tred_message.function.coded≥"
^ "  ≤/trsd_beginning.of.message≥"
{ if @TRED_DATE_TIME_PERIOD <> ""
^ "  ≤trcd_date.time.period≥"
^ "   ≤tred_date.time.period.qualifier≥137≤/tred_date.time.period.qualifier≥"
^ "   ≤tred_date.time.period≥" @TRED_DATE_TIME_PERIOD "≤/tred_date.time.period≥"
^ "  ≤/trcd_date.time.period≥"

}

Luego añadimos el VOR para tener una referencia de nuestra orden de pesado, yo lo he hecho incondicionalmente porque esta referencia no hace daño si se añade sin orden de pesado y porque por algun motivo, la variable CONSOLIDADOR no me funcionaba en el if que prové inicialmente.

;la condicion no funciona, no entiendo pq, lo dejo incondicional
;{if CONSOLIDADOR = "S"
^ "  ≤trcd_reference≥"
^ "   ≤tred_reference.qualifier≥VOR≤/tred_reference.qualifier≥"
^ "   ≤tred_reference.number≥P-"REFERENCIA"≤/tred_reference.number≥"
^ "  ≤/trcd_reference≥"

;}


3. Seleccionar el filler de usuario y meterlo en la pantalla adecuada, en nuestro caso en la de orden de transporte.

Nodos 582 y 583
Con esto los admítases ya se generaran en versión pidiendo pesado o no en función de nuestro filler. En el caso de que haya pesado, y la terminal nos envíe un VERMAS con los datos, habrá que guardarnos el peso y una marca de que es un VERMAS pero esa ya será otra entrada...

Adicionalmente, podemos aseguranos de que filler6 vale o N o S con un trigger... 

create or replace trigger txnoca01
before insert or update on transpor_data_txnoca01
for each row
declare
pragma autonomous_transaction;
err_num NUMBER;

    err_msg VARCHAR2(100);

begin


/*asegurar el pesado si no hay orden especifica contraria*/
/* NVL, si null, retorno el segon parametre */
if (:new.IDGT='TE' and trim(NVL(:new.fillerusu6,'S')) <>'N') then

:new.fillerusu6:='S';

end if;


/* pel pragma cal commit */

commit;


EXCEPTION
WHEN OTHERS THEN
err_num := SQLCODE;
      err_msg := SUBSTR(SQLERRM, 1, 1000);
   INSERT INTO traca06 VALUES (sysdate, $$plsql_unit || ' : ' || to_char(err_num),err_msg,DBMS_UTILITY.format_error_backtrace);
end;
/

Por supuesto cada cual tendrá que adaptar estos archivos a sus necesidades pero al menos le será útil esta explicación como inicio.

Algunos archivos útiles:
COPARNE2
HERENCnn