load('/model/produto/insereRegistro.js');
var mapper = mapperFactory.createMapperMult(["EstProd", "EstProdEstSngpc", "GlbTpReceita"]);

var gravarSngpc = function(){
    if(message.get('controleSngpc') == 1){
        let sngpc = {
            'cdEmp': message.get('cdEmp'),
            'cdProd': message.get('cdProd'),
            'cdUsu': message.get('cdUsu'),
            'apresentacao': message.get('apresentacao'),
            'registroMs': message.get('nrRegMs'),
            'cdDcb': message.get('cdDcb'),
            'dsDcb': message.get('dsDcb'),
            'classificacao': message.get('classificacao'),
            'prodInconsistenteAnvisa': message.get('prodInconsistenteAnvisa')
        };

        if(mapper.selectList('EstProdEstSngpc.listarEstProdEstSngpc', {'cdEmp': message.get('cdEmp'), 'cdProd':message.get('cdProd')}).size()>0)
	        mapper.update("EstProdEstSngpc.alterarEstProdEstSngpc", sngpc);
	    else
	        mapper.update("EstProdEstSngpc.incluirEstProdEstSngpc", sngpc);
    }
};


var gravarTributacao = function(){
    if(message.get('isMvp') == 1){
        let tributacao = {
            'cdEmp': message.get('cdEmp'),
            'cdUsu': message.get('cdUsu'),
            'cdProd': message.get('cdProd'),
            'cdFilial':1,
            'tributacao': message.get('tributacao')
        }
        mapper.update("EstProd.alterarTributacaoMvp", tributacao);
    }
};


try{
	var produto = new Produto();
	message = produto.validaProduto.validaDadosParaCadastro(message);
	mapper.update("EstProd.alterarEstProd", message);
    gravarSngpc();
    gravarTributacao();

	mapper.commit();
	
}catch(err){
	
	mapper.rollback();
	
	if(err.code)
	  throw JSON.stringify(err);
	else
		throw err;
}