<?php
include_once('../../../php/sessionStart.php');
include_once('../../../php/db/dbExec.php');
include_once('../../../php/functions.php');
include_once('../../../php/timezone.php');
include_once('../../../php/privileges.php');
include_once('../../../php/maxExecTime.php');

$bitForm = "cxp4010";
$bitMod = "cxp";
$empCod = $_SESSION['empCod'];
$usuCod = utf8_decode($_SESSION['usuCod']);
$usuNom = utf8_decode($_SESSION['usuNom']);

switch ($_POST['action']) {
	case 'consultar':
		echo consultar();
		break;

	case 'consultarProvcp':
		echo consultarProvcp();
		break;

	case 'consultarArtic':
		echo consultarArtic();
		break;

	case 'consultarCorr':
		echo consultarCorr();
		break;

	case 'guardar':
		echo guardar();
		break;

	case 'anular':
		echo anular();
		break;

	case 'borrar':
		echo borrar();
		break;

	case 'cerrarorden':
		echo cerrarorden();
		break;
}

function consultar() {
	global $empCod, $usuNom;

	$priv = new privileges();
	if (!$priv->consult($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorConsult());
	}

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selSerieo=$_POST['selSerieo'];

	# QUERYS
	$sOrdenc = "SELECT *, 
		TRIM(od.od_codp) AS od_codp,
		TRIM(od.od_prov) AS od_prov,
		TRIM(od.od_dirp) AS od_dirp,
		TRIM(od.od_telp) AS od_telp,
		TRIM(od.od_facnom) AS od_facnom,
		TRIM(od.od_facdir) AS od_facdir,
		TRIM(od.od_dirent) AS od_dirent,
		TRIM(od.od_soli) AS od_soli,
		TRIM(od.od_autorizo) AS od_autorizo,
		TRIM(od.od_obs) AS od_obs
		FROM ordenc od WHERE od_emp='$empCod' AND od_serie='$selSerieo' AND od_num='$numNum'";

	$sOrdendc = "SELECT * FROM ordendc WHERE odd_emp='$empCod' AND odd_serie='$selSerieo' AND odd_num='$numNum'";

//	$sPoli_det = "SELECT *, TRIM(pold_cta) AS pold_cta FROM poli_det WHERE pold_emp='$empCod' AND pold_ban=0 AND pold_tipo='$tipoCod' AND pold_num='$numNum' AND pold_tipoi='$selTipoabo'";

	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp = $db->sEx($sOrdenc, "ordenc");
	$resp["ordendc"] = $db->sFetchAll($sOrdendc);
	//$resp["poli_det"] = $db->sFetchAll($sPoli_det);
	$db->close();

	$func = new functions();
	//return $func->jsonEncodeArray($resp, array('abonos', 'poli_det', 'abo_det'));
	return $func->jsonEncodeArray($resp, 'ordenc', 'ordendc');
}

function consultarCorr() {
	global $empCod, $usuNom;

	$func = new functions();
	$selSerieo=$_POST['selSerieo'];
	# QUERYS
	$sSerieoc = "SELECT so_cod, TRIM(so_nom) AS so_nom, so_corr FROM serieoc WHERE so_emp='$empCod' AND so_cod='$selSerieo'";
	
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp["serieoc"] = $db->sFetchAssoc($sSerieoc);
	$db->close();

	$func = new functions();
	return $func->jsonEncodeArray($resp, "serieoc");
}

function consultarProvcp() {
	global $empCod;
	$txtCod=utf8_decode($_POST['txtCod']);

	# QUERYS
	$sProvcp = "SELECT *, TRIM(pro_nom) AS pro_nom, TRIM(pro_retsn) AS pro_retsn FROM provcp WHERE pro_emp='$empCod' AND pro_cod='$txtCod'";
	
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$resp = $db->sEx($sProvcp, "provcp");
	$db->close();

	$func = new functions();

	return $func->jsonEncodeArray($resp, "provcp");
}

