<?php
	session_start();
	include("cls_conexion.php");$CNN=new ClsMySQL();include("conexion23.php");
	include("lq_fe.php");
	include("ip.php");	
	include("funciones.php");	
	include("ajustes_funciones.php");
	//+++++++++++++++++++
	$IDU=vbval(V($_SESSION['SYS_USER_ID']));
	$MOD_PRE=vbval(gs("mp","usuarios","id_usuario=$IDU"));
	$ALM=gn("id_alm","usuarios","id_usuario=".$IDU);
	//++++++++
	$CM=V($_GET['C']);
	$P1=V($_GET['P1']);
	$P2=V($_GET['P2']);
	$P3=V($_GET['P3']);
	$P4=V($_GET['P4']);
	$P5=V($_GET['P5']);
	$P6=V($_GET['P6']);
	$P7=V($_GET['P7']);
	$P8=V($_GET['P8']);
	$P9=V($_GET['P9']);
	//
	$P10=V($_GET['P10']);
	$P11=V($_GET['P11']);
	$P12=V($_GET['P12']);
	$P13=V($_GET['P13']);
	$P14=V($_GET['P14']);
	$P15=V($_GET['P15']);
	$P16=V($_GET['P16']);
	$P17=V($_GET['P17']);
	//
    //++++++++++++++++++++++++++++++++++++++++
	if($CM=="COT_VAL_CPY"){
		$EMP_NOC=trim($P1);
		$SER_NUM=trim($P2);
		$USU_NOM=trim($P3);
		$USU_PAS=trim($P4);
		//
		if(strpos($SER_NUM,"-")===false){
			echo "|MS|Serie y numero no valido, deberia ingresar en el siguiente formato serie guion numero por ejemplo : 0001-000001|";
			return;
		}
		$DAT=explode("-",$SER_NUM);
		$SER=vbval(trim($DAT[0]));
		$NUM=vbval(trim($DAT[1]));
		//
		$SER=vbr("000000000".$SER,4);
		$NUM=vbr("000000000".$NUM,6);
		$SER_NUM=$SER."-".$NUM;
		$KOD=gs("ID","vcotizaciones","SER_NUM='$SER_NUM' AND EMPC='$EMP_NOC'");
		if($KOD==0){
			echo "|MS|La proforma $SER_NUM no esta registrada en $EMP_NOC|0|";
			return;
		}
		$BIT=gn("bit_estado","cotizaciones","id_cotizacion=$KOD");
		if($BIT==0){
			echo "|OK|OK|0|$SER_NUM|";
			return;
		}
		if(strlen($USU_NOM)==0 || strlen($USU_PAS)==0){
			echo "|MS|Para copiar la proforma requiere autorizacion, ingrese el usuario y password que autoriza el copiado|0|";
			return;
		}
		$AUT=gn("id_usuario","usuarios","hab='SI' AND mp='1' AND nom='$USU_NOM' AND pass='$USU_PAS' ");
		if($AUT==0){
			echo "|MS|Usuario y password no valido o no tiene permiso para autorizar|0|";
			return;
		}
		echo "|OK|OK|$AUT|$SER_NUM|";
		return;
		//
	}
	//++++++++++++++++++++++++++++++++++++++++
	if($CM=="VEN_M_VAL"){
		$TODO_OK=0;
		$ID=vbval($P1);
		$HWN=trim($P2);
		$REF_DOC=trim($P3);
		$REF_EMP=trim($P4);
		$REF_NUM=trim($P5);
		///////////////////////////////////////////////////////////////////////
		$_DR_ID=gn("id_com","ventas","id_venta=$ID");
		$_DR_ID_ALM=gn("id_alm","ventas","id_venta=$ID");
		$_DR_ID_EMP=gn("alm_id_empresa","almacenes","id_almacen=$_DR_ID_ALM");
		$_DR_IS=gn("iser","ventas","id_venta=$ID");
		$_DR_IN=gn("inum","ventas","id_venta=$ID");
		//3F/4B
		if($_DR_ID==3 || $_DR_ID==4){
			$_EMI=gs("ven_fe_ge","ventas","id_venta=$ID");
			if($_EMI=="S"){
				echo "|MS|El comprobante electronico ya ha sido generado.|";
				return;
			}
			$_ANU=gs("anu","ventas","id_venta=$ID");
			if($_ANU=="S"){
				echo "|MS|El comprobante ha sido anulado|";
				return;
			}			
		}
		//
		$CX=gn("count(*)","cobroz",
			   "cob_id_com=$_DR_ID AND ".
			   "cob_icser=$_DR_IS AND ".
			   "cob_icnum=$_DR_IN AND cob_anu='NO'");
		if($CX>0){
			echo "|MS|Uno o mas cobros relacionados|";return;
		}
		$CX=gn("id_guia","guias",
			   "id_comr=$_DR_ID AND ".
			   "i_serr=$_DR_IS AND ".
			   "i_numr=$_DR_IN AND anu='N' AND id_emp_r=$_DR_ID_EMP ");
		if($CX>0){
			$SER=gs("CONCAT(ser,'-',num)","guias","id_guia=$CX");
			echo "|MS|El presente registro esta relacionado a : GUIA ".$SER."|";return;
		}
		//
		$DAT=explode("-",$REF_NUM);
		$TEMP_SER=vbval($DAT[0]);
		$TEMP_NUM=vbval($DAT[1]);
		$StrEmpR_=gn("id_emp","empresas","emp_nomc='$REF_EMP'");
		//
		if($TEMP_SER==0){
			echo "|MS|Serie de referencia no valida|1|";
			return;
		}
		if($TEMP_NUM==0){
			echo "|MS|Numero de referencia no valido|1|";
			return;
		}
		if($REF_DOC=="PROFORMA"){
			$ID_TEMP=gn("ID","z_vis_cotizaciones",
				    	"ISER=$TEMP_SER AND INUM=$TEMP_NUM AND ID_EMP=$StrEmpR_");
			if($ID_TEMP==0){
				echo "|MS|No se puede determinar el ID de la proforma|1|";
				return;
			}
			$ANU=gs("anu","cotizaciones","id_cotizacion=$ID_TEMP");
			if($ANU=="S"){
				echo "|MS|La proforma ha sido anulada|1|";
				return;
			}
			/////////////////////////////////////////////////////////////////////////
			$MSG="";
			FxCOT_PARSE_CANTIDADES($ID_TEMP);
			$s="SELECT * FROM temp_compras WHERE cod_temc='$HWN' ORDER BY temc_index";
			$rs=grs($s);			
			while($r=$rs->fetch_assoc()){
				$PRO_KOD=$r['temc_id_producto'];
				$PRO_CAN=$r['temc_cant'];
				$PRO_PIE=$r['dscto'];
				//
				$CX=gn("count(*)","cotizaciones_det","id_producto=$PRO_KOD AND can_uni=$PRO_PIE AND id_cotizacion=$ID_TEMP");
				if($CX==0){
					$PRO=$r['des'];
					$MSG=$PRO." x ".$PRO_PIE." no registrado en la proforma de referencia";
					break;
				}
				$VC=gn("ve_control","cotizaciones_det","id_producto=$PRO_KOD AND can_uni=$PRO_PIE AND id_cotizacion=$ID_TEMP");
				$VV=gn("SUM(ca)","ventas_det","id_venta=$ID AND id_producto=$PRO_KOD AND can_uni=$PRO_PIE");
				if($PRO_CAN>($VC+$VV)){
					$PRO=$r['des'];
					$MSG="Cantidad/saldo insuficiente en proforma para ".$PRO." x ".$PRO_PIE." se pide $PRO_CAN y la cantidad disponible es $VC";
					break;
				}
						
			}
			if(strlen($MSG)==0){
				echo "|OK|OK|1|";
			}else{
				echo "|MS|".$MSG."|1|";
			}
			return;
		}
		echo "|OK|OK|1|";
		return;
	}
	//++++++++++++++++++++++++++++++++++++++++
	if($CM=="VEN_G_VAL"){
		$HWN=trim($P1);
		$REF_DOC=trim($P2);
		$REF_EMP=trim($P3);
		$REF_NUM=trim($P4);
		//
		$DAT=explode("-",$REF_NUM);
		$TEMP_SER=vbval($DAT[0]);
		$TEMP_NUM=vbval($DAT[1]);
		$StrEmpR_=gn("id_emp","empresas","emp_nomc='$REF_EMP'");
		//
		if($TEMP_SER==0){
			echo "|MS|Serie de referencia no valida|1|";
			return;
		}
		if($TEMP_NUM==0){
			echo "|MS|Numero de referencia no valido|1|";
			return;
		}
		if($REF_DOC=="PROFORMA"){
			$ID_TEMP=gn("ID","z_vis_cotizaciones",
				    	"ISER=$TEMP_SER AND INUM=$TEMP_NUM AND ID_EMP=$StrEmpR_");
			if($ID_TEMP==0){
				echo "|MS|No se puede determinar el ID de la proforma|1|";
				return;
			}
			$ANU=gs("anu","cotizaciones","id_cotizacion=$ID_TEMP");
			if($ANU=="S"){
				echo "|MS|La proforma ha sido anulada|1|";
				return;
			}
			/////////////////////////////////////////////////////////////////////////
			$MSG="";
			FxCOT_PARSE_CANTIDADES($ID_TEMP);
			$s="SELECT * FROM temp_compras WHERE cod_temc='$HWN' ORDER BY temc_index";
			$rs=grs($s);			
			while($r=$rs->fetch_assoc()){
				$PRO_KOD=$r['temc_id_producto'];
				$PRO_CAN=$r['temc_cant'];
				$PRO_PIE=$r['dscto'];
				//
				$CX=gn("count(*)","cotizaciones_det","id_producto=$PRO_KOD AND can_uni=$PRO_PIE AND id_cotizacion=$ID_TEMP");
				if($CX==0){
					$PRO=$r['des'];
					$MSG=$PRO." x ".$PRO_PIE." no registrado en la proforma de referencia";
					break;
				}
				$VC=gn("ve_control","cotizaciones_det","id_producto=$PRO_KOD AND can_uni=$PRO_PIE AND id_cotizacion=$ID_TEMP");
				if($PRO_CAN>$VC){
					$PRO=$r['des'];
					$MSG="Cantidad/saldo insuficiente en proforma para ".$PRO." x ".$PRO_PIE." se pide $PRO_CAN y la cantidad disponible es $VC";
					break;
				}
						
			}
			if(strlen($MSG)==0){
				echo "|OK|OK|1|";
			}else{
				echo "|MS|".$MSG."|1|";
			}
			return;
		}
		echo "|OK|OK|1|";
		return;
	}
    //++++++++++++++++++++++++++++++++++++++++
	if($CM=="GUIA_VAL_REF_PRO"){
		$SER=trim($P1);
		$NUM=trim($P2);
		$EMP=trim($P3);
		$EMP=gn("id_emp","empresas","emp_nomc='$EMP'");
		//
		$SER=vbval($SER);
		$NUM=vbval($NUM);
		$KOD=gn("ID","z_vis_cotizaciones","ID_EMP=$EMP AND ISER=$SER AND INUM=$NUM");
		if($ID==0){
			echo "|MS|Proforma no registrada|";
			return;
		}
		$ANU=gs("anu","cotizaciones","id_cotizacion=$KOD");
		if($ANU=="S"){
			echo "|MS|La proforma ha sido anulada|";
			return;
		}
		$GIA=gn("id_guia","guias","anu='N' AND id_comr=-3 AND idr=$KOD");
		if($GIA>0){
			$DAT=gr("vguias","ID=".$GIA);
			$BAT=$DAT['TIP_GIA']." ".$DAT['SER']."-".$DAT['NUM'];
			echo "|MS|La proforma ha sido emitida en una guia ($BAT)|";
			return;
		}
		echo "|OK|OK|";
		return;
	}
	//++++++++++++++++++++++++++++++++++++++++
	if($CM=="VEN_GIA_GET_PROFORMA"){
		$EMP=$P1;
		$GIA=$P2;
		//
		$EMP_KOD=gn("id_emp","empresas","emp_nomc='$EMP'");
		$POS=strpos($GIA,"-");
		if($POS===false){
			echo "|MS|Formato de guia (serie-numero) no valido";
			return;
		}
		$DAT=explode("-",$GIA);
		$SER=vbval($DAT[0]);
		$NUM=vbval($DAT[1]);
		//ELE
		$CX=gn("count(*)","vix23_guias","EMP_KOD=$EMP_KOD AND TIP_GIA=8");
		if($CX>0){
			$KOD=gn("ID","vix23_guias","EMP_KOD=$EMP_KOD AND TIP_GIA=8 AND ISER=$SER AND INUM=$NUM AND ANU='N' AND REF_COM_KOD=-2");
			if($KOD==0){
				echo "|MS|Guia no esta registrada ,o ha sido anulada o no corresponde a una guia interna|";return;
			}
			
		}else{
			$CX=gn("count(*)","vix23_guias","EMP_KOD=$EMP_KOD AND TIP_GIA=7");
			if($CX>0){
				$KOD=gn("ID","vix23_guias","EMP_KOD=$EMP_KOD AND TIP_GIA=7 AND ISER=$SER AND INUM=$NUM AND ANU='N' AND REF_COM_KOD=-2");
				if($KOD==0){
					echo "|MS|Guia no esta registrada ,o ha sido anulada o no corresponde a una guia interna|";return;
				}
			}
		}
		$GIN_KOD=gn("REF_KOD","vix23_guias","ID=$KOD");
		if($GIN_KOD==0){
			echo "|MS|No se puede determinar el id de la guia interna|";return;
		}
		$r=gr("vix23_guias_cot","ID=".$GIN_KOD);
		$EMP=$r['COT_EMP_NC'];		
		$SER=$r['COT_SER'];	
		$NUM=$r['COT_NUM'];
		$SER_NUM=$SER."-".$NUM;
		echo "|OK|$EMP|$SER_NUM|$KOD|";
		return;
	}
	//+++++++++++++++++++++++++++++++++++++++
	function api_get_data($url) {
    	$ch = curl_init();  
        $timeout = 120;  
        curl_setopt($ch, CURLOPT_URL, $url);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
        $result = curl_exec($ch);  
        curl_close($ch);  
    	return $result;
    }
	//++++++++++++++++++++++++++++++++++++++++
	if($CM=="GET_RUC"){
		$RUC=trim($P1);
		//$DAT=file_get_contents("http://admsistema.com/apis/ruc.php?CMD=RUC&RUC=".$RUC);
		//$DAT=file_get_contents("http://grupolq-peru.com/sistema/ruc.php?CMD=RUC&RUC=".$RUC);
		$DAT=api_get_data("http://admsistema.com/ang_ruc/consultar_dni.php?TDI=RUC&NDI=".$RUC);
		//$DAT="OK|DEMO|";
		$BAT=explode("<datos>",$DAT);
		
		echo $BAT[1];return;
	}
	if($CM=="GIA_GUARDAR"){
		$EMP=trim($P1);
		$RUC=trim($P2);
		$EMP_RUC=gs("emp_fe_ruc","empresas","emp_nomc='$EMP'");
		if(strcmp($EMP_RUC,$RUC)==0){
			echo "|OK|OK|";
			return;
		}else{
			echo "|MS|El ruc del destintario debe ser el mismo ruc del emisor|";
			return;
		}
	}
	if($CM=="GIA_MODIFICAR_EX"){
		$KOD=vbval($P1);
		$EMP=trim($P2);
		$RUC=trim($P3);
		$EMP_RUC=gs("emp_fe_ruc","empresas","emp_nomc='$EMP'");
		if(strcmp($EMP_RUC,$RUC)==0){
			echo "|OK|OK|";
			return;
		}else{
			echo "|MS|El ruc del destintario debe ser el mismo ruc del emisor|";
			return;
		}
		$CX=gn("count(*)","guias","id_guia=$KOD");
		if($CX==0){
			echo "|MS|Guia no registrada|";return;
		}
		$ANU=gs("anu","guias","id_guia=$KOD");
		if($ANU=="S"){
			echo "|MS|Guia anulada|";return;
		}
		$TIP_GIA=gn("xx_id_tip_gia","guias","id_guia=$KOD");
		if($TIP_GIA==8){
			$GEN=gs("xx_ce_gen","guias","id_guia=$KOD");
			if($GEN=="S"){
				echo "|MS|La guia ha sido generada por lo tanto no se puede modificar|";return;
			}			
		}
		echo "|OK|OK|";return;
	}
	//++
	if($CM=="GIA_MODIFICAR"){
		$KOD=vbval($P1);
		$CX=gn("count(*)","guias","id_guia=$KOD");
		if($CX==0){
			echo "|MS|Guia no registrada|";return;
		}
		$ANU=gs("anu","guias","id_guia=$KOD");
		if($ANU=="S"){
			echo "|MS|Guia anulada|";return;
		}
		$TIP_GIA=gn("xx_id_tip_gia","guias","id_guia=$KOD");
		if($TIP_GIA==8){
			$GEN=gs("xx_ce_gen","guias","id_guia=$KOD");
			if($GEN=="S"){
				echo "|MS|La guia ha sido generada por lo tanto no se puede modificar|";return;
			}			
		}
		echo "|OK|OK|";return;
	}
	if($CM=="GIA_ELIMINAR"){
		$KOD=vbval($P1);
		$CX=gn("count(*)","guias","id_guia=$KOD");
		if($CX==0){
			echo "|MS|Guia no registrada|";return;
		}
		$ANU=gs("anu","guias","id_guia=$KOD");
		if($ANU=="S"){
			echo "|MS|Guia anulada|";return;
		}
		$TIP_GIA=gn("xx_id_tip_gia","guias","id_guia=$KOD");
		if($TIP_GIA==8){
			$GEN=gs("xx_ce_gen","guias","id_guia=$KOD");
			if($GEN=="S"){
				echo "|MS|La guia ha sido generada por lo tanto no se puede eliminar|";return;
			}			
		}
		echo "|OK|OK|";return;
	}
	if($CM=="GIA_ANULAR"){
		$KOD=vbval($P1);
		$CX=gn("count(*)","guias","id_guia=$KOD");
		if($CX==0){
			echo "|MS|Guia no registrada|";return;
		}
		$ANU=gs("anu","guias","id_guia=$KOD");
		if($ANU=="S"){
			echo "|MS|La guia ya se encuentra anulada|";return;
		}
		/*
		$TIP_GIA=gn("xx_id_tip_gia","guias","id_guia=$KOD");
		if($TIP_GIA==8){
			$GEN=gs("xx_ce_gen","guias","id_guia=$KOD");
			if($GEN=="S"){
				echo "|MS|La guia ha sido generada por lo tanto no se puede anular|";return;
			}			
		}
		*/
		echo "|OK|OK|";return;
	}
	//++++++++++++++++++++++++++++++++++++++++
	if($CM=="AG_COT_VAL_M"){
		$MSG="";
		$HW=trim($P1);
		$PK=vbval($P2);
		//
		$s="SELECT * FROM temp_compras2 WHERE cod_temc='$HW' ORDER BY temc_index";
		$rs = grs($s);
		while($r=$rs->fetch_assoc()){
			$PRO=$r['temc_id_producto'];
			$PIE=$r['can_uni'];
			$CAN=$r['temc_cant'];
			$AUT=$r['bit_stock'];
			//
			$DEV=gn("ca","cotizaciones_det","id_cotizacion=$PK AND id_producto=$PRO AND can_uni=$PIE");
			//
			$STO=gn("SUM(pro_sto)","t_productos","pro_id=$PRO AND pro_pie=$PIE");
			$SEP=gn("SUM(pro_sep)","t_productos","pro_id=$PRO AND pro_pie=$PIE") - $DEV;
			//
			if($MOD_PRE==1){
				//TODO_OK
			}else{
    			if($AUT==0){
    				if($CAN>($STO-$SEP)){
    					$COD=gs("pro_codigo","productos","id_producto=$PRO");
    					if($COD=="A001" || $COD=="A002"){
    						//
    					}else{
    						$DES=gs("pro_des","productos","id_producto=$PRO");
    						$DES=$COD."x".$PIE." ".$DES;
    						$MSG="Stock insuficiente para : ( ".$DES." ), el stock es : ".$STO." ,la cantidad separado es : ".$SEP;		
    						break;
    					}
    				}
    			}
			}
		}
		if(strlen($MSG)==0){
			echo "|OK|OK|";return;
		}else{
			echo "|MS|".$MSG."|";return;
		}
	}
	//++++++++++++++++++++++++++++++++++++++++
	if($CM=="AG_COT_VAL_G"){
		$MSG="";
		$HW=trim($P1);
		$s="SELECT * FROM temp_compras2 WHERE cod_temc='$HW' ORDER BY temc_index";
		$rs = grs($s);
		while($r=$rs->fetch_assoc()){
			$PRO=$r['temc_id_producto'];
			$PIE=$r['can_uni'];
			$CAN=$r['temc_cant'];
			$AUT=$r['bit_stock'];
			//
			$STO=gn("SUM(pro_sto)","t_productos","pro_id=$PRO AND pro_pie=$PIE");
			$SEP=gn("SUM(pro_sep)","t_productos","pro_id=$PRO AND pro_pie=$PIE");
			//
			if($MOD_PRE==1){
				//TODO_OK
			}else{
    			if($AUT==0){
    				if($CAN>($STO-$SEP)){
    					$COD=gs("pro_codigo","productos","id_producto=$PRO");
    					if($COD=="A001" || $COD=="A002"){
    						//
    					}else{
    						$DES=gs("pro_des","productos","id_producto=$PRO");
    						$DES=$COD."x".$PIE." ".$DES;
    						$MSG="Stock insuficiente para : ( ".$DES." ), el stock es : ".$STO." ,la cantidad separado es : ".$SEP;		
    						break;
    					}
    				}
    			}
			}
		}
		if(strlen($MSG)==0){
			echo "|OK|OK|";return;
		}else{
			echo "|MS|".$MSG."|";return;
		}
	}
	//++++++++++++++++++++++++++++++++++++++++
	//
    if($CM=="CALCULAR"){
		$ALM=vbval($P1);
		$PRO=vbval($P2);
		$PIE=vbval($P3);
		$ACC=trim($P4);
		$KAN=vbval($P5);
		//
		$CAN_SUB=$KAN/2;
		//
		$STOCK=gn("sp_cantidad","stocks_presentaciones","sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$PIE");
		$STOCK_FINAL=$STOCK - $CAN_SUB;
		//
		$NEW_PIE=$PIE/2;
		$ZTOCK=gn("sp_cantidad","stocks_presentaciones","sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$NEW_PIE");
		$ZTOCK_FINAL=$ZTOCK + $KAN;
		//
		$RPT="";
		$RPT=$RPT."El stock actual de $PIE piezas es : $STOCK cajas, al aplicar la transformacion es stock resultara : $STOCK_FINAL cajas, ";
		$RPT=$RPT."el stock actual de $NEW_PIE piezas es : $ZTOCK cajas, al aplicar la transformacion es stock resultara : $ZTOCK_FINAL cajas.";
		echo $RPT;
		return;
	}
	//
	if($CM=="TRANSFORMAR_PARSE"){
		$ALM=vbval($P1);
		$PRO=vbval($P2);
		$PIE=vbval($P3);
		$ACC=trim($P4);
		$KAN=vbval($P5);
		$PAR_FEC=trim($P6);
		$PAR_HOR=trim($P7);
		//
		$MED_CX=gn("count(*)","medias","med_sys_fec='$PAR_FEC' AND med_sys_hor='$PAR_HOR'");
		if($MED_CX>0){
			echo "|MS|Ya procesado|";return;
		}
		MEDIAS_ADD($IDU,$ALM,$PRO,$PIE,$ACC,$KAN,$PAR_FEC,$PAR_HOR,"P");
		//
		$CAN_SUB=$KAN/2;
		//
		$s="UPDATE stocks_presentaciones 
			SET sp_cantidad=sp_cantidad - $CAN_SUB 
			WHERE sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$PIE";
		//ejt($s);
		//++
		$AJ_FEC=$PAR_FEC;
		$AJ_USU=0;
		$AJ_ALM_ID=$ALM;
		$AJ_PRO_ID=$PRO;
		$AJ_CAN=$CAN_SUB;
		$AJ_PIE=$PIE;
		GENERAR_AJUSTE_SUB($AJ_FEC,$AJ_USU,$AJ_ALM_ID,$AJ_PRO_ID,$AJ_CAN,$AJ_PIE);
		//++
		$NEW_PIE=$PIE/2;
		$CX=gn("count(*)","stocks_presentaciones","sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$NEW_PIE");	
		if($CX==0){		
			$s="INSERT INTO stocks_presentaciones VALUES ($ALM,$PRO,$NEW_PIE,$KAN,0)";
			//ejt($s);
			//++
			$AJ_FEC=$PAR_FEC;
			$AJ_USU=0;
			$AJ_ALM_ID=$ALM;
			$AJ_PRO_ID=$PRO;
			$AJ_CAN=$KAN;
			$AJ_PIE=$NEW_PIE;
			GENERAR_AJUSTE_ADD($AJ_FEC,$AJ_USU,$AJ_ALM_ID,$AJ_PRO_ID,$AJ_CAN,$AJ_PIE);
			//++
		}else{
			$s="UPDATE stocks_presentaciones 
			SET sp_cantidad=sp_cantidad + $KAN 
			WHERE sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$NEW_PIE";
			//ejt($s);
			//++
			$AJ_FEC=$PAR_FEC;
			$AJ_USU=$IDU;
			$AJ_ALM_ID=$ALM;
			$AJ_PRO_ID=$PRO;
			$AJ_CAN=$KAN;
			$AJ_PIE=$NEW_PIE;
			GENERAR_AJUSTE_ADD($AJ_FEC,$AJ_USU,$AJ_ALM_ID,$AJ_PRO_ID,$AJ_CAN,$AJ_PIE);
			//++
		}
		T_P_ACT($PRO);
		echo "|OK|OK|";return;
	}
	//
	if($CM=="TRANSFORMAR"){
		$ALM=vbval($P1);
		$PRO=vbval($P2);
		$PIE=vbval($P3);
		$ACC=trim($P4);
		$KAN=vbval($P5);
		//
		MEDIAS_ADD($IDU,$ALM,$PRO,$PIE,$ACC,$KAN,"","","R");
		//
		$CAN_SUB=$KAN/2;
		//
		$s="UPDATE stocks_presentaciones 
			SET sp_cantidad=sp_cantidad - $CAN_SUB 
			WHERE sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$PIE";
		ejt($s);
		//BIT
		$_BIT_MOD_ID="0";
		$_BIT_SQL_CAB=$s;
		$_BIT_SQL_DET="";
		$_BIT_PHP="az.php";
		$_BIT_ID=BIT_ADD("ALMACEN","PROCESAR TRANSFORMACIONES","GUARDAR",$_BIT_MOD_ID,$_BIT_SQL_CAB,$_BIT_SQL_DET,$_BIT_PHP);
		BIT_DET_ADD($_BIT_ID,$s);
		//BIT	
		$AJ_FEC=date("Y-m-d");
		$AJ_USU=$IDU;
		$AJ_ALM_ID=$ALM;
		$AJ_PRO_ID=$PRO;
		$AJ_CAN=$CAN_SUB;
		$AJ_PIE=$PIE;
		GENERAR_AJUSTE_SUB($AJ_FEC,$AJ_USU,$AJ_ALM_ID,$AJ_PRO_ID,$AJ_CAN,$AJ_PIE);
		//++
		$NEW_PIE=$PIE/2;
		$CX=gn("count(*)","stocks_presentaciones","sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$NEW_PIE");	
		if($CX==0){		
			$s="INSERT INTO stocks_presentaciones VALUES ($ALM,$PRO,$NEW_PIE,$KAN,0)";
			ejt($s);
			BIT_DET_ADD($_BIT_ID,$s);
			//++
			$AJ_FEC=date("Y-m-d");
			$AJ_USU=$IDU;
			$AJ_ALM_ID=$ALM;
			$AJ_PRO_ID=$PRO;
			$AJ_CAN=$KAN;
			$AJ_PIE=$NEW_PIE;
			GENERAR_AJUSTE_ADD($AJ_FEC,$AJ_USU,$AJ_ALM_ID,$AJ_PRO_ID,$AJ_CAN,$AJ_PIE);
			//++
		}else{
			$s="UPDATE stocks_presentaciones 
			SET sp_cantidad=sp_cantidad + $KAN 
			WHERE sp_id_almacen=$ALM AND sp_id_producto=$PRO AND sp_presentacion=$NEW_PIE";
			ejt($s);
			BIT_DET_ADD($_BIT_ID,$s);
			//++
			$AJ_FEC=date("Y-m-d");
			$AJ_USU=$IDU;
			$AJ_ALM_ID=$ALM;
			$AJ_PRO_ID=$PRO;
			$AJ_CAN=$KAN;
			$AJ_PIE=$NEW_PIE;
			GENERAR_AJUSTE_ADD($AJ_FEC,$AJ_USU,$AJ_ALM_ID,$AJ_PRO_ID,$AJ_CAN,$AJ_PIE);
			//++
		}
		T_P_ACT($PRO);
		echo "|OK|OK|";return;
		
	}
	//
