<?php
//+++++++++++++++++++++++++++++++++++++++++++
function VENTAS_DESHACER($ID){
	$_DR_ID=gn("id_com","ventas","id_venta=$ID");
	$_DR_IS=gn("iser","ventas","id_venta=$ID");
	$_DR_IN=gn("inum","ventas","id_venta=$ID");
	$_ANU=gs("anu","ventas","id_venta=$ID");
	$COM_REF=gn("ven_id_com","ventas","id_venta=$ID");
	$KOD_REF=gn("ven_id_ven","ventas","id_venta=$ID");
	//+++++++++++
	$VEN_ALM_KOD=gn("id_alm","ventas","id_venta=$ID");
	$VEN_EMP_KOD=gn("alm_id_empresa","almacenes","id_almacen=$VEN_ALM_KOD");
	//+++++++++++
	if($COM_REF==-3){
		if(vbval($KOD_REF)==0){
			return "|MS|No se puede determinar el ID del documento en referencia|";
		}
	}else{
		return "|MS|Procedimiento no valido para el documento en referencia|";
	}
	//
	$KILLER=gn("count(*)","ventas_kill","vk_ref_cod=$KOD_REF AND vk_ven_cod=$ID AND vk_anu='N'");
	if($KILLER>0){
		return "|MS|El procedimiento ya ha sido aplicado para la presente venta, no se puede volver a aplicar|";
	}
	//
	if($_ANU=="S"){
		return "|MS|El comprobante ya ha sido anulado|";
	}
	//3F/4B
	if($_DR_ID==3 || $_DR_ID==4){
		$_EMI=gs("ven_fe_ge","ventas","id_venta=$ID");
		if($_EMI=="S"){
		    //Verificar si ya se hizo su nota de credito
			$KOD_NDC=gn("count(*)","fe_ventaz","fv_r_id_ven=$ID");
			if($KOD_REF==0){
				//
    			$_HOY=date("Y-m-d");
    			$_FEM=gs("fec","ventas","id_venta=$ID");		
    			$_DIF=DATE_DIF($_FEM,$_HOY);
    			if($_DIF<=1){
    				return "|MS|Procedimiento no recomendado, intente anular el comprobante electronico|";
    			}
    			//
			}
		}
	}
	//
	$CX=gn("count(*)","cobroz",
		   "cob_id_com=$_DR_ID AND ".
		   "cob_icser=$_DR_IS AND ".
		   "cob_icnum=$_DR_IN AND cob_anu='NO' AND cob_id_empresa=$VEN_EMP_KOD");
	if($CX>0){
		return "|MS|Uno o mas cobros relacionados|";
	}else{
	    /*
		$CX=gn("id_guia","guias",
			   "id_comr=$_DR_ID AND ".
			   "i_serr=$_DR_IS AND ".
			   "i_numr=$_DR_IN AND anu='N'");
	    */
	    $CX=gn("ID","vis_guias_aux",
			   "VEN_COM_KOD=$_DR_ID AND ".
			   "VEN_ISER=$_DR_IS AND ".
			   "VEN_INUM=$_DR_IN AND ANU='N' AND EMP_KOD=$VEN_EMP_KOD");
		if($CX==0){
			//			
			if($COM_REF==-3){
				if(vbval($KOD_REF)==0){
					return "|MS|No se puede determinar el ID del documento en referencia|";
				}
				//++
				$KIL_COD=GenId("id_vk","ventas_kill");
				$KIL_FEC=date("Y-m-d");
				$KIL_HOR=GetHoraAP();
				$KIL_TIM=time();
				$KIL_REF=$KOD_REF;
				$KIL_VEN=$ID;
				$KIL_ANU="N";
				$KIL_SQL="INSERT INTO ventas_kill VALUES ($KIL_COD,'$KIL_FEC','$KIL_HOR',$KIL_TIM,$KIL_REF,$KIL_VEN,'$KIL_ANU')";
				ejt($KIL_SQL);
				//++
				$XX=0;
				$s="SELECT * FROM ventas_det WHERE id_venta=$ID";
				$rs=grs($s);			
				while($r=$rs->fetch_assoc()){
					$_PRO=$r['id_producto'];
					$_KAN=$r['ca'];
					$_PIE=$r['can_uni'];
					ejt("UPDATE cotizaciones_det 
						 SET ve_control=ve_control + $_KAN 
						 WHERE id_cotizacion=$KOD_REF AND 
						 id_producto=$_PRO AND can_uni=$_PIE");
					//
					$XX++;
					$KIL_SQL="INSERT INTO ventas_kill_det VALUES ($KIL_COD,$XX,$_PRO,$_KAN,$_PIE)";
					ejt($KIL_SQL);
					//
				}
				return "|OK|OK|";
			}else{
				return "|MS|Procedimiento no valido para el documento en referencia|";
			}
		}else{
			$SER=gs("CONCAT(ser,'-',num)","guias","id_guia=$CX");
			return "|MS|El presente registro esta relacionado a : GUIA ".$SER."|";
		}
	}
}
//++
function VENTAS_SE_PUEDE_ANULAR($ID){
	$_DR_ID=gn("id_com","ventas","id_venta=$ID");
	$_DR_IS=gn("iser","ventas","id_venta=$ID");
	$_DR_IN=gn("inum","ventas","id_venta=$ID");
	$_ANU=gs("anu","ventas","id_venta=$ID");
	//
	$ALM_KOD=gn("id_alm","ventas","id_venta=$ID");
	$EMP_KOD=gn("alm_id_empresa","almacenes","id_almacen=$ALM_KOD");
	//
	if($_ANU=="S"){
		return "|MS|El comprobante ha sido anulado|";
	}
	//3F/4B
	if($_DR_ID==3 || $_DR_ID==4){
		$_EMI=gs("ven_fe_ge","ventas","id_venta=$ID");
		if($_EMI=="S"){		
			$_HOY=date("Y-m-d");
			$_FEM=gs("fec","ventas","id_venta=$ID");		
			$_DIF=DATE_DIF($_FEM,$_HOY);
			if($_DIF>3){
				return "|MS|El tiempo para anular ha expirado|";
			}
		}
	}
	//
	$CX=gn("count(*)","cobroz",
		   "cob_id_com=$_DR_ID AND ".
		   "cob_icser=$_DR_IS AND ".
		   "cob_icnum=$_DR_IN AND cob_anu='NO' AND cob_id_empresa=$EMP_KOD");
	if($CX>0){
		return "|MS|Uno o mas cobros relacionados|";
	}else{
		$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=$EMP_KOD");
		if($CX==0){
			return "|OK|OK|";
		}else{
			$SER=gs("CONCAT(ser,'-',num)","guias","id_guia=$CX");
			return "|MS|El presente registro esta relacionado a : GUIA ".$SER."|";
		}
	}
	return "|MS|Procedimiento no procesado|";
}
//++++
function NDC_SE_PUEDE_ANULAR($ID){
	$_DR_ID=gn("fv_id_com","fe_ventaz","id_ven=$ID");
	$_DR_IS=gn("fv_ser_","fe_ventaz","id_ven=$ID");
	$_DR_IN=gn("fv_num_","fe_ventaz","id_ven=$ID");
	$_ANU=gs("fv_anu","fe_ventaz","id_ven=$ID");
	if($_ANU=="S"){
		return "|MS|El comprobante ha sido anulado|";
	}
	//5=NC / 6=ND
	if($_DR_ID==5 || $_DR_ID==6){
		$_EMI=gs("fv_gen","fe_ventaz","id_ven=$ID");
		if($_EMI=="S"){		
			$_HOY=date("Y-m-d");
			$_FEM=gs("fv_fec","fe_ventaz","id_ven=$ID");	
			$_DIF=DATE_DIF($_FEM,$_HOY);
			if($_DIF>3){
				return "|MS|El tiempo para anular ha expirado|";
			}else{
				return "|OK|OK|";
			}
		}else{
			if($_DR_ID==5){
				return "|MS|El comprobante aun no ha sido generado, solo se puede anular las notas de credito emitidas emitidos|";
			}else{
				return "|MS|El comprobante aun no ha sido generado, solo se puede anular las notas de debito emitidas emitidos|";			
			}
		}
	}
	//	
	return "|MS|Procedimiento no procesado|";
}
//++++
function NDD_SE_PUEDE_ANULAR($ID){
	$_DR_ID=gn("fv_id_com","fe_ventaz","id_ven=$ID");
	$_DR_IS=gn("fv_ser_","fe_ventaz","id_ven=$ID");
	$_DR_IN=gn("fv_num_","fe_ventaz","id_ven=$ID");
	$_ANU=gs("fv_anu","fe_ventaz","id_ven=$ID");
	if($_ANU=="S"){
		return "|MS|El comprobante ha sido anulado|";
	}
	//5=NC / 6=ND
	if($_DR_ID==5 || $_DR_ID==6){
		$_EMI=gs("fv_gen","fe_ventaz","id_ven=$ID");
		if($_EMI=="S"){		
			$_HOY=date("Y-m-d");
			$_FEM=gs("fv_fec","fe_ventaz","id_ven=$ID");	
			$_DIF=DATE_DIF($_FEM,$_HOY);
			if($_DIF>3){
				return "|MS|El tiempo para anular ha expirado|";
			}else{
				return "|OK|OK|";
			}
		}else{
			if($_DR_ID==5){
				return "|MS|El comprobante aun no ha sido generado, solo se puede anular las notas de credito emitidas emitidos|";
			}else{
				return "|MS|El comprobante aun no ha sido generado, solo se puede anular las notas de debito emitidas emitidos|";			
			}
		}
	}
	//	
	return "|MS|Procedimiento no procesado|";
}
//++++
function VENTAS_SE_PUEDE_ANULAR_PLUS($ID){
	$_DR_ID=gn("id_com","ventas","id_venta=$ID");
	$_DR_IS=gn("iser","ventas","id_venta=$ID");
	$_DR_IN=gn("inum","ventas","id_venta=$ID");
	$_ANU=gs("anu","ventas","id_venta=$ID");
	if($_ANU=="S"){
		//return "|MS|El comprobante ha sido anulado|";
	}
	//3F/4B
	if($_DR_ID==3 || $_DR_ID==4){
		$_EMI=gs("ven_fe_ge","ventas","id_venta=$ID");
		if($_EMI=="S"){		
			$_HOY=date("Y-m-d");
			$_FEM=gs("fec","ventas","id_venta=$ID");		
			$_DIF=DATE_DIF($_FEM,$_HOY);
			if($_DIF>3){
				return "|MS|El tiempo para anular ha expirado|";
			}
		}
	}
	//
	$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){
		return "|MS|Uno o mas cobros relacionados|";
	}else{
		$CX=gn("id_guia","guias",
			   "id_comr=$_DR_ID AND ".
			   "i_serr=$_DR_IS AND ".
			   "i_numr=$_DR_IN AND anu='N'");
		if($CX==0){
			return "|OK|OK|";
		}else{
			$SER=gs("CONCAT(ser,'-',num)","guias","id_guia=$CX");
			return "|MS|El presente registro esta relacionado a : GUIA ".$SER."|";
		}
	}
	return "|MS|Procedimiento no procesado|";
}

?>