function consultarArtic() {
	global $empCod;

	$func = new functions();

	$txtCodd=utf8_decode($_POST['txtCodd']);

	# QUERYS
	$sArtic = "SELECT a.*, 
				TRIM(a.art_cod) AS art_cod, 
				TRIM(a.art_desc) AS art_desc, 
				TRIM(a.art_desd) AS art_desd,
				TRIM(ctacos.cta_nom) AS art_ctacosnom,
				TRIM(ctainv.cta_nom) AS art_ctainvnom,
				TRIM(ctaven.cta_nom) AS art_ctavennom,
				TRIM(p.pro_nom) AS art_provnom,
				TRIM(um.um_nom) AS um_nom
				FROM artic a
				LEFT JOIN cuentas ctacos ON a.art_emp = ctacos.cta_emp AND a.art_ctacos=ctacos.cta
				LEFT JOIN cuentas ctainv ON a.art_emp = ctainv.cta_emp AND a.art_ctainv=ctainv.cta
				LEFT JOIN cuentas ctaven ON a.art_emp = ctaven.cta_emp AND a.art_ctaven=ctaven.cta
				LEFT JOIN provcp p ON a.art_emp = p.pro_emp AND a.art_prov=p.pro_cod
				LEFT JOIN unimed um ON a.art_medi=um.um_cod
				WHERE a.art_emp='$empCod' AND a.art_cod='$txtCodd'";

	$sArticbarr = "SELECT a.*, 
				TRIM(a.art_cod) AS art_cod, 
				TRIM(a.art_desc) AS art_desc, 
				TRIM(a.art_desd) AS art_desd,
				TRIM(ctacos.cta_nom) AS art_ctacosnom,
				TRIM(ctainv.cta_nom) AS art_ctainvnom,
				TRIM(ctaven.cta_nom) AS art_ctavennom,
				TRIM(p.pro_nom) AS art_provnom,
				TRIM(um.um_nom) AS um_nom
				FROM artic a
				LEFT JOIN cuentas ctacos ON a.art_emp = ctacos.cta_emp AND a.art_ctacos=ctacos.cta
				LEFT JOIN cuentas ctainv ON a.art_emp = ctainv.cta_emp AND a.art_ctainv=ctainv.cta
				LEFT JOIN cuentas ctaven ON a.art_emp = ctaven.cta_emp AND a.art_ctaven=ctaven.cta
				LEFT JOIN provcp p ON a.art_emp = p.pro_emp AND a.art_prov=p.pro_cod
				LEFT JOIN unimed um ON a.art_medi=um.um_cod
				WHERE a.art_emp='$empCod' AND a.art_codbarr='$txtCodd'";


	function sExiart($codigo) { 
		global $empCod;
		return "SELECT e.*, TRIM(b.bod_nom) AS bod_nom
				FROM exiart e 
				LEFT JOIN bodegas b ON e.ea_emp=b.bod_emp AND e.ea_bod=b.bod_cod
				WHERE e.ea_emp='$empCod' AND e.ea_cod='$codigo'";
	}

	/* $sExiart = "SELECT e.*, TRIM(b.bod_nom) AS bod_nom
				FROM exiart e 
				LEFT JOIN bodegas b ON e.ea_emp=b.bod_emp AND e.ea_bod=b.bod_cod
				WHERE e.ea_emp='$empCod' AND e.ea_cod='$txtCod'"; */

	$sCod_barr = "SELECT * FROM cod_barr WHERE cb_emp='$empCod' AND cb_cod='$txtCodd'";
	
	# EJECUCION DE QUERYS
	$db = new dbExec();
	$codigo=$txtCodd;
	$resp = $db->sEx($sArtic, "artic");
	$select["artic"] = $db->query($sArtic);
	if ($db->numRows($select["artic"]) == 0) {
		$resp = $db->sEx($sArticbarr, "artic");
		$codigo=$resp["artic"]["art_cod"];
	}
	//$resp["exiart"] = $db->sFetchAll($sExiart);
	//$resp["imgArtic"] = "imgArticulos/$empCod"."_".$func->imgCharacters($txtCod).".jpeg?".rand(1,9999);
	$resp["exiart"] = $db->sFetchAll(sExiart($codigo));
	$resp["imgArtic"] = "imgArticulos/$empCod"."_".$func->imgCharacters($codigo).".jpeg?".rand(1,9999);
	$db->close();

	$func = new functions();
	return $func->jsonEncodeArray($resp, "artic");
}