//
if($CM=="02_ALMACEN"){
	$G="";		
	if($ALM==0){
		$s="SELECT ANC FROM vis_almacenes 
			WHERE ENC='$P1' AND FUN='ALMACEN' 
			GROUP BY ANC 
			ORDER BY ANC ";		
	}else{
		$s="SELECT ANC FROM vis_almacenes 
			WHERE IDA=$ALM AND FUN='ALMACEN'  ";		
	}
	$rs = grs($s);
	while ($r = $rs->fetch_assoc()){
		$G=$G.$r['ANC']."|";
	}
	if(strlen($G)>0){
		$G=vbmid($G,1,strlen($G)-1);
	}else{
		$G="X";
	}
	echo $G;
}
//
if($CM=="02_22"){
	$G="";		
	if($ALM==0){
		$s="SELECT ANC FROM vis_almacenes 
			WHERE ENC='$P1' 
			GROUP BY ANC 
			ORDER BY ANC ";		
	}else{
		$s="SELECT ANC FROM vis_almacenes 
			WHERE IDA=$ALM";		
	}
	$rs = grs($s);
	while ($r = $rs->fetch_assoc()){
		$G=$G.$r['ANC']."|";
	}
	if(strlen($G)>0){
		$G="TODOS|".vbmid($G,1,strlen($G)-1);
	}else{
		$G="TODOS|";
	}
	echo $G;
}
//
if($CM=="COB_VALIDAR_22_EX"){
	$EMP=$P1;
	$COM=$P2;
	$SER=$P3;
	$NUM=$P4;
	$TOT=$P5;
	$ACU=$P6;
	$COB=$P7;
	$SAL=$P8;
	$LIS=$P9;
	$KON=$P10;
	$TIE=$P11;
	//
	$VEN_ANU_CAN=0;
	//
	$LIS_TV=0;
	$LIS_DAT=explode("@",$LIS);
	for($i=0;$i<count($LIS_DAT);$i++){
		$LIS_DAT[$i]=trim($LIS_DAT[$i]);
		if(strlen($LIS_DAT[$i])>0){
			if(is_numeric($LIS_DAT[$i])){
				$LIS_TV++;
				//
				$VEN_KOD=vbval($LIS_DAT[$i]);
				$ANU=gs("anu","ventas","id_venta=$VEN_KOD");
				if($ANU=="S"){
					$VEN_ANU_CAN++;
				}
				//
			}
		}
	}
	//
	if($VEN_ANU_CAN>0){
		echo "|MS|Una o mas ventas anuladas|";return;
	}
	//
	if(!USU_PER_GET_ES_CAJERO()){
		echo "|MS|Valido solo para usuarios de cargo cajero|";return;
	}
	//
	if(strlen($KON)>0){
		$ID=gn("ID","vis_contratos","NUM='$KON'");
		if($ID==0){
			echo "|MS|Numero de contrato no registrado|";
			return;
		}else{
			$DIS=gn("ACU - USA","vis_contratos","ID=$ID");
			if($COB>$DIS){
				echo "|MS|El total a cobrar es mayor al saldo disponible del contrato|";
				return;
			}
		}
	}
	//
	$NDR=0;
	$S=vbval($SER);
	$N=vbval($NUM);
	//
	$D=gn("id_comprobante","comprobantes","com_nombre='$COM'");		
	$E=gn("id_emp","empresas","emp_nomc='$EMP'");
	$TIE=gn("id_almacen","almacenes","alm_obs='$TIE' AND alm_id_empresa=$E");
	//
	if($COM=="BOLETA" || $COM=="FACTURA" || $COM=="BOL. ELEC." || $COM=="FACT. ELEC."){		
		$I=gn("ID","z_vis_ventas","ID_COM=$D AND ISER=$S AND INUM=$N AND ID_EMP=$E");
		$NDR=1;
	}
	if($COM=="PROFORMA"){
		$I=gn("ID","z_vis_cotizaciones","ISER=$S AND INUM=$N AND ID_ALM=$TIE AND ID_EMP=$E");
		$NDR=gn("count(*)","ventas","ven_id_com=-3 AND ven_id_ven=$I AND anu='N'");
	}
	//
	if($I==0){
		echo "|MS|Comprobante, serie y numero no corresponde a la empresa y punto de emision|";return;
	}
	//
	if($LIS_TV>0 && $NDR>0){
		if($LIS_TV==$NDR){
			if($SAL>0){
				echo "|MS|Las ventas relacionadas han sido determinadas ($LIS_TV,$NDR) ".
				"como pagadas, sin embargo el saldo es mayor a cero|";
				return;
			}
		}
	}
	echo "|OK|OK|";return;
}
//
if($CM=="COB_VALIDAR_22"){
	$EMP=$P1;
	$COM=$P2;
	$SER=$P3;
	$NUM=$P4;
	$TOT=$P5;
	$ACU=$P6;
	$COB=$P7;
	$SAL=$P8;
	$LIS=$P9;
	$KON=$P10;
	$TIE=$P11;
	//
	$VEN_ANU_CAN=0;
	//
	$LIS_TV=0;
	$LIS_DAT=explode("@",$LIS);
	for($i=0;$i<count($LIS_DAT);$i++){
		$LIS_DAT[$i]=trim($LIS_DAT[$i]);
		if(strlen($LIS_DAT[$i])>0){
			if(is_numeric($LIS_DAT[$i])){
				$LIS_TV++;
				//
				$VEN_KOD=vbval($LIS_DAT[$i]);
				$ANU=gs("anu","ventas","id_venta=$VEN_KOD");
				if($ANU=="S"){
					$VEN_ANU_CAN++;
				}
				//
			}
		}
	}
	//
	if($VEN_ANU_CAN>0){
		echo "|MS|Una o mas ventas anuladas|";return;
	}
	//
	if(!USU_PER_GET_ES_CAJERO()){
		echo "|MS|Valido solo para usuarios de cargo cajero|";return;
	}
	//
	if(strlen($KON)>0){
		$ID=gn("ID","vis_contratos","NUM='$KON'");
		if($ID==0){
			echo "|MS|Numero de contrato no registrado|";
			return;
		}else{
			$DIS=gn("ACU - USA","vis_contratos","ID=$ID");
			if($COB>$DIS){
				echo "|MS|El total a cobrar es mayor al saldo disponible del contrato|";
				return;
			}
		}
	}
	//
	$NDR=0;
	$S=vbval($SER);
	$N=vbval($NUM);
	//
	$D=gn("id_comprobante","comprobantes","com_nombre='$COM'");		
	$E=gn("id_emp","empresas","emp_nomc='$EMP'");
	$TIE=gn("id_almacen","almacenes","alm_obs='$TIE' AND alm_id_empresa=$E");
	//
	if($COM=="BOLETA" || $COM=="FACTURA" || $COM=="BOL. ELEC." || $COM=="FACT. ELEC."){	
		$I=gn("ID","z_vis_ventas","ID_COM=$D AND ISER=$S AND INUM=$N AND ID_EMP=$E");
		$NDR=1;
	}
	if($COM=="PROFORMA"){
		$I=gn("ID","z_vis_cotizaciones","ISER=$S AND INUM=$N AND ID_ALM=$TIE AND ID_EMP=$E");
		$NDR=gn("count(*)","ventas","ven_id_com=-3 AND ven_id_ven=$I AND anu='N'");
	}
	//
	if($I==0){
		echo "|MS|Comprobante, serie y numero no corresponde a la empresa y punto de emision|";return;
	}
	//
	if($LIS_TV>0 && $NDR>0){
		if($LIS_TV==$NDR){
			if($SAL>0){
				echo "|MS|Las ventas relacionadas han sido determinadas ($LIS_TV,$NDR) ".
				"como pagadas, sin embargo el saldo es mayor a cero|";
				return;
			}
		}
	}
	echo "|OK|OK|";return;
}
//
if($CM=="COB_KIL_CUENTA"){
	$COB=vbval($P1);
	//
	if(USU_PER_GET_ES_CAJERO()==true || USU_PER_GET_ES_FACTURACION()==true){
		//OK
	}else{
		echo "|MS|Funcion valida solo para usuarios de tipo cajero o facturacion|";return;
	}
	$CX=gn("count(*)","cobroz","id_cobro=$COB");
	if($CX==0){
		echo "|MS|Cobro no registrado|";return;
	}
	$s="UPDATE cobroz 
		SET cob_id_cta=0,
			cob_ope_nro='',
			cob_ope_fec='1900-01-01' WHERE id_cobro=$COB";
	ejt($s);
	//
	COBROS_UPDATE_CV($COB);
	//
	echo "|OK|OK|";return;
}	
//+++
if($CM=="COB_SET_CUENTA"){
	$COB=vbval($P1);
	$CUE=trim($P2);
	$OPE_NRO=trim($P3);
	$OPE_FEC=trim($P4);
	//
	if(USU_PER_GET_ES_CAJERO()==true || USU_PER_GET_ES_FACTURACION()==true){
		//OK
	}else{
		echo "|MS|Funcion valida solo para usuarios de tipo cajero o facturacion|";return;
	}
	$CX=gn("count(*)","cobroz","id_cobro=$COB");
	if($CX==0){
		echo "|MS|Cobro no registrado|";return;
	}
	$CUE=gn("ID_CTA","vis_cuentas_emp","MI_CUENTA='$CUE'");
	if($CUE==0){
		echo "|MS|No se puede determinar el id de la cuenta seleccionada|";return;
	}
	if(!IsDate($OPE_FEC)){
		echo "|MS|Fecha no valida|";return;
	}
	$OPE_FEC=ToDate($OPE_FEC);
	$s="UPDATE cobroz 
		SET cob_id_cta=$CUE,
			cob_ope_nro='$OPE_NRO',
			cob_ope_fec='$OPE_FEC' WHERE id_cobro=$COB";
	ejt($s);
	//
	COBROS_UPDATE_CV($COB);
	//
	echo "|OK|OK|";return;
}
//
if($CM=="COBROZ_ANULAR"){
	$ID=vbval($P1);
	$CX=gn("count(*)","cobroz_ventas","cv_id_cob=$ID AND cv_cob_anu='NO'");
	if($CX>0){
		echo "|MS|Una o mas ventas asignadas, anule las asignaciones correspondientes|";return;
	}else{
		echo "|OK|OK|";return;
	}
}
//
if($CM=="COB_VEN_ELIMINAR"){
	//
	$KOD=vbval($P1);
	//
	if(USU_PER_GET_ES_CAJERO()==true || USU_PER_GET_ES_FACTURACION()==true){
		//OK
	}else{
		echo "|MS|Funcion valida solo para usuarios de tipo cajero o facturacion|";return;
	}
	//
	$SYS_FEC=date("Y-m-d");
	$SYS_HOR=GetHoraAP();
	$SYS_TIM=time();
	//
	$s="DELETE cobroz_ventas WHERE id_cv=".$KOD;
	ejt($s);
	//
	echo "|OK|OK|";return;
}
//
if($CM=="COB_VEN_ANULAR"){
	//
	$KOD=vbval($P1);
	$COB=vbval($P2);
	$VEN=vbval($P3);
	//
	if(USU_PER_GET_ES_CAJERO()==true || USU_PER_GET_ES_FACTURACION()==true){
		//OK
	}else{
		echo "|MS|Funcion valida solo para usuarios de tipo cajero o facturacion|";return;
	}
	//
	$SYS_FEC=date("Y-m-d");
	$SYS_HOR=GetHoraAP();
	$SYS_TIM=time();
	//
	$MODO=gs("cv_modo","cobroz_ventas","id_cv=$KOD");
	//
	$s="UPDATE cobroz_ventas 
		SET cv_cob_anu='SI',
			cv_cob_anu_fec='$SYS_FEC',
			cv_cob_anu_hor='$SYS_HOR',
			cv_cob_anu_tim=$SYS_TIM,
			cv_cob_anu_usu=$IDU 
		WHERE id_cv=".$KOD;
	ejt($s);
	//
	$xxx_ven_cob_acu=0;
	$xxx_ven_cob_sal=0;
	$xxx_ven_cob_pag='NO';
	$xxx_ven_cob_fec='1900-01-01';
	$xxx_ven_cob_hor='';
	$xxx_ven_cob_tim=0;
	$xxx_ven_cob_usu=0;
	$xxx_ven_cob_kod=0;
	//
	$s="UPDATE ventas 
		SET 
		ven_cob_acu=$xxx_ven_cob_acu,
		ven_cob_sal=$xxx_ven_cob_sal,
		ven_cob_pag='$xxx_ven_cob_pag',
		ven_cob_fec='$xxx_ven_cob_fec',
		ven_cob_hor='$xxx_ven_cob_hor',
		ven_cob_tim=$xxx_ven_cob_tim,
		ven_cob_usu=$xxx_ven_cob_usu,
		ven_cob_kod=$xxx_ven_cob_kod,
		ven_cob_modo='$MODO' WHERE id_venta=$VEN";
	ejt($s);
	echo "|OK|OK|";return;
	
}
//
if($CM=="COB_VEN_PAGAR"){
	//return;
	$COB_ID=vbval($P1);
	$VEN_ID=vbval($P2);
	$USU_ID=vbval($P3);
	//
	$COB_ANU=gs("cob_anu","cobroz","id_cobro=$COB_ID");
	if($COB_ANU=="SI"){
		echo "|MS|El cobro se encuentra anulado|";return;
	}
	$VEN_ANU=gs("anu","ventas","id_venta=$VEN_ID");
	if($VEN_ANU=="S"){
		echo "|MS|La venta se encuentra anulada|";return;
	}
	if(USU_PER_GET_ES_CAJERO()==true || USU_PER_GET_ES_FACTURACION()==true){
		//OK
	}else{
		echo "|MS|Funcion valida solo para usuarios de tipo cajero o facturacion|";return;
	}
	//
	if(COBROZ_SET_PAGADO($COB_ID,$VEN_ID,$USU_ID)){
		echo "|OK|OK|";return;
	}else{
		echo "|MS|Error|";return;
	}
	
}
//
if($CM=="COB_VALIDAR"){
	$EMP=$P1;
	$COM=$P2;
	$SER=$P3;
	$NUM=$P4;
	$TOT=$P5;
	$ACU=$P6;
	$COB=$P7;
	$SAL=$P8;
	$LIS=$P9;
	$KON=$P10;
	//
	$VEN_ANU_CAN=0;
	//
	$LIS_TV=0;
	$LIS_DAT=explode("@",$LIS);
	for($i=0;$i<count($LIS_DAT);$i++){
		$LIS_DAT[$i]=trim($LIS_DAT[$i]);
		if(strlen($LIS_DAT[$i])>0){
			if(is_numeric($LIS_DAT[$i])){
				$LIS_TV++;
				//
				$VEN_KOD=vbval($LIS_DAT[$i]);
				$ANU=gs("anu","ventas","id_venta=$VEN_KOD");
				if($ANU=="S"){
					$VEN_ANU_CAN++;
				}
				//
			}
		}
	}
	//
	if($VEN_ANU_CAN>0){
		echo "|MS|Una o mas ventas anuladas|";return;
	}
	//
	if(!USU_PER_GET_ES_CAJERO()){
		echo "|MS|Valido solo para usuarios de cargo cajero|";return;
	}
	//
	if(strlen($KON)>0){
		$ID=gn("ID","vis_contratos","NUM='$KON'");
		if($ID==0){
			echo "|MS|Numero de contrato no registrado|";
			return;
		}else{
			$DIS=gn("ACU - USA","vis_contratos","ID=$ID");
			if($COB>$DIS){
				echo "|MS|El total a cobrar es mayor al saldo disponible del contrato|";
				return;
			}
		}
	}
	//
	$NDR=0;
	$S=vbval($SER);
	$N=vbval($NUM);
	//
	if($COM=="BOLETA" || $COM=="FACTURA" || $COM=="BOL. ELEC." || $COM=="FACT. ELEC."){	
		$D=gn("id_comprobante","comprobantes","com_nombre='$COM'");		
		$E=gn("id_emp","empresas","emp_nomc='$EMP'");
		$I=gn("ID","z_vis_ventas","ID_COM=$D AND ISER=$S AND INUM=$N AND ID_EMP=$E");
		$NDR=1;
	}
	if($COM=="PROFORMA"){
		$I=gn("id_cotizacion","cotizaciones","iser=$S AND inum=$N");
		$NDR=gn("count(*)","ventas","ven_id_com=-3 AND ven_id_ven=$I AND anu='N'");
	}
	//
	if($LIS_TV>0 && $NDR>0){
		if($LIS_TV==$NDR){
			if($SAL>0){
				echo "|MS|Las ventas relacionadas han sido determinadas ($LIS_TV,$NDR) ".
				"como pagadas, sin embargo el saldo es mayor a cero|";
				return;
			}
		}
	}
	echo "|OK|OK|";return;
}
//
if($CM=="FX_COM_ADD_VAL"){
		$PRO=vbval($P1);
		$HWN=trim($P2);
		$PIE=vbval($P3);
		//
		$CX=gn("count(*)","temp_compras",
			   "temc_id_producto=$PRO AND cod_temc='$HWN' AND dscto=$PIE");
		if($CX>0){
			echo "|MS|El producto y piezas que desea agregar ya se encuentra en la lista|";
		}else{
			echo "|OK|OK|";
		}
		return;		
	}
