var mapper 		= mapperFactory.createMapperMult(["CrossDock","EstProdTransf","EstProdTransfCrossDocking"]);
var obj = message;
try {
    if(!obj.get("cdNovoDeposito")){
      throw {code: 599, message: "Codigo do Novo Deposito não informado"};
    }
    if(!obj.get("listaRessuprimento")){
      throw {code: 599, message: "Lista de Ressuprimento não informado"};
    }else{
          var listaRessuprimento = obj.get("listaRessuprimento");
          for(var i = 0;i < listaRessuprimento.size();i++){
              if(!listaRessuprimento.get(i).get("cdMovOp")){
                throw {code: 599, message: "Codigo de natureza de movimentacao para o ressuprimento" + listaRessuprimento.get(i).get("cdCtr") + " não informado"};
              }
              var ressuprimento = mapper.selectOne("EstProdTransf.listarEstProdTransf",listaRessuprimento.get(i));
              if(!ressuprimento){
                  throw {code: 599, message: "Ressuprimento de codigo " + listaRessuprimento.get(i).get("cdCtr") + " não encontrado"};
              }else{
                  println("ressuprimento  "+ressuprimento);
                  if(parseInt(ressuprimento.get("stsTransf")) == 0){
                     throw {code: 599, message: "Ressuprimento de codigo " + listaRessuprimento.get(i).get("cdCtr") + " pendente de emissão de Pre Fatura"};
                  }
                  if(parseInt(ressuprimento.get("stsTransf")) == 4){
                     throw {code: 599, message: "Ressuprimento de codigo " + listaRessuprimento.get(i).get("cdCtr") + " cancelado"};
                  }
                  if(mapper.selectOne("EstProdTransfCrossDocking.listarEstProdTransfCrossDocking",{"cdCtrOrig":listaRessuprimento.get(i).get("cdCtr"), "cdFilialOrig":listaRessuprimento.get(i).get("cdFilial")}) ) {
                      throw {code: 599, message: "Ressuprimento de codigo " + listaRessuprimento.get(i).get("cdCtr") + " com processo de crossdock já realizado anteriormente"};
                  }
              }
          }
          var novosRessuprimento = [];
          for(var j = 0;j < listaRessuprimento.size();j++){
            var checkIn = mapper.selectOne("CrossDock.ListarCdNfSaida",{"cdFilial":listaRessuprimento.get(j).get("cdFilial"), "cdCtr":listaRessuprimento.get(j).get("cdCtr")});
            if(!checkIn){
                throw {code: 599, message: "Não foi encontrado nota fiscal de saida para o ressuprimento de codigo " + listaRessuprimento.get(j).get("cdCtr") + " ."};
            }else{
                var cdCtr = mapper.selectOne("CrossDock.ListarMaxCdCtr",{"cdFilial":obj.get("cdNovoDeposito")});
                var ressup = mapper.insert("CrossDock.incluirNovoRessuprimento",{"cdCtrOrig":listaRessuprimento.get(j).get("cdCtr"),"cdFilialOrig":listaRessuprimento.get(j).get("cdFilial"),"cdNovoDeposito":obj.get("cdNovoDeposito"), "cdCtr":cdCtr});
                mapper.insert("CrossDock.incluirCheckOutWms",{"cdCtr":cdCtr,"cdFilial":obj.get("cdNovoDeposito")});
                if(parseInt(checkIn.get("checkIn")) == 0 ){
                    mapper.insert("CrossDock.incluirEstNfTransfConfirmacao",{"cdFilial":checkIn.get("cdFilial"),"cdNf":checkIn.get("cdNf"), "cdMovOp":listaRessuprimento.get(j).get("cdMovOp")});
                }
                novosRessuprimento[j] = cdCtr;
            }
          }

    }

    mapper.commit();
    msg = "Ressuprimentos incluidos com sucesso; Numeros " + novosRessuprimento;
    msg;

}catch(err) {
	java.lang.System.out.println(err);
	mapper.rollback();
	if(err.code){
		throw JSON.stringify(err);
	}
	throw "{erro:true,  message:'" + escape(err)+"', log: " + JSON.stringify(log) + "}";
}