function guardar() {
	global $empCod, $usuNom, $bitMod, $bitForm, $selSerieo, $numNum;

	$priv = new privileges();
	if (!$priv->modify($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorModify());
	}

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selSerieo=$_POST['selSerieo'];
	$nuevocorr=$numNum+1;
	//$selBanCod=0;
	//$selTipoCod="009";
	$dtFec=$_POST['dtFec'];
	$txtCoti=$_POST['txtCoti'];
	$txtCodp=$_POST['txtCodp'];
	$txtProv=$_POST['txtProv'];
	$txtNitp=$_POST['txtNitp'];
	$txtDirp=$_POST['txtDirp'];
	$txtTelp=$_POST['txtTelp'];
	$txtFacNom=$_POST['txtFacNom'];
	$txtFacDir=$_POST['txtFacDir'];
	$txtFacNit=$_POST['txtFacNit'];
	$txtDirEnt=$_POST['txtDirEnt'];
	$dtFvalida=$_POST['dtFvalida'];
	$txtSoli=$_POST['txtSoli'];
	$numDcre=(empty($_POST['numDcre'])) ? 0 : $_POST['numDcre'];
	$txtAutorizo=$_POST['txtAutorizo'];
	$numBien=(empty($_POST['numBien'])) ? 0 : $_POST['numBien'];
	$numServ=(empty($_POST['numServ'])) ? 0 : $_POST['numServ'];
	$numPeque=(empty($_POST['numPeque'])) ? 0 : $_POST['numPeque'];
	$numImporta=(empty($_POST['numImporta'])) ? 0 : $_POST['numImporta'];
	$numTcam=$_POST['numTcam'];
	$crTmone=$_POST['crTmone'];
	$txtCon=utf8_decode($_POST['txtCon']);
	$sumtot=(empty($_POST['sumtot'])) ? 0 : $_POST['sumtot'];
	$totdif=(empty($_POST['totdif'])) ? 0 : $_POST['totdif'];
	$jsonDetao=json_decode($_POST['tblDetao']);
	$jsonDetaoAnt=json_decode($_POST['tblDetaoAnt']);
	$dtGrabado=date("Y-m-d H:i:s", STRTOTIME(date('h:i:sa')));

	# QUERYS PARA UN REGISTRO
	$sSerieoc = "SELECT * FROM serieoc WHERE so_emp='$empCod' AND so_cod='$selSerieo'";

	$iOrdenc = "INSERT INTO ordenc(od_emp, od_serie, od_num, od_fec, od_coti, od_tot, od_totdif, od_codp, od_prov, od_nit, od_dirp, od_telp, od_facnom, od_facnit, od_facdir, od_dirent, od_valida, od_soli, od_cred, od_autorizo, od_bien, od_serv, od_peque, od_import, od_tcam, od_obs, od_tmone, od_ulcam) VALUES ('$empCod','$selSerieo','$numNum','$dtFec','$txtCoti','$sumtot','$totdif','$txtCodp','$txtProv','$txtNitp','$txtDirp','$txtTelp','$txtFacNom','$txtFacNit','$txtFacDir','$txtDirEnt','$dtFvalida','$txtSoli','$numDcre','$txtAutorizo','$numBien','$numServ','$numPeque','$numImporta','$numTcam','$txtCon','$crTmone','$usuNom')";

	$uOrdenc = "UPDATE ordenc SET od_fec='$dtFec',od_coti='$txtCoti',od_tot='$sumtot',od_totdif='$totdif',od_codp='$txtCodp',od_prov='$txtProv',od_nit='$txtNitp',od_dirp='$txtDirp',od_telp='$txtTelp',od_facnom='$txtFacNom',od_facnit='$txtFacNit',od_facdir='$txtFacDir',od_dirent='$txtDirEnt',od_valida='$dtFvalida',od_soli='$txtSoli',od_cred='$numDcre',od_autorizo='$txtAutorizo', od_bien='$numBien', od_serv='$numServ', od_peque='$numPeque',od_import='$numImporta',od_tcam='$numTcam', od_obs='$txtCon', od_tmone='$crTmone', od_ulcam='$usuNom' WHERE od_emp='$empCod' AND od_serie='$selSerieo' AND od_num='$numNum'";

	$uSerieoc = "UPDATE serieoc SET so_corr=$nuevocorr WHERE so_cod='$selSerieo'";

	$iOrdendc = "INSERT INTO ordendc (odd_emp, odd_serie, odd_num, odd_fec, odd_codp, odd_cod, odd_desc, odd_med, odd_unimed, odd_cant, odd_cosu, odd_sub, odd_pdesc, odd_descu, odd_tot, odd_exensn) VALUES ";
	foreach ($jsonDetao as $obj) {
		//$fechao=$obj->fecha;
		//$valores=explode("/",$obj->fecha);
		//$fecha=$valores[2]."-".$valores[1]."-".$valores[0];
		$iOrdendc = $iOrdendc."('$empCod','$selSerieo','$numNum','$dtFec','$txtCodp','$obj->codd','$obj->descd','$obj->unimed','$obj->medid','$obj->cantd','$obj->cosud','$obj->subd','$obj->pordescd','$obj->valdescd','$obj->numtot','$obj->cbexentod')".$func->addValues($obj, $jsonDetao);
	}

	$dOrdendc = "DELETE FROM ordendc WHERE odd_emp='$empCod' AND odd_serie='$selSerieo' AND odd_num='$numNum'";

	# QUERY PARA ACTUALIZAR EN LOS CARGOS
	function uOrdendc($codd, $recibido) { 
		global $empCod, $usuNom, $selSerieo, $numNum;
		return "UPDATE ordendc SET odd_crecibido=$recibido WHERE odd_emp='$empCod' AND odd_serie='$selSerieo' AND odd_num='$numNum' AND odd_cod='$codd'";
	}


	# EJECUCION DE QUERYS 
	$db = new dbExec();
	$select["serieoc"] = $db->query($sSerieoc);
	$fetchAssoc["serieoc"] = $db->fetchAssoc($select["serieoc"]);		
	$actcorr = $fetchAssoc["serieoc"]["so_corr"];
		
	if ($func->stringToBool($_POST['nuevo'])) {
		if ($numNum == $actcorr || $numNum > $actcorr) {
			$nuevocorr = $numNum+1;
			$resp = $db->uEx($uSerieoc);
		}
		$resp = $db->iEx($iOrdenc);
		$db->iEx($func->iBitacora(utf8_decode("Se creó La orden de compra No.: $numNum  Serie: $selSerieo Fecha: $dtFec Usuario: ").$usuNom, $bitMod, $bitForm));
	} else {
		$resp = $db->uEx($uOrdenc);
		$db->iEx($func->iBitacora(utf8_decode("Se modificó La orden No.: $numNum  Tipo: $selSerieo Fecha: $dtFec Usuario: ").$usuNom, $bitMod, $bitForm));
	}

	// PARA PROCESAR LO RECIBIDO CUANDO FUE CAMBIO EL QUE SE HIZO
	$db->query($dOrdendc);
	$db->query($iOrdendc);			
	foreach ($jsonDetaoAnt as $obja) {
		$codd = trim($obja->odd_cod);
		$recibido = $obja->odd_crecibido;
		$db->query(uOrdendc($codd,$recibido));
	}
	//$resp["tipoabo"] = $db->query($sTipoabo);
	$db->close();
	
	$resp["dtGrabado"]=$dtGrabado;

	//return $func->jsonEncodeArray($resp, "tipoabo");
	return json_encode($resp);
}

