function getFleteSC($descripcion, $iddestino, $idorigen, $peso){
			$cnx = new Conectar("webpmm");
			$l = $cnx->iniciar();	
			
			if($descripcion=="ENVASE(S)"){
				$s = "SELECT costo from configuraciondetalles where 
				(SELECT IFNULL(SUM(distancia),0) AS distancia 
				from catalogodistancias where (idorigen=".$idorigen." AND 
				iddestino=".$iddestino.") or (iddestino=".$idorigen." 
				AND idorigen=".$iddestino.")) between zoi and zof and kgi = -1";	
				$rb = mysql_query($s,$l) or die($s); 
				$fb = mysql_fetch_object($rb);
				$dato = round($fb->costo,2);
				return $dato;
				//return round($fb->costo,2);
				
			}else{
				$s = "select costo from configuraciondetalles where 
					(select IFNULL(SUM(distancia),0) AS distancia 
					from catalogodistancias where (idorigen=".$idorigen." and iddestino=".$iddestino.") 
					or (iddestino=".$idorigen." and idorigen=".$iddestino.")) between zoi and zof
					and ".round($peso)." between kgi and kgf";
					//echo "<br>$s<br>";
					$rb = mysql_query($s,$l) or die($s);
					$fb = mysql_fetch_object($rb);
					if($fb->costo < 10){
						$costo = round($fb->costo*$this->peso,2);
						return $costo;
					}else{
						$costo = round($fb->costo,2);
						return $costo;
					}						
			}
		}