//
if($CM=="FX_COM_GOM_VAL"){
		$COD=vbval($P1);
		$PRV=trim($P2);
		$NUM=trim($P3);
		$COM=trim($P4);
		$SER=trim($P5);
		//
		$PRO=gn("id_proveedor","proveedores","pro_nombre='$PRV'");
		$COM=gn("id_comprobante","comprobantes","com_nombre='$COM'");
		$CX=gn("id_compra","compras",
			   "id_proveedor=$PRO AND numero='$NUM' AND id_comprobante=$COM AND id_compra<>$COD AND ser='$SER' AND et='NO' ");
		if($CX==0){
			echo "|OK|OK|";
		}else{
			echo "|MS|Comprobante / Numero / Proveedor ya registrado, por lo tanto no se puede proceder|";
		}
		return;
	}
	//
	if($CM=="FE_GEN"){
		//
		$TXT="";
		$SYS_FEC=date("Y-m-d");
		$SYS_HOR=GetHoraAP();
		$SYS_TIM=time();
		$SYS_IP=Saber_IP();
		//
		$VEN_ID=vbval($P1);
		$USU_ID=vbval($P2);
		//
		$CX=gn("count(*)","ventas","id_venta=$VEN_ID");
		if($CX==0){
			echo "|MS|*** Error : Venta no registrada ***|";
			return;
		}
		$r=gr("ventas","id_venta=".$VEN_ID);
		if($r['id_com']==3 || $r['id_com']==4){
			if($r['anu']=="S"){
				echo "|MS|*** Error : La venta ha sido anulada ***|";
				return;
			}
		}else{
			echo "|MS|*** Error : La venta no corresponde a un documento electronico ***|";
			return;
		}
		//
ejt("DELETE FROM facturas_electronicas WHERE fe_id_venta=$VEN_ID");
		$ID_FE=gn("id_fe","facturas_electronicas","fe_id_venta=$VEN_ID");
		if($ID_FE==0){	
$TOT_SUM=0;	
$TOT_ZUM=round(gn("TOT","vventas_fe","ID=".$VEN_ID),2);		
			$STR_TXT=GEN_DOC_ELE($VEN_ID,$TXT,$TOT_SUM);
$TOT_SUM=round($TOT_SUM,2);
			if($TOT_ZUM!=$TOT_SUM){
				//echo "|MS|SUMA INCORRECTA TOT1=$TOT_ZUM, TOT2=$TOT_SUM|";
				//return;
			}
			if(file_exists($TXT)){
				unlink($TXT);
			}	
			CREATE_FILE("facturas_electronicas/".$TXT,$STR_TXT);
			//
			$ID_FE=GenId("id_fe","facturas_electronicas");
			$s="INSERT INTO facturas_electronicas 
				VALUES ($ID_FE,'$SYS_FEC','$SYS_HOR',$SYS_TIM,'$SYS_IP',$USU_ID,$VEN_ID,'$TXT','$STR_TXT',0)";
			ejt($s);
			//
			ejt("UPDATE ventas SET ven_fe_ge='S' WHERE id_venta=$VEN_ID");
			//	
			echo "|OK|$ID_FE|";		
		}else{
			$DAT_NDW=gn("fe_nd","facturas_electronicas","id_fe=$ID_FE");
			$DAT_TXT=gs("fe_txt_dat","facturas_electronicas","id_fe=$ID_FE");
			$STR_TXT=GEN_DOC_ELE($VEN_ID,$TXT);
			if($DAT_TXT!=$STR_TXT){
				echo "|MS|*** Error : Incongruencia de datos, uno o mas datos han sido alterados ***|";
			}else{
				echo "|OK|$ID_FE|$DAT_NDW|";
			}			
		}
	}
	//
	if($CM=="07"){
		$MSG="";
		$_EMPR=$P1;
		$_SERR=vbval($P2);
		$_NUMR=vbval($P3);
		$_HWND=$P4;
		//
		$_EMPR=gn("id_emp","empresas","emp_nomc='$_EMPR'");
		$COT_=gn("ID_COT","vix_cotizaciones","SER_=$_SERR AND NUM_=$_NUMR AND ID_EMP=$_EMPR");
		//
		$s="SELECT temc_id_producto as IDP,temc_cant as CAN,dscto as UNI  
			FROM temp_compras WHERE cod_temc='$_HWND' ORDER BY temc_index";
		$result = grs($s);			
		while ($row = $result->fetch_assoc()){
			$_IDP=$row['IDP'];
			$_UNI=$row['UNI'];
			$_CAN=$row['CAN'];			
			$_KAN=gn("ca_control - dej","cotizaciones_det",
					 "id_cotizacion=$COT_ AND id_producto=$_IDP AND can_uni=$_UNI");
			if($_CAN>$_KAN){				
				$MSG="CANTIDAD SUPERIOR : $_COD x $_UNI , cantidad maxima a emitir : $_KAN";
				break;
			}
		}
		if(strlen($MSG)==0){
			echo "|OK|";
		}else{
			echo "|$MSG|";
		}
	}
	//PHP-BUSCAR
	if($CM=="06"){
		$ID=COT_GET_ID_COMPRA($P1,$P2,$P3);		
		if($ID==0){
			echo "Documento de referencia no registrado";
		}else{
			$AN=gs("anulado","compras","id_compra=$ID");
			if($AN=="N"){
				echo "OK";
			}else{
				echo "El documento de referencia ha sido anulado";
			}
		}
	}
	//
	if($CM=="05"){
		$IE=gn("id_emp","empresas","emp_nomc='$P3'");
		$CO=$P1;
		$SN=explode("-",$P2);
		$SE=$SN[0];
		$NU=$SN[1];
		$IR=VEN_GET_ID_REF($CO,$SE,$NU,$IE);
		if($IR==0){
			echo "Documento de referencia no registrado";
		}else{
			$AN="N";
			if($CO=="PROFORMA"){
				$AN=gs("anu","cotizaciones","id_cotizacion=$IR");
			}else{
				$AN=gs("anulado","compras","id_compra=$IR");
			}
			if($AN=="N"){
				echo "OK";
			}else{
				echo "El documento de referencia ha sido anulado, por lo tanto no se puede proceder";
			}
		}
	}
	//
	if($CM=="04"){
		$IA=gn("id_almacen","almacenes","alm_obs='$P4'");
		echo TRANS_GET_ID_REF($P1,$P2,$P3,$IA);
	}
	//
	if($CM=="03"){
		$G="";		
		if($P1=="TODOS")$P1="%";
		if($ALM==0){
			$G=$G."TODOS|";
			$s="SELECT ANC FROM vis_almacenes 
				WHERE IDA>0 AND ENC LIKE '$P1'  
				GROUP BY ANC 
				ORDER BY ANC ";		
		}else{
			$s="SELECT ANC FROM vis_almacenes 
				WHERE IDA=$ALM";		
		}
		$rs = grs($s);
		while ($r = $rs->fetch_assoc()){
			$G=$G.$r['ANC']."|";
		}
		if(strlen($G)>0){
			$G=vbmid($G,1,strlen($G)-1);
		}else{
			$G="X";
		}
		echo $G;
	}
	//PHP
	if($CM=="02"){
		$G="";		
		if($ALM==0){
			$s="SELECT ANC FROM vis_almacenes 
				WHERE ENC='$P1' 
				GROUP BY ANC 
				ORDER BY ANC ";		
		}else{
			$s="SELECT ANC FROM vis_almacenes 
				WHERE IDA=$ALM";		
		}
		$rs = grs($s);
		while ($r = $rs->fetch_assoc()){
			$G=$G.$r['ANC']."|";
		}
		if(strlen($G)>0){
			$G=vbmid($G,1,strlen($G)-1);
		}else{
			$G="X";
		}
		echo $G;
	}
	//
	if($CM=="01"){
		if($P1=="TODOS")$P1="%";
		$G="";
		$G=$G."TODOS|";
		$s="SELECT ANC FROM vis_almacenes WHERE ENC LIKE '$P1'  ORDER BY ANC";		
		$rs = grs($s);
		while ($r = $rs->fetch_assoc()){
			$G=$G.$r['ANC']."|";
		}
		if(strlen($G)>0){
			$G=vbmid($G,1,strlen($G)-1);
		}else{
			$G="X";
		}
		echo $G;
	}
	//
	if($CM=="00"){
		$G="";		
		$s="SELECT ANC FROM vis_almacenes WHERE ENC='$P1' ORDER BY ANC";		
		$rs = grs($s);
		while ($r = $rs->fetch_assoc()){
			$G=$G.$r['ANC']."|";
		}
		if(strlen($G)>0){
			$G=vbmid($G,1,strlen($G)-1);
		}else{
			$G="X";
		}
		echo $G;
	}
?>