function borrar() {
	global $empCod, $usuNom, $bitMod, $bitForm;

	$priv = new privileges();
	if (!$priv->modify($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorModify());
	}

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selSerieo=$_POST['selSerieo'];
	$selSerieoNom=$_POST['selSerieoNom'];
	$anu='**** ANULADO ****';
	$valcero=0;

	# QUERYS PARA UN REGISTRO

	$dOrdenc = "DELETE FROM ordenc WHERE od_emp='$empCod' AND od_serie='$selSerieo' AND od_num='$numNum'";
	$dOrdendc = "DELETE FROM ordendc WHERE odd_emp='$empCod' AND odd_serie='$selSerieo' AND odd_num='$numNum'";
	//$uDoctose = "UPDATE doctose SET de_numoc='$valcero' WHERE de_emp='$empCod' AND de_serieoc='$selSerieo' AND de_numoc='$numNum'";


	# EJECUCION DE QUERYS 
	$db = new dbExec();

	$resp = $db->dEx($dOrdenc);
	$db->uEx($dOrdendc);
	//$db->uEx($uDoctose);

	//
	$db->iEx($func->iBitacora(utf8_decode("Se Borro Orden de Compra Serie $selSerieoNom  No.: $numNum  Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}

function anular() {
	global $empCod, $usuNom, $bitMod, $bitForm;

	$priv = new privileges();
	if (!$priv->modify($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorModify());
	}

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selSerieo=$_POST['selSerieo'];
	$selSerieoNom=$_POST['selSerieoNom'];
	$anu='**** ANULADO ****';
	$valcero=0;

	# QUERYS PARA UN REGISTRO


	$uOrdenc = "UPDATE ordenc SET od_prov='$anu', od_dirp='$anu', od_telp='$anu', od_soli='$anu', od_obs='$anu', od_facnom='$anu', od_facdir='$anu', od_dirent='$anu', od_tot='$valcero', od_bien='$valcero', od_serv='$valcero', od_peque='$valcero', od_import='$valcero', od_totdif='$valcero', od_stat='A', od_ulcam='$usuNom' WHERE od_emp='$empCod' AND od_serie='$selSerieo' AND od_num='$numNum'";

	$uOrdendc = "UPDATE ordendc SET odd_desc='$anu',odd_cant='$valcero',odd_cosu='$valcero',odd_sub='$valcero',odd_pdesc='$valcero',odd_descu='$valcero',odd_tot='$valcero',odd_crecibido='$valcero' WHERE odd_emp='$empCod' AND odd_serie='$selSerieo' AND odd_num='$numNum'";

	//$uDoctose = "UPDATE doctose SET de_numoc='$valcero' WHERE de_emp='$empCod' AND de_serieoc='$selSerieo' AND de_numoc='$numNum'";


	# QUERYS PARA VARIOS REGISTROS

	# EJECUCION DE QUERYS 
	$db = new dbExec();

	$resp = $db->anEx($uOrdenc);
	$db->uEx($uOrdendc);
	//$db->uEx($uDoctose);

	//
	$db->iEx($func->iBitacora(utf8_decode("Se Anulo Orden de Compra Serie $selSerieoNom  No.: $numNum  Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}

function cerrarorden() {
	global $empCod, $usuNom, $bitMod, $bitForm;

	$priv = new privileges();
	if (!$priv->modify($_SESSION['usuPriv'])) {
		return json_encode($priv->rErrorModify());
	}

	$func = new functions();

	$numNum=$_POST['numNum'];
	$selSerieo=$_POST['selSerieo'];
	$selSerieoNom=$_POST['selSerieoNom'];
	$statn='C';

	# QUERYS PARA UN REGISTRO

	$uOrdenc = "UPDATE ordenc SET od_stat='$statn' WHERE od_emp='$empCod' AND od_serie='$selSerieo' AND od_num='$numNum'";

	# EJECUCION DE QUERYS 
	$db = new dbExec();

	$resp = $db->uEx($uOrdenc);

	//
	$db->iEx($func->iBitacora(utf8_decode("Se Cerro Orden de Compra Serie $selSerieoNom  No.: $numNum  Usuario: ").$usuNom, $bitMod, $bitForm));

	$db->close();

	return json_encode($resp);
}

?>