示例#2
0
		public function rollBackGuiaempresarial($indice, $consulta, $conexion){
			#se envia el correo con el error antes de hacer el rollback
			$consulta .= "\r\n\r\n Mysql:\r\n".mysql_error($conexion);
			$datos = $this->obtenerProcesos($conexion);
			$consulta .= "\r\n\r\n Procesos:\r\n".$datos;
			$this->enviaErrorBase($consulta);
			
			$cnx = new Conectar("webpmm");
			$l = $cnx->iniciar();
			
			#verificar las consultas con el indice del error para hacer las consultas correctas
			$ejecutadas = "";
			for($i=count($this->procesoGuiasE); $i>=0; $i--){
				if($indice>$i){
					$s = $this->procesoGuiasE[$i];
					mysql_query($s,$l) or 
					$this->errorInterno($s."\r\n\r\n $ejecutadas [indice $indice][i => $i] \r\n\r\n Mysql:\r\n".mysql_error($l), $this->errores['xml']);
					#en caso de haber un error en el rollback se usa la funcion errorInterno
				}
			}
			die($this->errores['xml']);
		}
		public function crearFactura() {
			
			$con = new Conectar("webpmm");
			$l = $con->iniciar();
			
			//---------PROCESO DE DATOS DEL RECEPTOR-----------//
			$informacion["start"]="inicio";
			$serie = '';
			if (!empty($this->dataEmpresa['informacion']['serie'])) {
				$serie = 'serie="'.$this->dataEmpresa['informacion']['serie'].'"';
			}
			$informacion["nombre"]=$this->dataEmpresa['informacion']['name'];
			$informacion["rfc"]=strtoupper($this->dataEmpresa['informacion']["rfc"]);
			$informacion["calle"]=$this->dataEmpresa['informacion']["street"];
			$informacion["noExterior"]=$this->dataEmpresa['informacion']["outside_number"];
			$informacion["noInterior"]=$this->dataEmpresa['informacion']["inside_number"];
			$informacion["colonia"]=$this->dataEmpresa['informacion']["col"];
			$informacion["codigoPostal"]=$this->dataEmpresa['informacion']["cp"];
			$locCliente = '';
				if (!empty($this->dataEmpresa['Client']['locale'])) {
					$locCliente = 'localidad="'.$this->dataEmpresa['Client']['locale'].'"';
				}
				$outNumber = '';
				if (!empty($informacion["noExterior"])) {
					$outNumber = 'noExterior="'.$informacion["noExterior"].'"';
				}
				$inNumber = '';
				if (!empty($informacion["noInterior"])) {
					$inNumber = 'noInterior="'.$informacion["noInterior"].'"';
				}
				$informacion["folio"]=$this->dataEmpresa['informacion']["folio"];
				$informacion["numeroaprobacion"]=$this->dataEmpresa['informacion']["numeroaprobacion"];
				$informacion["anoaprobacion"]=$this->dataEmpresa['informacion']["anoaprobacion"];
			$informacion["municipio"]=$this->dataEmpresa['informacion']["municipio"];
			$informacion["estado"]=$this->dataEmpresa['informacion']["state"];
			$informacion["pais"]=$this->dataEmpresa['informacion']["country"];
			$result = $this->_getRemoteConceptos($this->dataEmpresa['producto']);	
			$informacion["totalImpuestosTrasladados"] = $this->dataEmpresa['Impuestos']['iva'];
			//$informacion["importeIVAT"] = $result['importeIVAT'];
			$informacion["ivaRetenido"] = $this->dataEmpresa['Impuestos']['ivaRetenido'];
			$informacion["tasa"]= $this->dataEmpresa['Impuestos']['tasa'];
			if($informacion["tasa"]<1){
				$informacion["tasa"] *= 100;
				$informacion["tasa"] .= '';
			}
			$conceptos = $result['conceptos'];
			$business["rfc"] = $this->dataCliente['Business']["rfc"];
			$business["name"] = $this->dataCliente['Business']["name"];
			$business["street"] = $this->dataCliente['Business']["street"];
			$business["outside_number"] = $this->dataCliente['Business']["outside_number"];
			$business["inside_number"] = $this->dataCliente['Business']["inside_number"];
			
			$boutNumber = '';
				if (!empty($business["outside_number"])) {
					$boutNumber = 'noExterior="'.$business["outside_number"].'"';
				}
				$binNumber = '';
				if (!empty($business["inside_number"])) {
					$binNumber = 'noInterior="'.$business["inside_number"].'"';
				}
			$business["col"] = $this->dataCliente['Business']["col"];
			$business["cp"] = $this->dataCliente['Business']["cp"];
			if (!empty($this->dataCliente['Business']['city_name'])) {
				$business["city"] = $this->dataCliente['Business']['city_name'];
			}
			$business["municipio"] = $this->dataCliente["Municipio"]['name'];
			$business["state"] = $this->dataCliente["State"]['name'];
			$business["country"] = $this->dataCliente["Country"]['name'];
			
			$ivaretenidoImpuestos="";
			$ivaretenidoRetenciones="";
			
			if($informacion["ivaRetenido"]>0){
				$ivaretenidoImpuestos='totalImpuestosRetenidos="'.$informacion["ivaRetenido"].'"';
				$ivaretenidoRetenciones='<Retenciones>
								<Retencion importe="'.$informacion["ivaRetenido"].'" impuesto="IVA"></Retencion>
							</Retenciones>';
			}
			
			$s = "SELECT serieventa FROM catalogofoliosfacturacion 
			WHERE '".$informacion['folio']."' BETWEEN folioinicial AND foliofinal";
			$r = mysql_query($s,$l) or die($s);
			$f = mysql_fetch_object($r);
			
			$serial_number = $f->serieventa;
			
			$s = "select * from certificates";
			$r = mysql_query($s,$l) or die($s);
			$f = mysql_fetch_object($r);
			//se quito de aqui por que el numero de certificado se refiere al numero de la compra de los folios
			//$serial_number = $f->serial_number;
			$keyCertificate = $f->key;
			//$this->cert = $this->getCertificado();
			$certificate = $this->getContCert($f->certificate);
			//$this->ctr_fact = $this->getCtr_fact();
			
			
			if($this->dataEmpresa['informacion']['fecha']!=""){
				$this->fecha = str_replace(" ","T",$this->dataEmpresa['informacion']['fecha']);
			}else{
				$this->fecha = date("Y-m-d\TH:i:s",strtotime("-1 hour"));
			}
			
			$stotal = $this->dataEmpresa['Impuestos']['subtotal'];
			$ttotal = $this->dataEmpresa['Impuestos']['total'];
			if (empty($business['city'])) {
				$loc="";
			} else {
				$loc='localidad="'.$business['city'].'"';
			}
			$this->_cleanAttributesEntities($business);
			$this->_cleanAttributesEntities($informacion);
			
			$xml='<?xml version="1.0" encoding="UTF-8"?>
								<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2  http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd" noCertificado="'.$serial_number.'" formaDePago="pago en una sola exhibicion" noAprobacion="'.$informacion['numeroaprobacion'].'" certificado="'.$certificate.'"   sello="#1#" anoAprobacion="'.$informacion['anoaprobacion'].'" fecha="'.$this->fecha.'" subTotal="'.$stotal.'" total="'.$ttotal.'" '.$serie.' folio="'.$informacion['folio'].'" tipoDeComprobante="ingreso" version="2.0">
								 <Emisor rfc="'.$business['rfc'].'" nombre="'.$business['name'].'">
												<DomicilioFiscal calle="'.$business['street'].'"  '.$boutNumber.' '.$binNumber.' colonia="'.$business['col'].'" codigoPostal="'.$business['cp'].'" '.$loc.' municipio="'.$business['municipio'].'"  estado="'.$business['state'].'" pais="'.$business['country'].'" />
										</Emisor>
										<Receptor rfc="'.$informacion["rfc"].'" nombre="'.$informacion["nombre"].'">
												<Domicilio calle="'.$informacion["calle"].'" '.$outNumber.' '.$inNumber.' colonia="'.$informacion["colonia"].'" codigoPostal="'.$informacion["codigoPostal"].'" '.$locCliente.' municipio="'.$informacion["municipio"].'" estado="'.$informacion["estado"].'" pais="'.$informacion["pais"].'"/>
										</Receptor>'. $conceptos .'
										<Impuestos totalImpuestosTrasladados="' .$informacion["totalImpuestosTrasladados"]. '" '.$ivaretenidoImpuestos.'>
												'.$ivaretenidoRetenciones.'
												<Traslados>
														<Traslado importe="'.$informacion["totalImpuestosTrasladados"].'" tasa="'. $informacion["tasa"] .'" impuesto="IVA"></Traslado>
												</Traslados>
										</Impuestos>
								</Comprobante>';
			$xml = $this->getXMLSing($xml,$keyCertificate,$this->fecha);
			return $xml;
		}
		public function verificaGuiaEmpresarial($folio){
			$cnx = new Conectar("webpmm");
			$l = $cnx->iniciar();
			
			$s = "SELECT subtotal-(tflete-ttotaldescuento+tcostoead+trecoleccion+tseguro+totros+texcedente+tcombustible) diferencia,
			total-(subtotal+tiva-ivaretenido) diferencia2
			FROM guiasempresariales 
			WHERE id = '$folio'
			HAVING diferencia < -0.1 OR diferencia > 0.1 OR diferencia2 > 0.1 OR diferencia2 < -0.1";
			
			$r = mysql_query($s,$l);
			if(mysql_num_rows($r)>0){
				$s = "SELECT (SELECT iva
				FROM catalogosucursal WHERE id = 
					(SELECT idsucursalorigen FROM guiasempresariales WHERE id = '$folio')
				)/100 AS iva, (SELECT ivaretenido
				FROM configuradorgeneral)/100 AS ivar";
				$res_ivas = mysql_query($s,$l);
				$f_ivas = mysql_fetch_object($res_ivas);
				
				$s = "SELECT personamoral FROM catalogocliente WHERE id = (
					SELECT IF(tipoflete='PAGADA',idremitente,iddestinatario)
					FROM guiasempresariales WHERE id = '$folio'
				);";
				$r = mysql_query($s,$l);
				$f = mysql_fetch_object($r);
				$personamoral = $f->personamoral;
				
				$s = "UPDATE guiasempresariales ge
				SET subtotal = tflete-ttotaldescuento+tcostoead+trecoleccion+tseguro+totros+texcedente+tcombustible,
				tiva = (tflete-ttotaldescuento+tcostoead+trecoleccion+tseguro+totros+texcedente+tcombustible)*$f_ivas->iva,
				ivaretenido = if('$personamoral'='SI',(tflete-ttotaldescuento+tcostoead+trecoleccion+tseguro+totros+texcedente+tcombustible)*$f_ivas->ivar,0)
				WHERE id = '$folio';";
				mysql_query($s,$l);
				
				$s = "UPDATE guiasempresariales ge
				SET total = subtotal + tiva - ivaretenido
				WHERE id = '$folio';";
				mysql_query($s,$l);
				
				$s = "select * from guiasempresariales where id = '$folio'";
				$r = mysql_query($s,$l);
				$f = mysql_fetch_object($r);
				
				$_GET[tflete] = $f->tflete;
				$_GET[tdescuento] = $f->tdescuento;
				$_GET[ttotaldescuento] = $f->ttotaldescuento;
				$_GET[tcostoead] = $f->tcostoead;
				$_GET[trecoleccion] = $f->trecoleccion;
				$_GET[tseguro] = $f->tseguro;
				$_GET[totros] = $f->totros;
				$_GET[texcedente] = $f->texcedente;
				$_GET[tcombustible] = $f->tcombustible;
				$_GET[subtotal] = $f->subtotal;
				$_GET[tiva] = $f->tiva;
				$_GET[ivaretenido] = $f->ivaretenido;
				$_GET[total] = $f->total;
			}
		}