ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido iniciar la transacción";
$buffer = "set dateformat YMD";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido setear el dateformat";
$fecha = date('Y/m/d');
// COMPROBAMOS SI LA ASISTENCIA ES VIABLE.
$saasiste = array();
$rcc = "";
$buffer = "select numreq from " . $cfg_bdrps . "saasiste (nolock)";
$buffer .= " where codemp = '" . $codemp . "'";
$buffer .= " and numreq = '" . $numreq . "'";
$buffer .= " and facturable = 'S'";
$buffer .= " and tipalb < 100";
//$buffer .= " and tipfac < 101";
$buffer .= " and (numped = '' or numped is null)";
$buffer .= " and (numalb = '' or numalb is null)";
$buffer .= " and (facturada = 'N' or facturada is null)";
$conn->ger_exec($cursor1, $buffer);
flogPedAlbFac("BUFFER: " . $buffer . "");
$rcc = gerdb_fetch($cursor1, $saasiste);
if ($rcc != ""){
return "ERROR: No se ha podido extraer el aviso o el aviso no cumple las condiciones necesarias(" . $codemp . "/" . $numreq . ")";
}
// COMPROBAMOS SI EL AVISO DE GERAPLI TIENE PEDIDO, ALBARAN O FACTURA.
$ha_sareclam = array();
$rcc = "";
$buffer = "select numreq from GERAPLI.dbo.HA_SARECLAM (nolock)";
$buffer .= " where codemp = '" . $codemp . "'";
$buffer .= " and numreq = '" . $numreq . "'";
$buffer .= " and (numped = '' or numped is null)";
$buffer .= " and (numalb = '' or numalb is null)";
$buffer .= " and (numfac = '' or numfac is null)";
$conn->ger_exec($cursor1, $buffer);
flogPedAlbFac("BUFFER: " . $buffer . "");
$rcc = gerdb_fetch($cursor1, $ha_sareclam);
if ($rcc != ""){
return "ERROR: El aviso ya tiene un pedido, albaran o factura generados(" . $codemp . "/" . $numreq . ")";
}
$numped="";
// GENERAMOS EL PEDIDO.
$msg = generarPedido($codemp, $numreq, $numped);
if (substr($msg,0,5) == "ERROR") return $msg;
// COMPROBAMOS LA EMPRESA Y EL NUMPED.
if($codemp != "" && $numped != ""){
// EXTRAEMOS LA CONTABILIDAD DEL PEDIDO.
$cab = array();
$rcc = "";
$buffer = "select tipcont from " . $cfg_bdrps . "fapedc (nolock)";
$buffer .= " where codemp = '" . $codemp . "'";
$buffer .= " and numped = '" . $numped . "'";
$conn->ger_exec($cursor1, $buffer);
flogPedAlbFac("BUFFER: " . $buffer . "");
$rcc = gerdb_fetch($cursor1, $cab);
if ($rcc != ""){
return "ERROR: No se ha podido extraer la contabilidad del pedido(" . $codemp . "/" . $numped . ")";
}else{
$tipcont = $cab['tipcont'];
}
// COMPROBAMOS SI TIENE LINEAS PARA GENERAR EL ALBARÁN.
$lin = array();
$errl = "";
$haylineas = false;
$buffer = "select canped, canenv, cumpli from " . $cfg_bdrps . "fapedl (nolock)";
$buffer .= " where codemp = '" . $codemp . "'";
$buffer .= " and numped = '" . $numped . "'";
$conn->ger_exec($cursor1, $buffer);
flogPedAlbFac("BUFFER: " . $buffer . "");
$errl = gerdb_fetch($cursor1, $lin);
if ($rcc != ""){
return "ERROR: No se han podido extraer las lineas del pedido(" . $codemp . "/" . $numped . ")";
}else{
while($errl == ""){
$linea_canped = $lin['canped'];
$linea_canenv = $lin['canenv'];
$linea_cumpli = $lin['cumpli'];
if($linea_canped != $linea_canenv && $linea_cumpli != "S"){
$haylineas = true;
}
$errl = gerdb_fetch($cursor1, $lin);
}
}
$numalb = "";
// SI HAY LINEAS GENERAMOS EL ALBARÁN.
if($haylineas && $numalb == ''){
$msg = generarAlbaran($codemp, $tipcont, $numreq, $numped, $numalb);
if (substr($msg,0,5) == "ERROR") return $msg;
}else{
return "ERROR: No hay lineas para generar el albaran o ya esta generado.";
}
// COMPROBAMOS QUE NO ESTE YA FACTURADO.
if($no_facturable != "S" && $numfac == ""){
$msg = generarFactura($codemp, $tipcont, $numreq, $numped, $numalb, $numfac);
if (substr($msg,0,5) == "ERROR") return $msg;
}else{
return "ERROR: El pedido no es facturable o ya esta facturado.";
}
// TODO OKEY.
flogPedAlbFaclistado($codemp . "/" . $numped . "/" . $numalb . "/" . $numfac);
return "Proceso finalizado correctamente " . $codemp . "/" . $numped . "/" . $numalb . "/" . $numfac;
}else{
return "ERROR: No se ha definido una empresa y numero de pedido.";
}
}else{
return "ERROR: No se ha definido una empresa y numero de aviso.";
}
}
// GENERAR PEDIDO.
function generarPedido($codemp, $numreq, &$numped){
global $conn, $gerrc, $gertxt, $cursor1, $cursor2, $cursor3, $cursor4, $cfg_bdrps, $codclib;
$ha_sareclam = $saasiste = $sareclam = $saasishora = $saasismat = $sasolucio = $fanumser = $facli = array();
flogPedAlbFac("*************GENERAR PEDIDO*************");
// -------------------------------
// Lee GERAPLI.DBO.HA_SARECLAM
// -------------------------------
$where = "codemp='".$codemp."' and numreq='".$numreq."'";
$msg = getResultSet('GERAPLI.dbo.HA_SARECLAM', $where, $ha_sareclam);
if (substr($msg,0,2) != "OK") return $msg;
// ------------------------
// Lee RPS.DBO.SAASISTE
// ------------------------
$where = "codemp='".$codemp."' and numreq='".$numreq."'";
$msg = getResultSet(''.$cfg_bdrps.'saasiste', $where, $saasiste);
if (substr($msg,0,2) != "OK") return $msg;
$nasiste = $saasiste['nasiste'];
// ------------------------
// Lee RPS.DBO.SARECLAM
// ------------------------
$where = "codemp='".$codemp."' and numreq='".$numreq."'";
$msg = getResultSet(''.$cfg_bdrps.'sareclam', $where, $sareclam);
if (substr($msg,0,2) != "OK") return $msg;
// ------------------------
// Lee RPS.DBO.SAASISHORA
// ------------------------
$where = "codemp='".$codemp."' and nasiste='".$nasiste."'";
$msg = getResultSet(''.$cfg_bdrps.'saasishora', $where, $saasishora);
if (substr($msg,0,2) != "OK") return $msg;
// ------------------------
// Lee RPS.DBO.SAASISMAT
// ------------------------
$where = "codemp='".$codemp."' and nasiste='".$nasiste."'";
$msg = getResultSet(''.$cfg_bdrps.'saasismat', $where, $saasismat);
if (substr($msg,0,2) != "OK") return $msg;
// REVISAMOS SI LA FACTURACION ES MAYOR O IGUAL A 100.
if($saasiste['tipfac'] > 100){
switch(strtoupper($saasismat['codart'])){
case 'COMU-AIRE': $codclib = '20000';break;
case 'COMU-ALARMA': $codclib = '3000';break;
case 'COMU-ANTENA': $codclib = '10000';break;
case 'COMU-ELEC': $codclib = '4000';break;
case 'COMU-EOLICA': $codclib = '10000';break;
case 'COMU-INCENDIO': $codclib = '5000';break;
case 'COMU-LINEAVIDA': $codclib = '10000';break;
case 'COMU-PORTERO': $codclib = '10000';break;
case 'COMU-PUERTAS': $codclib = '6000';break;
case 'COMU-VOZYDATOS': $codclib = '30000';break;
case 'O.T.AIRE': $codclib = '20000';break;
case 'O.T.ALARMA': $codclib = '3000';break;
case 'O.T.ANTENA': $codclib = '10000';break;
case 'O.T.ELECTRICIDAD': $codclib = '4000';break;
case 'O.T.EOLICA': $codclib = '10000';break;
case 'O.T.INCENDIO': $codclib = '5000';break;
case 'O.T.LINEAVIDA': $codclib = '10000';break;
case 'O.T.PORTERO': $codclib = '10000';break;
case 'O.T.PUERTAS': $codclib = '6000';break;
case 'O.T.VOZYDATOS': $codclib = '30000';break;
}
}
// ------------------------
// Lee RPS.DBO.SASOLUCIO
// ------------------------
$where = "codemp='".$codemp."' and numreq='".$numreq."'";
$msg = getResultSet(''.$cfg_bdrps.'sasolucio', $where, $sasolucio);
if (substr($msg,0,2) != "OK") return $msg;
// ------------------------
// Lee RPS.DBO.FACLI
// ------------------------
$where = "codemp='".$codemp."' and codcli='".$ha_sareclam[codcli]."'";
$msg = getResultSet(''.$cfg_bdrps.'facli', $where, $facli);
if (substr($msg,0,2) != "OK") return $msg;
// FECHAS
if($ha_sareclam[fechafactura] != '' && !empty($ha_sareclam[fechafactura])){
$fecha = $ha_sareclam[fechafactura];
$year = substr($fecha, 0, 4);
$mes = substr($fecha, 5, 2);
}else{
$fecha = date('Y/m/d');
$year = substr($fecha, 0, 4);
$mes = substr($fecha, 5, 2);
}
// EXTRAEMOS UN NUEVO NUMERO DE PEDIDO.
if($codemp == "001" || $codemp == "005" || $codemp == "015" || $codemp == "019"){
$where = "codemp = '".$codemp."' and descri LIKE 'PEDIDOS%' and fecha = '".$year."-".$mes."-01'";
}else{
$where = "codemp = '".$codemp."' and descri = 'PEDIDOS' and fecha like '%".$year."%'";
}
$msg = getResultSet(''.$cfg_bdrps.'fanumser', $where, $fanumser);
if (substr($msg,0,2) != "OK") return $msg;
$numped = $fanumser[npedidos];
$prefijo = $fanumser[prefijo];
// FORMAMOS EL NUMERO DE PEDIDO.
if(strlen($prefijo) == 3){
while (strlen($numped) < 5){
$numped = "0" . $numped;
}
}
if(strlen($prefijo) == 4){
while (strlen($numped) < 4){
$numped = "0" . $numped;
}
}
$numped = $prefijo . $numped;
// AUMENTAMOS EL NUMERO DE PEDIDO.
if($codemp == "001" || $codemp == "005" || $codemp == "015" || $codemp == "019"){
$buffer = "update ".$cfg_bdrps."fanumser set npedidos = '".(intval($fanumser[npedidos])+1)."' WHERE codemp = '".$codemp."' and descri LIKE 'PEDIDOS%' and fecha = '".$year."-".$mes."-01'";
}else{
$buffer = "update ".$cfg_bdrps."fanumser set npedidos = '".(intval($fanumser[npedidos])+1)."' WHERE codemp = '".$codemp."' and descri = 'PEDIDOS' and fecha like '%".$year."%'";
}
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido actualizar el numero de fanumser.";
//*************************************
// GENERAMOS LA CABECERA DEL PEDIDO.
//*************************************
$tins = array();
$tins[codemp] = $codemp;
$tins[tipcont] = 0;
$tins[numped] = $numped;
if($codclib != ''){
$tins[codcli] = $codclib;
}else{
$tins[codcli] = $saasiste[codcli];
}
$tins[fecent] = $fecha;
$tins[fecped] = $fecha;
$tins[fecsolic] = $fecha;
$tins[texto] = utf8_decode("Asis.Nº: " . $numreq);
$tins[forenv] = '';
$tins[tipfac] = cnu($saasiste[tipfac]);
$tins[forpag] = cnu($saasiste[forpag]);
$tins[numalm] = 1;
//$tins[tcomis] = NULL;
$tins[tdtopp] = 0;
$tins[tdtocli] = 0;
$tins[imppor] = 0;
$tins[numimp] = '';
$tins[tipimp] = 'F';
//$tins[cintfac] = NULL;
//$tins[direnv] = NULL;
$tins[dirgir] = cnu($ha_sareclam[dpag_codgir]);
$tins[coddom] = cnu($ha_sareclam[dban_coddom]);
$tins[codmon] = 1;
$tins[recfin] = 0;
$tins[datvar1] = '';
$tins[datvar2] = '';
$tins[datvar3] = '';
$tins[datvar4] = 0;
$tins[datvar5] = 0;
$tins[datvar6] = 0;
$tins[imporb] = 0;
$tins[porcenb] = 0;
$tins[camole] = '';
$tins[bloqueado] = 'N';
//$tins[codoferta] = NULL;
if(cnu($sareclam[tipalb]) == 0){
$tins[tipalb] = 10;
}else{
$tins[tipalb] = cnu($sareclam[tipalb]);
}
//$tins[tipalb] = cnu($sareclam[tipalb]);
$tins[comentarios] = $ha_sareclam[comentario];
$tins[codtra] = '';
$tins[codinc] = '';
$tins[codnattr] = 52;
$tins[codmodtr] = '';
$tins[numver] = 0;
$tins[albval] = 'N';
$tins[pordp] = 'D'; // VER SI ES D.
//$tins[codres] = NULL;
$tins[codage] = 0;
$tins[codage2] = 0;
$tins[codage3] = 0;
$tins[codage4] = 0;
$tins[codage5] = 0;
$tins[codage6] = cnu($facli[codage6]);
//$tins[tcomis2] = NULL;
//$tins[tcomis3] = NULL;
//$tins[tcomis4] = NULL;
//$tins[tcomis5] = NULL;
//$tins[tcomis6] = NULL;
//$tins[coddep] = NULL;
$tins[dtocli2] = 0;
$tins[dtocli3] = 0;
$tins[prioridad] = 0;
$tins[resto] = 'N';
$tins[clivar] = 0;
//$tins[codcampmark] = NULL;
//$tins[codcanal] = NULL;
$tins[conumserped] = 4;
$tins[conumseralb] = 5;
$tins[conumserfac] = 6;
$tins[codrem] = 0;
//$tins[codproyecto] = NULL;
//$tins[numexp] = NULL;
$tins[tipas] = 10;
$tins[porretencion] = 0;
//$tins[codpuerto] = NULL;
//$tins[valorintrastat] = NULL;
//$tins[codregestadistico] = NULL;
//$tins[nctatar] = NULL;
$svar = $sval = "";
foreach ($tins as $k => $v) {
if (strlen($svar) != 0) $svar .= ", ";
if (strlen($sval) != 0) $sval .= ", ";
$v = str_replace("'", "''", $v);
$svar .= $k;
$sval .= "'" . $v . "'";
}
$buffer = "insert into " . $cfg_bdrps . "fapedc (" . $svar . ") values (" . $sval . ")";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido insertar la cabecera del pedido.";
//*************************************
// GENERAMOS LAS 4 LINEAS DEL PEDIDO.
//*************************************
for($i=1;$i<6;$i++){
$articulo = '';
$descripcion = '';
$cantidad = 1;
$precio = 0;
$descuento = 0;
$total = 0;
$almacen = 1;
$tcomlin = 0;
$tcomlin2 = 0;
$tcomlin3 = 0;
$tcomlin4 = 0;
$tcomlin5 = 0;
$tcomlin6 = 0;
$coddep = 0;
$factcant = 1;
$factpre = 1;
switch($i){
case 1:
$descripcion = utf8_decode('Asistencia Técnica: '.$numreq);
break;
case 2:
$descripcion = utf8_decode('Modelo: ');
break;
case 3:
$descripcion = utf8_decode('Nº Serie: '.$ha_sareclam[seriel]);
break;
case 4:
$articulo = $saasismat[codart];
$descripcion = 'ORDENES DE TRABAJO';
$cantidad = $saasismat[cantidad];
$precio = cnu($saasismat[precio]);
$descuento = cnu($saasismat[descuento]);
$total = cnu($saasismat[precio]);
if($cantidad > 1){
$total = $precio * $cantidad;
}
if($descuento > 0){
$total = round($total - ($total * ($descuento/100)),2);
}
$almacen = $ha_sareclam[tecnico_codigo];
// OCULTADO PORQUE TEORICAMENTE NO COMISIONA NADIE MAS QUE EL ADMINISTRADOR.
//$tcomlin = 0;
//$tcomlin2 = 0;
//if($ha_sareclam[computar] == 'S'){
//// SACA LA COMISION DEL TECNICO.
//$faage = array();
//$where = "codemp='".$codemp."' and clave='".$ha_sareclam[tecnico_codigo]."'";
//$msg = getResultSet(''.$cfg_bdrps.'faage', $where, $faage);
//if (substr($msg,0,2) != "OK") Mostrar_Errores($msg);
//$tcomlin3 = $faage[tcom3];
//}else{
//$tcomlin3 = 0;
//}
//if($ha_sareclam[comercial_codigo] != 0 && $ha_sareclam[comercial_codigo] != 999){
//// SACA LA COMISION DEL COMERCIAL.
//$faage = array();
//$where = "codemp='".$codemp."' and clave='".$ha_sareclam[comercial_codigo]."'";
//$msg = getResultSet(''.$cfg_bdrps.'faage', $where, $faage);
//if (substr($msg,0,2) != "OK") Mostrar_Errores($msg);
//$tcomlin4 = $faage[tcom4];
//}else{
//$tcomlin4 = 0;
//}
//$tcomlin5 = 0;
// SACA LA COMISION DEL ADMINISTRADOR.
if($facli[codage6] != "" && $facli[codage6] != 0){
$faage = array();
$where = "codemp='".$codemp."' and clave='".$facli[codage6]."'";
$msg = getResultSet(''.$cfg_bdrps.'faage', $where, $faage);
if (substr($msg,0,2) != "OK") return $msg;
$tcomlin6 = $faage[tcom6];
}
$coddep = 'R';
break;
case 5:
$descripcion = utf8_decode($ha_sareclam[notasfactura]);
break;
}
$tins = array();
$tins[codemp] = $codemp;
$tins[tipcont] = 0;
$tins[numped] = $numped;
if($codclib != ''){
$tins[codcli] = $codclib;
}else{
$tins[codcli] = $saasiste[codcli];
}
$tins[numlin] = $i;
$tins[codart] = $articulo; //***
$tins[fecentlin] = $fecha;
$tins[fecsolic] = $fecha;
$tins[descr] = $descripcion; //***
$tins[canped] = $cantidad; //***
$tins[canenv] = 0;
$tins[canfac] = 0;
$tins[preuni] = $precio; //***
$tins[dtoartcli] = $descuento; //***
$tins[implin] = $total; //***
$tins[tcomlin] = $tcomlin;
$tins[lintfac] = '';
$tins[seriel] = '';
$tins[ubicac] = '';
$tins[largo] = 1;
$tins[ancho] = 1;
$tins[grosor] = 1;
$tins[numalm] = $almacen; //***
$tins[datvar1] = '';
$tins[datvar2] = '';
$tins[datvar3] = '';
$tins[datvar4] = 0;
$tins[datvar5] = 0;
$tins[datvar6] = 0;
$tins[dto2] = 0;
$tins[dto3] = 0;
$tins[dto4] = 0;
$tins[dto5] = 0;
$tins[casca2] = 'N';
$tins[casca3] = 'N';
$tins[casca4] = 'N';
$tins[casca5] = 'N';
if ($codemp == '001') {
$tins[ctaven] = '700010000';
} else {
$tins[ctaven] = '70001000';
}
$tins[coment] = '';
$tins[tipoalb] = 0;
$tins[sefactura] = 'S';
$tins[cumpli] = 'N';
$tins[tcomlin2] = $tcomlin2; //***
$tins[tcomlin3] = $tcomlin3; //***
$tins[tcomlin4] = $tcomlin4; //***
$tins[tcomlin5] = $tcomlin5; //***
$tins[tcomlin6] = $tcomlin6; //***
$tins[genprom] = '';
$tins[linprom] = 0;
$tins[genkit] = '';
$tins[linkit] = 0;
$tins[nordfab] = 0;
$tins[npint] = '';
$tins[salidas] = 'N';
$tins[norden] = $i * 5;
$tins[costeped] = 0;
$tins[coddep] = $coddep; //***
$tins[impdes] = 0;
$tins[ndto] = 0;
$tins[numcontrato] = 0;
$tins[rappel] = 'S';
$tins[porprecio] = 0;
$tins[coddev] = '';
$tins[cantdobuni] = 0;
$tins[factcant] = $factcant; //***
$tins[factpre] = $factpre; //***
$tins[umcv] = 'UNI';
$tins[umpv] = 'UNI';
$tins[numlinof] = NULL;
$tins[compraautsn] = NULL;
$tins[tipfactproyecto] = '';
$tins[numtramitador] = '';
//flogPedAlbFac(print_r($tins,true));
$svar = $sval = "";
foreach ($tins as $k => $v) {
if ($v != "#@NULO@#" || is_numeric($v)) {
if (strlen($svar) != 0) $svar .= ",";
if (strlen($sval) != 0) $sval .= ",";
$svar .= $k;
$sval .= "'" . str_replace("'", "", $v) . "'";
}
}
if($i == 5 && $descripcion == ''){
flogPedAlbFac("ARTICULO 5 SIN DESCRIPCION.");
break;
}
$buffer = "insert into " . $cfg_bdrps . "fapedl ($svar) values($sval)";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc != ""){
return "ERROR: No se ha podido introducir la linea " . $fapedl[numlin] . " en el pedido ".$numped.".";
}
//*************************************
// METEMOS EN FAANADEP.
//*************************************
if($i == 4){
// EXTRAEMOS EL ARTICULO DE ALART.
$alart = array();
$where = "codemp='".$codemp."' and codart='".$articulo."'";
$msg = getResultSet(''.$cfg_bdrps.'alart', $where, $alart);
if (substr($msg,0,2) != "OK") return $msg;
$tccon = $alart[tccon];
// INSERTAMOS EN FAANADEP.
$buffer = "insert into " . $cfg_bdrps . "faanadep";
$buffer .= " (codemp,tipcont,cod,por,numped,numlin)";
$buffer .= " select";
$buffer .= " " . $cfg_bdrps . "fapedl.codemp AS codemp";
$buffer .= " ," . $cfg_bdrps . "fapedl.tipcont AS tipcont";
$buffer .= " ,'1.'+" . $cfg_bdrps . "facli.tccon+'." . $tccon . "' AS cod";
$buffer .= " ,'100' AS por";
$buffer .= " ,'" . $numped . "' AS numped";
$buffer .= " , '" . $i . "' AS numlin";
$buffer .= " from " . $cfg_bdrps . "fapedl (nolock)";
$buffer .= " left join " . $cfg_bdrps . "facli (nolock) on " . $cfg_bdrps . "facli.codemp = " . $cfg_bdrps . "fapedl.codemp and " . $cfg_bdrps . "facli.codcli = " . $cfg_bdrps . "fapedl.codcli";
$buffer .= " left join " . $cfg_bdrps . "alart (nolock) on " . $cfg_bdrps . "alart.codemp = " . $cfg_bdrps . "fapedl.codemp and " . $cfg_bdrps . "alart.codart = " . $cfg_bdrps . "fapedl.codart";
$buffer .= " where " . $cfg_bdrps . "fapedl.codemp = '" . $codemp . "'";
$buffer .= " and " . $cfg_bdrps . "fapedl.numped = '" . $numped . "'";
$buffer .= " and " . $cfg_bdrps . "fapedl.numlin = '" . $i . "'";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc != ""){
return "ERROR: No se ha podido introducir la linea " . $i . " en faanadep.";
}
}
}
}
// GENERAR ALBARÁN.
function generarAlbaran($codemp, $tipcont, $numreq, $numped, &$numalb) {
global $conn, $gerrc, $gertxt, $cursor1, $cursor2, $cursor3, $cursor4;
$cfg_bdrps = "";
flogPedAlbFac("*************GENERAR ALBARÁN*************");
$buffer = "set dateformat YMD";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido setear el dateformat";
$fecha = date('Y/m/d');
// -----------------------
// Lee rps.dbo.fapedc
// -----------------------
$tc = array();
$where = "codemp='".$codemp."' and numped='".$numped."'";
$msg = getResultSet(''.$cfg_bdrps.'fapedc', $where, $tc);
if (substr($msg,0,2) != "OK") return $msg;
// FECHAS
$fecent = $tc['fecent'];
$fecsolic = $tc['fecsolic'];
// FECHA USADA EN LA FACTURA.
if($fecsolic != ""){
$fecha = substr($fecsolic, 0, 10);
$year = substr($fecsolic, 0, 4);
$mes = substr($fecsolic, 5, 2);
}else if($fecent != ""){
$fecha = substr($fecent, 0, 10);
$year = substr($fecent, 0, 4);
$mes = substr($fecent, 5, 2);
}else{
return "ERROR: No hay una fecha valida insertada en el pedido.";
}
// -----------------------
// Lee FAPEDL
// -----------------------
$tl = array();
$rcl = "";
$buffer = "select * from " . $cfg_bdrps . "fapedl (nolock)";
$buffer .= " where codemp = '" . $tc[codemp] . "'";
$buffer .= " and numped = '" . $tc[numped] . "'";
//$buffer .= " and codart <> 'NOTA'";
//$buffer .= " and codart <> '28037'";
//$buffer .= " and codart <> 'RMA'";
//$buffer .= " and tipo <> 'EMBALAJE'";
//$buffer .= " and tipo <> 'RMA'";
//$buffer .= " and canped <> canenv";
$buffer .= " and canped > 0";
$buffer .= " and cumpli <> 'S'";
$buffer .= " order by numlin";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor2, $buffer); // $cursor2 : select * from FAPEDL (nolock) ...
$rcl = gerdb_fetch($cursor2, $tl);
if ($rcl != "") return "ERROR: No se ha podido acceder a las lineas del pedido(" . $tc[codemp] . "/" . $tc[numped] . ") 1";
while ($rcl == "") {
$kart = $tl[codemp] . "|" . $tl[numped] . "|" . $tl[numlin] . "|" . $tl[codart];
/*************************************************************
* Check movimientos
**************************************************************/
$movimientos = checkMovimientos($codemp, $tl[codart]);
if($movimientos){
// ---------------------------------------------
// Comprobaciones previas movimiento almacen
// ---------------------------------------------
if (($tl[canped] + 0) < 0) {
return "ERROR: No se puede descargar el artículo (" . $tl[codart] . ") con una cantidad negativa.";
}
// --------------------------------
// RPS.dbo.almac : Validar que (exist)existencias no puedan quedar en negativo
// --------------------------------
$nalm_salida = $tl[numalm] + 0;
//
$talm = array();
$rc_alm = '';
$buffer = "select exist";
$buffer .= " from " . $cfg_bdrps . "almac (NOLOCK)";
$buffer .= " where codemp ='" . $tl[codemp] . "'";
$buffer .= " and nalm ='" . $nalm_salida . "'"; //descargar_validar salida
$buffer .= " and nomart ='" . $tl[codart] . "'";
$buffer .= " and seriel ='" . $tl[seriel] . "'";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
$rc_alm = gerdb_fetch($cursor1, $talm);
if ($rc_alm != "") {
return "ERROR: No se ha encontrado el artículo (" . $tl[codart] . ") en el almacen (" . $nalm_salida . ")"; //descargar_validar salida
}
$result = ($talm[exist] + 0) - ($tl[canped] + 0);
if (($result + 0) < 0) {
return "ERROR: El almacen (" . $nalm_salida . ") quedaria en negativo. Stock actual del articulo ".$tl[codart]."(" . ($talm[exist] + 0) . ")."; //descargar_validar salida
}
if (strlen($tl[numped]) != 0) { //tramitar bajas
//
$alart_descri1 = "";
//
// --------------------------------
// RPS.dbo.altarifas : Precio
// --------------------------------
$ttar = array();
$rc_tar = "";
$buffer = "select preven from " . $cfg_bdrps . "altarifas (NOLOCK)";
$buffer .= " where codemp = '" . $tl[codemp] . "'";
$buffer .= " and numtar = '2'";
$buffer .= " and codart = '" . $tl[codart] . "'";
$buffer .= " and '" . $fecha . "' between CONVERT(VARCHAR(10),fvdesde,120) and CONVERT(VARCHAR(10),fvhasta,120)";
$buffer .= " and codunic='UNI'";
$buffer .= " and codunip='UNI'";
$buffer .= " and lote = (";
$buffer .= " select isnull(max(lote),0) from " . $cfg_bdrps . "altarifas (NOLOCK)";
$buffer .= " where codemp = '" . $tl[codemp] . "'";
$buffer .= " and numtar = '2'";
$buffer .= " and '" . date("Y/m/d") . "' between CONVERT(VARCHAR(10),fvdesde,120) and CONVERT(VARCHAR(10),fvhasta,120)";
$buffer .= " and codart='" . $tl[codart] . "'";
$buffer .= " and lote <= 1";
$buffer .= " and codunic='UNI'";
$buffer .= " and codunip='UNI'";
$buffer .= " )";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") {
return "ERROR: al extraer precio de venta.";
}
$rc_tar = gerdb_fetch($cursor1, $ttar);
if ($rc_tar != "") $ttar[preven] = 0;
$nalm_baja = $tl[numalm];
}
if ($nalm_baja != 0) { //tramitar baja
// ###########################################################################
// # Movimiento de almacen : BAJA
// ##########################################################################
//
// --------------------------------
// RPS.dbo.alhis : $norden
// --------------------------------
$xxx = date("Ymd") . "99";
$norden = $xxx . "00001";
// SACAMOS NORDEN DE ALHIS.
$t_alhis = array();
$rc_alhis = "";
$buffer = "select max(orden) +1 as NORDEN from " . $cfg_bdrps . "alhis (NOLOCK)";
$buffer .= " where codemp = '" . $tl[codemp] . "'";
$buffer .= " and tipcont = '".$tipcont."'";
$buffer .= " and orden between " . $xxx . "00000 and " . $xxx . "99999";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") {
return "ERROR: al extraer norden de alhis";
}
$rc_alhis = gerdb_fetch($cursor1, $t_alhis);
if ($rc_alhis == "" && ($t_alhis[NORDEN] + 0) != 0) $norden = $t_alhis[NORDEN];
// --------------------------------
// RPS.dbo.alhis : insert
// --------------------------------
$tins = array();
$tins['codemp'] = $tl[codemp];
$tins['tipcont'] = $tipcont;
$tins['tipmov'] = "4"; //tramitar baja -> Salida almacen
$tins['codart'] = $tl[codart];
$tins['fecmov'] = date('Y/m/d');
$tins['fecintro'] = date("Y/m/d");
$tins['orden'] = $norden;
$tins['almace'] = ($nalm_baja + 0); //tramitar baja -> Salida almacen
$tins['seriel'] = $tl[seriel];
$tins['cant'] = ($tl[canped] + 0);
$tins['ubicac'] = "";
$tins['prec'] = number_format(($ttar[preven] + 0) , 10, ".", "");
$tins['impmov'] = number_format(($ttar[preven] + 0) * ($tl[canped] + 0) , 10, ".", "");
$tins['moves'] = "S"; //tramitar baja -> Salida almacen
$tins['clprfab'] = $tl[codcli];
$tins['numdoc'] = $tl[numped];
//$tins['posicion'] = str_replace("0", "", substr($norden, -10, 10));
$tins['posicion'] = $tl[numlin];
$tins['pmedpon'] = number_format(($ttar['preven'] + 0) , 10, ".", "");
$tins['tabauxidhis'] = "0";
$tins['tipo'] = "C";
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = "0";
$tins['datvar5'] = "0";
$tins['datvar6'] = "0";
$tins['feccad'] = "9999/12/31";
$tins['premedpon'] = number_format(($ttar['preven'] + 0) , 10, ".", "");
$tins['cantdobuni'] = "0";
$tins['numsec'] = "0";
$tins['tipfac'] = "0";
$tins['movmanual'] = "N";
$svar = $sval = "";
foreach ($tins as $k => $v) {
if (strlen($svar) != 0) $svar .= ", ";
if (strlen($sval) != 0) $sval .= ", ";
$v = str_replace("'", "''", $v);
$svar .= $k;
$sval .= "'" . $v . "'";
}
$buffer = "insert into " . $cfg_bdrps . "alhis (" . $svar . ") values (" . $sval . ")";
flogPedAlbFac("BUFFER: " . $buffer . "");
//flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido insertar el pedido en ALHIS.";
// --------------------------------
// RPS.dbo.almac : update (exist)existencias //tramitar baja
// --------------------------------
$talm = array();
$rc_alm = '';
$buffer = "select exist";
$buffer .= " from " . $cfg_bdrps . "almac (NOLOCK)";
$buffer .= " where codemp ='" . $tl['codemp'] . "'";
$buffer .= " and nalm ='" . ($nalm_baja + 0) . "'"; //tramitar baja
$buffer .= " and nomart ='" . $tl['codart'] . "'";
$buffer .= " and seriel ='" . $tl['seriel'] . "'";
$buffer .= " and tipcont='".$tipcont."'";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") {
return "ERROR: No se pudieron comprobar las existencias";
}
$rc_alm = gerdb_fetch($cursor1, $talm);
if ($rc_alm == "" && !empty($tl['seriel']) && $result == 0 ) {
$buffer = "delete from " . $cfg_bdrps . "almac";
$buffer .= " where codemp ='" . $tl['codemp'] . "'";
$buffer .= " and nalm ='" . ($nalm_baja + 0) . "'"; //tramitar baja
$buffer .= " and nomart ='" . $tl['codart'] . "'";
$buffer .= " and seriel ='" . $tl['seriel'] . "'";
$buffer .= " and tipcont='".$tipcont."'";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
}
else if ($rc_alm == "" ) {
$buffer = "update " . $cfg_bdrps . "almac";
$buffer .= " set exist = (exist - " . ($tl[canped] + 0) . "),";
$buffer .= " fultmov = '" . $fecha . "'";
$buffer .= " where codemp ='" . $tl['codemp'] . "'";
$buffer .= " and nalm ='" . ($nalm_baja + 0) . "'"; //tramitar baja
$buffer .= " and nomart ='" . $tl['codart'] . "'";
$buffer .= " and seriel ='" . $tl['seriel'] . "'";
$buffer .= " and tipcont='".$tipcont."'";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
}
// --------------------------------
// RPS.dbo.alart : update totex(existencias)
// --------------------------------
$tart = array();
$rc_art = '';
$buffer = "select totex, descri1";
$buffer .= " from " . $cfg_bdrps . "alart (NOLOCK)";
$buffer .= " where codemp ='" . $tl['codemp'] . "'";
$buffer .= " and codart ='" . $tl['codart'] . "'";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") {
return "ERROR: No se pudo extraer totex.";
exit;
}
$rc_art = gerdb_fetch($cursor1, $tart);
if ($rc_art == "") {
$alart_descri1 = str_replace("'", "''", substr($tart[descri1], 0, 200));
//
$buffer = "update " . $cfg_bdrps . "alart";
$buffer .= " set totex = (totex - " . ($tl[canped] + 0) . ")";
$buffer .= " where codemp ='" . $tl['codemp'] . "'";
$buffer .= " and codart ='" . $tl['codart'] . "'";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido actualizar articulo " . $tl[codart] . " en ALART.";
}
// --------------------------------------------
// RPS.dbo.alart : update totex(existencias)
// --------------------------------------------
}
}
// ACTUALIZAMOS LA CANTIDAD DE RPS.
$buffer = "update " . $cfg_bdrps . "fapedl";
$buffer .= " set canenv = '" . cnu($tl[canped]) . "'";
$buffer .= " where codemp = '" . $tl[codemp] . "'";
$buffer .= " and numped = '" . $tl[numped] . "'";
$buffer .= " and numlin = '" . $tl[numlin] . "'";
flogPedAlbFac("BUFFER: " . $buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido actualizar la cantidad enviada de linea de pedido " . $tl[numlin] . " en FAPEDL.";
$rcl = gerdb_fetch($cursor2, $tl);
}
// -----------------------
// update RPS.dbo.FAPEDC
// -----------------------
$buffer = "update " . $cfg_bdrps . "FAPEDC set bloqueado = 'N'";
$buffer .= " where codemp = '" . $tc[codemp] . "'";
$buffer .= " and numped = '" . $tc[numped] . "'";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") Mostrar_Errores( "ERROR: No se ha podido actualizar el bloqueo del pedido " . $tc[numped] . " en FAPEDC.");
//*************************************
// GENERAMOS LA CABECERA DEL ALBARAN.
//*************************************
$tpedc = array();
$rc_pedc = "";
$buffer = "select * from " . $cfg_bdrps . "fapedc (NOLOCK)";
$buffer .= " where codemp ='" . $tc[codemp] . "'";
$buffer .= " and numped= '" . $tc[numped] . "'";
$buffer .= " order by codemp, tipcont, numped";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") {
return "ERROR: No se pudo extraer la cabecera del pedido";
exit;
}
$rc_pedc = gerdb_fetch($cursor1, $tpedc);
if ($rc_pedc == "") {
// ----------------------------------------
// select from ..RPS.dbo.fanumser : Lee numero de albaran
// ----------------------------------------
$nalb = - 1;
$tnum = array();
$rc_num = $descri = "";
// Numeros de serie por mes.
if($tpedc[codemp] == '001' || $tpedc[codemp] == '005' || $tpedc[codemp] == '015' || $tpedc[codemp] == '019'){
switch(intval($mes)){
case 1:$descri = "ALBARANES ENERO";break;
case 2:$descri = "ALBARANES FEBRERO";break;
case 3:$descri = "ALBARANES MARZO";break;
case 4:$descri = "ALBARANES ABRIL";break;
case 5:$descri = "ALBARANES MAYO";break;
case 6:$descri = "ALBARANES JUNIO";break;
case 7:$descri = "ALBARANES JULIO";break;
case 8:$descri = "ALBARANES AGOSTO";break;
case 9:$descri = "ALBARANES SEPTIEMBRE";break;
case 10:$descri = "ALBARANES OCTUBRE";break;
case 11:$descri = "ALBARANES NOVIEMBRE";break;
case 12:$descri = "ALBARANES DICIEMBRE";break;
default:$descri = "ERROR";
}
$buffer = "select * from " . $cfg_bdrps . "fanumser (NOLOCK)";
$buffer .= " where codemp = '".$tpedc[codemp]."'";
$buffer .= " and tipcont = '".$tipcont."'";
$buffer .= " and descri like '%" . $descri . "%'";
$buffer .= " and conumser = '5'";
$buffer .= " and fecha like '%".$year."%'";
}else{
$buffer = "select * from " . $cfg_bdrps . "fanumser (NOLOCK)";
$buffer .= " where codemp = '".$tpedc[codemp]."'";
$buffer .= " and tipcont = '".$tipcont."'";
$buffer .= " and conumser = '5'";
$buffer .= " and fecha '%".$year."%'";
}
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") {
return "ERROR: No se pudo extraer el numero de fanumser";
exit;
}
$rc_num = gerdb_fetch($cursor1, $tnum);
if ($rc_num == "") {
if ($tpedc['tipfac'] > 100) $nalb = $tnum[nalbb];
else $nalb = $tnum[nalb];
$nalb_format = $tnum[prefijo] . "" . str_pad($nalb, 4, '0', STR_PAD_LEFT);
// ----------------------------------------
// insert into RPS.dbo.faalbranc
// ----------------------------------------
$tins = array();
$tins[codemp] = $tpedc[codemp];
$tins[tipcont] = $tpedc[tipcont];
$tins[numalb] = $nalb_format;
$tins[numimp] = $nalb_format;
$tins[codcli] = $tpedc[codcli];
$tins[fecent] = $tpedc[fecent];
$tins[fecped] = $tpedc[fecped];
$tins[fecsolic] = $tpedc[fecsolic];
$tins[texto] = $tpedc[texto];
$tins[forenv] = $tpedc[forenv];
$tins[tipfac] = cnu($tpedc[tipfac]);
$tins[forpag] = cnu($tpedc[forpag]);
$tins[codage] = cnu($tpedc[codage]);
$tins[numalm] = cnu($tpedc[numalm]);
$tins[tcomis] = cnu($tpedc[tcomis]);
$tins[tdtopp] = cnu($tpedc[tdtopp]);
$tins[tdtocli] = cnu('0');
$tins[imppor] = cnu($tpedc[imppor]);
$tins[tipimp] = 'A';
$tins[cintfac] = $tpedc[cintfac];
$tins[direnv] = cnu($tpedc[direnv]);
$tins[dirgir] = cnu($tpedc[dirgir]);
$tins[coddom] = cnu($tpedc[coddom]);
$tins[codmon] = cnu($tpedc[codmon]);
$tins[recfin] = cnu($tpedc[recfin]);
$tins[datvar1] = $tpedc[datvar1];
$tins[datvar2] = $tpedc[datvar2];
$tins[datvar3] = $tpedc[datvar3];
$tins[datvar4] = $tpedc[datvar4];
$tins[datvar5] = $tpedc[datvar5];
$tins[datvar6] = $tpedc[datvar6];
$tins[imporb] = cnu($tpedc[imporb]);
$tins[porcenb] = cnu($tpedc[porcenb]);
$tins[camole] = $tpedc[camole];
$tins[bloqueado] = $tpedc[bloqueado];
$tins[codoferta] = $tpedc[codoferta];
$tins[tipalb] = $tpedc[tipalb];
$tins[comentarios] = $tpedc[comentarios];
$tins[numexp] = cnu($tpedc[numexp]);
$tins[codtra] = $tpedc[codtra];
$tins[codinc] = $tpedc[codinc];
$tins[codnattr] = $tpedc[codnattr];
$tins[codmodtr] = 1;
$tins[numver] = cnu($tpedc[numver]);
$tins[albval] = $tpedc['albval'];
$tins[pordp] = $tpedc[pordp];
$tins[confir] = 'N';
$tins[codage2] = cnu($tpedc[codage2]);
$tins[codage3] = cnu($tpedc[codage3]);
$tins[codage4] = cnu($tpedc[codage4]);
$tins[codage5] = cnu($tpedc[codage5]);
$tins[codage6] = cnu($tpedc[codage6]);
$tins[tcomis2] = cnu($tpedc[tcomis2]);
$tins[tcomis3] = cnu($tpedc[tcomis3]);
$tins[tcomis4] = cnu($tpedc[tcomis4]);
$tins[tcomis5] = cnu($tpedc[tcomis5]);
$tins[tcomis6] = cnu($tpedc[tcomis6]);
$tins[codres] = $tpedc[codres];
$tins[dtocli2] = cnu($tpedc[dtocli2]);
$tins[dtocli3] = cnu($tpedc[dtocli3]);
$tins[prioridad] = cnu($tpedc[prioridad]);
$tins[resto] = $tpedc[resto];
$tins[clivar] = cnu($tpedc[clivar]);
$tins[direct] = 'N';
$tins[conumseralb] = $tpedc[conumseralb];
$tins[conumserfac] = $tpedc[conumserfac];
$tins[codrem] = cnu($tpedc[codrem]);
$tins[tipas] = cnu($tpedc[tipas]);
$tins[porretencion] = cnu($tpedc[porretencion]);
$tins[codpuerto] = $tpedc[codpuerto];
$tins[codregestadistico] = cnu($tpedc[codregestadistico]);
$tins[valorintrastat] = cnu($tpedc[valorintrastat]);
$svar = $sval = "";
foreach ($tins as $k => $v) {
if ($v != "#@NULO@#" || is_numeric($v)) {
if (strlen($svar) != 0) $svar .= ",";
if (strlen($sval) != 0) $sval .= ",";
$svar .= $k;
$sval .= "'" . str_replace("'", "", $v) . "'";
}
}
$buffer = "insert into " . $cfg_bdrps . "faalbranc ($svar) values($sval)";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc!=0) Mostrar_Errores('ERROR: No se ha podido insertar la cabecera del albaran numero '.$nalb_format);
// ----------------------------------------
// update RPS.dbo.fanumser : Actualiza numero de albaran
// ----------------------------------------
$buffer ="update " . $cfg_bdrps . "fanumser";
if ($tpedc['tipfac'] > 100) $buffer .= " set nalbb = nalbb + 1";
else $buffer .= " set nalb = nalb + 1";
$buffer.=" where codemp='" . $tpedc[codemp] . "'";
$buffer.=" and tipcont='".$tipcont."'";
if($tpedc[codemp] == '001' || $tpedc[codemp] == '005' || $tpedc[codemp] == '015' || $tpedc[codemp] == '019'){
$buffer .= " and descri like '%" . $descri . "%'";
}
$buffer.=" and conumser='5'";
$buffer.=" and fecha LIKE '%".$year."%'";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc!=0) Mostrar_Errores('ERROR: No se ha podido actualizar el numero de albaran en FANUMSER');
}else{
return "ERROR: No se ha podido incrementar el numero de albaran.";
}
}else{
return "ERROR: No se ha podido extraer la cabecera del pedido.";
}
// ******************************************
// GENERAMOS LAS LINEAS DE ALBARAN.
// ******************************************
$fapedl = array();
$errfl = "";
$buffer = "select * from " . $cfg_bdrps . "fapedl (nolock)";
$buffer .= " where codemp = '" . $tc[codemp] . "'";
$buffer .= " and numped = '" . $tc[numped] . "'";
$buffer .= " and canped > 0";
//$buffer .= " and canped <> canenv";
$buffer .= " and cumpli <> 'S'";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor2, $buffer); // $cursor1 : select * from FAPEDL (nolock) ...
$errfl = gerdb_fetch($cursor2, $fapedl);
// EXTRAEMOS TODAS LAS LINEAS DE PEDIDO.
if ($errfl != "") return "ERROR : No se ha podido acceder a las lineas del pedido(" . $tc[codemp] . "/" . $tc[numped] . ")";
while ($errfl == "") {
// Check movimientos.
$movimientos = checkMovimientos($codemp, $fapedl['codart']);
// NUMORD.
if($movimientos){
// OBTIENE EL ULTIMO NÚMERO DE ORDEN DEL DIA Y GENERA UNO NUEVO.
$registro = array();
$rc = "";
$numord = "";
$buffer = "SELECT CAST(MAX(orden) AS VARCHAR) AS numord FROM " . $cfg_bdrps . "alhis (NOLOCK) WHERE codemp='" . $tc[codemp] . "' AND orden LIKE '".date('Ymd')."%'";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor1, $buffer);
$rc = gerdb_fetch ($cursor1, $registro);
if($rc!="" || empty($registro) || empty($registro['numord'])) {
$numord = date('Ymd') . "0000001";
} else {
$numordID = str_pad(substr($registro['numord'], 8, 7) + 1, 7, 0, STR_PAD_LEFT);
$numord = date('Ymd') . $numordID;
}
flogPedAlbFac("NUMORD: " . $numord . "");
}
// ----------------------------------------
// Insert into RPS.dbo.faalbran
// ----------------------------------------
$tins = array();
$tins[codemp] = $fapedl[codemp];
$tins[tipcont] = $tipcont;
$tins[codcli] = $fapedl[codcli];
$tins[numped] = $fapedl[numped];
$tins[numalb] = $nalb_format;
$tins[fecha] = $fapedl[fecsolic];
$tins[factsn] = 'N';
// LOGICA NUMORD.
if($movimientos){
$tins[numord] = $numord;
}else{
$tins[numord] = 0;
}
$tins[costealb] = cnu($alart[pmedpon]);
// SI ES RESTO INDICAMOS PEDIDO EN DATVAR1 .
if ($fapedl[datvar1] != "") {
$tins[datvar1] = 'N PEDIDO: ' . $fapedl[datvar1];
} else {
$tins[datvar1] = 'N PEDIDO: ' . $fapedl[numped];
}
$tins[datvar2] = '';
$tins[datvar3] = '';
$tins[datvar4] = cnu('0');
$tins[datvar5] = cnu('0');
$tins[datvar6] = cnu('0');
$tins[numalm] = cnu($fapedl[numalm]);
$tins[feccad] = cdt("9999-12-31");
$tins[coddev] = 'R';
$tins[canfac] = cnu('0'); //20200108
$tins[envact] = cnu($fapedl[canped]); //20200108
$tins[cantdobuni] = cnu("0");
$tins[numlinof] = NULL;
$tins[tipoalb] = 0;
$tins[ordent] = 0;
$tins[sefactura] = 'S';
$tins[impfac] = 0;
$tins[cantdobunifac] = 0;
$tins[masaneta] = 0;
$tins[unidsuplementarias] = 0;
$tins[numlin] = cnu($fapedl[numlin]);
$tins[norden] = cnu($fapedl[norden]);
$tins[serie] = $fapedl[seriel];
$tins[ubicacion] = $fapedl[ubicac];
$tins[precio] = cnu($fapedl[preuni]);
$tins[dto1] = cnu($fapedl[dtoartcli]);
$tins[dto2] = cnu($fapedl[dto2]);
$tins[dto3] = cnu($fapedl[dto3]);
$tins[dto4] = cnu($fapedl[dto4]);
$tins[dto5] = cnu($fapedl[dto5]);
$tins[casca2] = $fapedl[casca2];
$tins[casca3] = $fapedl[casca3];
$tins[casca4] = $fapedl[casca4];
$tins[casca5] = $fapedl[casca5];
$tins[impalb] = cnu($fapedl[implin]);
$tins[factcant] = $fapedl[factcant];
$tins[factpre] = $fapedl[factpre];
$tins[largo] = cnu($fapedl[largo]);
$tins[ancho] = cnu($fapedl[ancho]);
$tins[grosor] = cnu($fapedl[grosor]);
$tins[impdes] = cnu($fapedl[impdes]);
$tins[ndto] = cnu($fapedl[ndto]);
//flogPedAlbFac(print_r($tins,true));
$svar = $sval = "";
foreach ($tins as $k => $v) {
if ($v != "#@NULO@#" || is_numeric($v)) {
if (strlen($svar) != 0) $svar .= ",";
if (strlen($sval) != 0) $sval .= ",";
$svar .= $k;
$sval .= "'" . str_replace("'", "", $v) . "'";
}
}
$buffer = "insert into " . $cfg_bdrps . "faalbran ($svar) values($sval)";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc != ""){
return "ERROR: No se ha podido introducir la linea " . $fapedl[numlin] . " en el albaran numero " . $nalb_format . ".";
}
if($movimientos){
// ACTUALIZAMOS NUMDOC Y PREC EN ALHIS CON LOS DATOS DEL ALBARAN.
$buffer = "update " . $cfg_bdrps . "alhis";
$buffer .= " set orden = '" . $numord . "'";
$buffer .= ", numdoc = '" . $nalb_format . "'";
$buffer .= ", prec = '" . cnu($fapedl[implin]) / cnu($fapedl[canenv]). "'";
$buffer .= ", impmov = '" . cnu($fapedl[implin]) . "'";
$buffer .= ", tipfac = '" . cnu($tpedc[tipfac]). "'";
$buffer .= " where codemp = '" . $tc[codemp] . "'";
$buffer .= " and numdoc = '" . $tc[numped] . "'";
$buffer .= " and posicion = '" . $fapedl[numlin] . "'";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido actualizar articulo " . $fapedl[codart] . " en ALHIS.";
}
// ACTUALIZAMOS CUMPLI Y CANENV.
$buffer = "update " . $cfg_bdrps . "fapedl";
$buffer .= " set cumpli = 'S'";
$buffer .= " where codemp = '" . $tc[codemp] . "'";
$buffer .= " and numped = '" . $tc[numped] . "'";
$buffer .= " and numlin = '" . $fapedl[numlin] . "';";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc != ""){
return "ERROR: No se ha podido actualizar cumpli y canenv en la linea " . $fapedl[numlin] . ".";
}
$errfl = gerdb_fetch($cursor2, $fapedl);
}
// SI LA FORMA DE PAGO ES 0, PASAMOS DE FAPEDFP A FAALBRANFP.
if($tc[forpag] == 0){
// GENERAMOS LAS LINEAS DE faalbrafp.
$fapedfp = array();
$errfp = "";
$buffer = "select * from " . $cfg_bdrps . "fapedfp (nolock)";
$buffer .= " where codemp = '" . $tc[codemp] . "'";
$buffer .= " and tipcont = '" . $tc[tipcont] . "'";
$buffer .= " and numped = '" . $tc[numped] . "'";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor2, $buffer);
$errfp = gerdb_fetch($cursor2, $fapedfp);
// EXTRAEMOS TODAS LAS LINEAS DE PEDIDO.
if ($errfp != "") return "ERROR : No se ha podido acceder a las lineas de fapedfp";
while ($errfp == "") {
$tins = array();
$tins[codemp] = $fapedfp[codemp];
$tins[tipcont] = $fapedfp[tipcont];
$tins[numalb] = $nalb_format;
$tins[orden] = $fapedfp[orden];
$tins[fecvto] = $fapedfp[fecvto];
$tins[diasvto] = $fapedfp[diasvto];
$tins[importe] = cnu($fapedfp[importe]);
$tins[porimp] = cnu($fapedfp[porimp]);
$tins[tipo] = $fapedfp[tipo];
$tins[situ] = $fapedfp[situ];
$svar = $sval = "";
foreach ($tins as $k => $v) {
if ($v != "#@NULO@#" || is_numeric($v)) {
if (strlen($svar) != 0) $svar .= ",";
if (strlen($sval) != 0) $sval .= ",";
$svar .= $k;
$sval .= "'" . str_replace("'", "", $v) . "'";
}
}
$buffer = "insert into " . $cfg_bdrps . "faalbranfp ($svar) values($sval)";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if($gerrc != ""){
return "ERROR: No se ha podido introducir el registro numero ".$fapedfp[orden]." en faalbranfp";
}
$errfp = gerdb_fetch($cursor2, $fapedfp);
}
}
$numalb = $nalb_format;
}
// GENERAR FACTURA.
function generarFactura($codemp, $tipcont, $numreq, $numped, $numalb, &$numfac){
global $conn, $gerrc, $gertxt, $cursor1, $cursor2, $cursor3, $cursor4, $cfg_bdrps;
flogPedAlbFac("*************GENERAR FACTURA*************");
$buffer = "set dateformat YMD";
flogPedAlbFac("BUFFER: " . $buffer . "");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != "") return "ERROR: No se ha podido setear el dateformat";
// COMENZAMOS LA GENERACION DE LA FACTURA.
$factura = array();
$rcf = "";
// VARIABLES.
$nombrefpago = $fecsolic = $fecent = $fecha = $mes = $year = "";
$total = $impalb = $totbases = 0;
$date = DateTime::createFromFormat("Y/m/d", date("Y/m/d"));
$proveedor = $facturaAlbaran = $faalbranc = $albaran = $faparalb = $pedido = $comon = $fapag = $fapedc = $faclipag = $efdom = array();
$fanumser = array();
$paramiva = array();
$faenv = array();
$cuentas_gccoapu = array();
$param13 = array();
//*************************************************************
//* Obtiene la cabecera del pedido
//*************************************************************
$where = "codemp='".$codemp."' and numped='".$numped."' and tipcont='".$tipcont."'";
$msg = getResultSet(''.$cfg_bdrps.'fapedc', $where, $faalbranc);
if (substr($msg,0,2) != "OK") return $msg;
$fecsolic = $faalbranc['fecsolic'];
$fecent = $faalbranc['fecent'];
// FECHA USADA EN LA FACTURA.
if($fecsolic != ""){
$fecha = substr($fecsolic, 0, 10);
$year = substr($fecsolic, 0, 4);
$mes = substr($fecsolic, 5, 2);
$dia = substr($fecsolic, 8, 2);
}else if($fecent != ""){
$fecha = substr($fecent, 0, 10);
$year = substr($fecent, 0, 4);
$mes = substr($fecent, 5, 2);
$dia = substr($fecent, 8, 2);
}else{
return "ERROR: No hay una fecha valida insertada en el pedido.";
}
// COMPROBAMOS SI EL ALBARAN ES FACTURABLE.
checkFacturacion($codemp, $numalb, $tipcont);
/*************************************************************
* Obtiene el numero de factura
***************************************************************/
switch(intval($mes)){
case 1:$descri = "FACTURAS ENERO";break;
case 2:$descri = "FACTURAS FEBRERO";break;
case 3:$descri = "FACTURAS MARZO";break;
case 4:$descri = "FACTURAS ABRIL";break;
case 5:$descri = "FACTURAS MAYO";break;
case 6:$descri = "FACTURAS JUNIO";break;
case 7:$descri = "FACTURAS JULIO";break;
case 8:$descri = "FACTURAS AGOSTO";break;
case 9:$descri = "FACTURAS SEPTIEMBRE";break;
case 10:$descri = "FACTURAS OCTUBRE";break;
case 11:$descri = "FACTURAS NOVIEMBRE";break;
case 12:$descri = "FACTURAS DICIEMBRE";break;
}
$where = "codemp='".$codemp."' and tipcont='".$tipcont."'";
if($codemp == '001' || $codemp == '005' || $codemp == '015' || $codemp == '019'){
$where .= " and conumser='6' and descri like '%".$descri."%' and fecha like '%".$year."%'";
}else{
$where .= " and conumser='6' and descri like '%FACTURA%' and fecha like '%".$year."%'";
}
$orderby = "fecha desc";
$msg = getResultSet(''.$cfg_bdrps.'fanumser', $where, $fanumser,"","",$orderby);
if (substr($msg,0,2) != "OK") return $msg;
$xnum = 3;
do{
$xnum++;
if($faalbranc['tipfac'] > 100){
$numfac = $fanumser['prefijo'] . "" . "" . str_pad($fanumser['nfacb'], $xnum, '0', STR_PAD_LEFT);
}else{
$numfac = $fanumser['prefijo'] . "" . "" . str_pad($fanumser['nfaca'], $xnum, '0', STR_PAD_LEFT);
}
}while(strlen($numfac) < 8);
$numfac_15 = str_pad($numfac, 15, " ", STR_PAD_LEFT);
// Actualiza el numero de factura
$buffer = "update ".$cfg_bdrps."fanumser";
if($faalbranc['tipfac'] > 100){
$buffer .= " SET nfacb=".(intval($fanumser['nfacb']) + 1)." ";
}else{
$buffer .= " SET nfaca=".(intval($fanumser['nfaca']) + 1)." ";
}
$buffer .= " WHERE codemp='".$codemp."' and tipcont='".$tipcont."' ";
if($codemp == '001' || $codemp == '005' || $codemp == '015' || $codemp == '019'){
$buffer .= " AND conumser='6' and descri like '%".$descri."%' and fecha like '%".date("Y")."%'";
}else{
$buffer .= " AND conumser='6' and descri like '%FACTURA%' and fecha like '%".date("Y")."%'";
}
$conn->ger_exec ($cursor1, $buffer);
flogPedAlbFac($buffer);
if($io_test>=2) echo "gerrc($gerrc), buffer($buffer)
\n";
if($gerrc!="") { return "Error. gerrc(" . $gerrc . "), buffer(" . $buffer . ")
\n"; }
/*************************************************************
* Comprueba si el mes esta bloqueado
***************************************************************/
$bloqueado;
$where = "(ano = '".$year."') AND (codemp='".$codemp."')";
$msg = getResultSet(''.$cfg_bdrps.'cobloq', $where, $bloqueado, "top(1)", "mes".$mes);
if (substr($msg,0,2) != "OK") return $msg;
if ($bloqueado == "S") {
return "ERROR: El mes " . $mes . " se encuentra bloqueado";
}
/*************************************************************
* Obtiene los datos del cliente pagador
***************************************************************/
$codclipag = "";
if ($faalbranc['tipfac'] <= 100) {
/*************************************************************
* Obtiene los datos del aviso
***************************************************************/
$where = "codemp='".$codemp."' and numreq = '" . $numreq . "'";
$msg = getResultSet('GERAPLI.DBO.HA_SARECLAM', $where, $codclipag, "top(1)" , "dpag_codclipag");
if (substr($msg,0,2) != "OK") return $msg;
}
if ($codclipag == "" && $faalbranc['tipfac'] <= 100) {
$buffer = "SELECT *";
$buffer .= " FROM " . $cfg_bdrps . "efdom (NOLOCK)";
$buffer .= " WHERE empdom = '" . $codemp . "'";
$buffer .= " AND coddomdef = '-1'";
$buffer .= " AND clidom IN";
$buffer .= " (SELECT codclipag";
$buffer .= " FROM " . $cfg_bdrps ."fagir (NOLOCK)";
$buffer .= " WHERE codemp='" . $codemp . "'";
$buffer .= " AND codcli='" . $faalbranc['codcli'] . "')";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor1, $buffer);
$rc = gerdb_fetch ($cursor1, $efdom);
if($gerrc==""){
$codclipag = $efdom['clidom'];
}
}
/*************************************************************
* Obtiene el nombre de la forma de pago de la factura
***************************************************************/
$where = "codemp='".$codemp."' and clave_pag='".$faalbranc['forpag']."'";
$msg = getResultSet(''.$cfg_bdrps.'fapag', $where, $fapag);
if (substr($msg,0,2) != "OK") return $msg;
$nombrefpago = $fapag['texto'];
// SACAMOS EL IVA SI NO ES B.
if($faalbranc['tipfac'] <= 100){
/*************************************************************
* Obtiene los parametros del IVA
***************************************************************/
$where = "codemp='".$codemp."' and tipcont='".$tipcont."' and codtipo=1";
$msg = getResultSet(''.$cfg_bdrps.'paramiva', $where, $paramiva,'','','fecvigor DESC');
if (substr($msg,0,2) != "OK") return $msg;
}
/*************************************************************
* Obtiene los datos de monedas comon
***************************************************************/
$where = "codemp='".$codemp."' and codmon='1'";
$msg = getResultSet(''.$cfg_bdrps.'comon', $where, $comon);
if (substr($msg,0,2) != "OK") return $msg;
/*************************************************************
* Obtiene los datos de PARAM13
***************************************************************/
$where = "codemp='".$codemp."'";
$msg = getResultSet(''.$cfg_bdrps.'param13', $where, $param13);
if (substr($msg,0,2) != "OK") return $msg;
// /*************************************************************
// * Obtiene el ultimo número de orden del dia y genera uno nuevo
// ***************************************************************/
// $registro = array();
// $buffer = "select cast(max(numor) as varchar) as numor from RPS.dbo.falinfactu (nolock) where codemp='".$codemp."' and numor like '".date('Ymd')."%'";
// $conn -> ger_exec ($cursor1, $buffer);
// $rc = gerdb_fetch ($cursor1, $registro);
// if($io_test>=2) echo "rc($rc), buffer($buffer)
\n";
// if($rc!="" || empty($registro) || empty($registro['numor'])) {
// $norden = date('Ymd') . "0000001";
// }
// else {
// $nordenID = str_pad(substr($registro['numor'], 8, 7) + 1, 7, 0, STR_PAD_LEFT);
// $norden = date('Ymd') . $nordenID;
// }
/*************************************************************
* Obtiene el cliente
***************************************************************/
$where = " codemp='" . $codemp . "'";
$where .= " and codcli = '" . $faalbranc['codcli'] . "'";
$msg = getResultSet(''.$cfg_bdrps.'facli', $where, $facli);
if (substr($msg,0,2) != "OK") return $msg;
/*************************************************************
* Obtiene la direccion de facturacion
***************************************************************/
$where = " codenv='" . $faalbranc['direnv'] . "'";
$where .= " and codcli = '" . $faalbranc['codcli'] . "'";
$msg = getResultSet(''.$cfg_bdrps.'faenv', $where, $faenv);
//if (substr($msg,0,2) != "OK") Mostrar_Errores($msg);
/*************************************************************
* Obtiene la base del pedido
***************************************************************/
$rc = ""; $registro = array();
//preparar consulta
$buffer = "select sum(impalb) as base from ".$cfg_bdrps."faalbran (nolock) ";
$buffer .= " where numalb='".$numalb."' ";
$buffer .= " and codemp='".$codemp."' ";
$buffer .= " and tipcont='".$tipcont."' ";
$buffer .= " group by numalb";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor1, $buffer);
$rc = gerdb_fetch ($cursor1, $registro);
if($io_test>=2) echo "rc($rc), buffer($buffer)
\n";
//almacenar los datos del resultset
if($rc!="" || empty($registro)) {
return "ERROR: No se ha podido acceder a los registros de la tabla faalbran";
}
$base = $registro['base'];
if($faalbranc['tipfac'] <= 100){
$total = $base * (($paramiva['porc']/100) + 1);
$impIva = $base * ($paramiva['porc']/100);
}else{
$total = $base;
$impIva = 0;
}
// comprueba que tipo de facturacion sea 0
// if ($faalbranc['tipfac'] <> 0) {
// return "ERROR: El tipo de facturacion debe ser 0 en el albaran " . $faalbranc['numalb'] . " para poder contabilizar";
// }
/*************************************************************
* Comprueba si la factura ya esta contabilizada
***************************************************************/
//$where = "codpro='".$codpro."' and codemp='".$codemp."' and numfac='".$numfac."' and year(fecfac) = '" . $AnioFac . "'";
//getResultSet('RPS.dbo.gcfacc', $where, $facturaAlbaran);
//if (isset($facturaAlbaran) and !empty($facturaAlbaran['numfac'])) {
//return "ERROR: la factura (" . $factura[IFACTURA] . ") ya esta contabilizada ";
//}
//flogPedAlbFac(print_r($cuentas_gccoapu, true));
/**************************************************************
* Efectos a cobrar
**************************************************************/
$fecvto1 = $fecvto2 = $fecvto3 = $fecvto4 = $fecvto5 = $fecvto6 = "1899-12-30";
$impvto1 = $impvto2 = $impvto3 = $impvto4 = $impvto5 = $impvto6 = 0;
if($faalbranc['forpag'] != 0){
// DIVIDIMOS EL IMPORTE ENTRE EL NUMERO DE EFECTOS.
$totalfp = round($total / intval($fapag['numefe']),2);
$fechaVTO = $fecha;
for ($cont = 1; $cont <= $fapag['numefe']; $cont++){
/**************************************************************
* Calcula las fechas de vencimiento
**************************************************************/
if ($cont == 1) {
if ($facli['dpag1'] > 0) $diaEfecto = $facli['dpag1'];
else $diaEfecto = $fapag['d1efe'];
$date = DateTime::createFromFormat("Y-m-d", $year."-".$mes."-".$diaEfecto);
if ($mes != $date->format("m")) {
$date = DateTime::createFromFormat("Y-m-d", $year."-".$mes."-01");
$fechaVTO = $date->format("Y-m-t");
}
else if (intval($dia) > intval($date->format("d"))){
$fechaVTO = $date->format("Y-m-d");
$fechaVTO = date('Y-m-d', strtotime($fechaVTO. " + 1 month"));
}
else {
$fechaVTO = $date->format("Y-m-d");
}
}
else {
$fechaVTO = date('Y-m-d', strtotime($fechaVTO. " + ".$fapag['caden']." day"));
}
/*************************************************************
* Extrae el numrec de param2
***************************************************************/
$param2 = array();
$where = " codemp='" . $codemp . "'";
$msg = getResultSet(''.$cfg_bdrps.'param2', $where, $param2);
if (substr($msg,0,2) != "OK") return "ERROR, no se pudo extraer el numrec de param2";
//*************************************************************
//* insert FACAR
//*************************************************************
$tins = array();
$tins['codemp'] = $codemp;
if($faalbranc['tipfac'] > 100){
$tins['tip'] = 1;
}else{
$tins['tip'] = 0;
}
$tins['numfac'] = $numfac;
$tins['numefe'] = $cont;
$tins['numrec'] = intval($param2['nrec'])+1;
if ($codclipag != "" && $codclipag != $facli['codcli']) {
/*************************************************************
* Obtiene el cliente pagador
**************************************************************/
$where = " codemp='" . $codemp . "'";
$where .= " and codcli = '" . $codclipag . "'";
$msg = getResultSet(''.$cfg_bdrps.'facli', $where, $faclipag);
if (substr($msg,0,2) != "OK") return $msg;
$tins['codcli'] = $faclipag['codcli'];
}
else {
$tins['codcli'] = $facli['codcli'];
}
$tins['fecfac'] = $fecha;
$tins['fecvto'] = $fechaVTO;
$tins['codage'] = $facli['codges'];
if($fapag['tipodes'] != '' && $fapag['situdes'] != ''){
$tins['tipo'] = $fapag['tipodes'];
$tins['situ'] = $fapag['situdes'];
}else{
$tins['tipo'] = $fapag['tipo'];
$tins['situ'] = $fapag['situ'];
}
$tins['coddom'] = $faalbranc['coddom'];
$tins['impefe'] = $totalfp;
$tins['impefeext'] = 0;
$tins['forpag'] = $fapag['clave_pag'];
$tins['dirgir'] = $faalbranc['dirgir'];
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['codcadena'] = "";
$tins['codmon'] = $faalbranc['codmon'];
$tins['npint'] = "";
$tins['codcadena1'] = "";
$tins['codcadena2'] = "";
$tins['codcadena3'] = "";
$tins['clivar'] = 0;
$tins['bancar'] = 0;
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facar");
if (substr($msg,0,2) != "OK") return $msg;
// Actualizamos PARAM2
$buffer = "update ".$cfg_bdrps."param2 set nrec=nrec+1";
$buffer .= " WHERE codemp='".$codemp."'";
$conn->ger_exec ($cursor1, $buffer);
flogPedAlbFac($buffer);
if($io_test>=2) echo "gerrc($gerrc), buffer($buffer)
\n";
if($gerrc!="") { return "ERROR, no se pudo actualizar param2"); }
switch ($cont) {
case 1:
if($fechaVTO != ''){
$fecvto1 = $fechaVTO;
}
$impvto1 = $totalfp;
break;
case 2:
if($fechaVTO != ''){
$fecvto2 = $fechaVTO;
}
$impvto2 = $totalfp;
break;
case 3:
if($fechaVTO != ''){
$fecvto3 = $fechaVTO;
}
$impvto3 = $totalfp;
break;
case 4:
if($fechaVTO != ''){
$fecvto4 = $fechaVTO;
}
$impvto4 = $totalfp;
break;
case 5:
if($fechaVTO != ''){
$fecvto5 = $fechaVTO;
}
$impvto5 = $totalfp;
break;
case 6:
if($fechaVTO != ''){
$fecvto6 = $fechaVTO;
}
$impvto6 = $totalfp;
break;
}
}
}else{
// EXTRAEMOS LOS REGISTRO DE faalbranfp
$errfaal = "";
$cont = 1;
$totalfp = $total;
$faalbranfp = array();
$buffer = "select * from ".$cfg_bdrps."faalbranfp(nolock)";
$buffer .= " where numalb='".$numalb."' ";
$buffer .= " and codemp='".$codemp."' ";
$buffer .= " and tipcont='".$tipcont."' ";
$buffer .= " order by orden";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor2, $buffer);
$errfaal = gerdb_fetch ($cursor2, $faalbranfp);
while($errfaal == ""){
/*************************************************************
* Extrae el numrec de param2
***************************************************************/
$param2 = array();
$where = " codemp='" . $codemp . "'";
$msg = getResultSet(''.$cfg_bdrps.'param2', $where, $param2);
if (substr($msg,0,2) != "OK") return "ERROR, no se pudo extraer el numrec de param2");
/*************************************************************
* Campos e insert facar
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
if($faalbranc['tipfac'] > 100){
$tins['tip'] = 1;
}else{
$tins['tip'] = 0;
}
$tins['numfac'] = $numfac;
$tins['numefe'] = $cont;
$tins['numrec'] = intval($param2['nrec'])+1;
if ($codclipag != "" && $codclipag != $facli['codcli']) {
/*************************************************************
* Obtiene el cliente pagador
**************************************************************/
$where = " codemp='" . $codemp . "'";
$where .= " and codcli = '" . $codclipag . "'";
$msg = getResultSet(''.$cfg_bdrps.'facli', $where, $faclipag);
if (substr($msg,0,2) != "OK") return $msg;
$tins['codcli'] = $faclipag['codcli'];
}
else {
$tins['codcli'] = $facli['codcli'];
}
$tins['fecfac'] = $fecha;
if($faalbranfp['fectvto'] != ""){
$tins['fecvto'] = $faalbranfp['fectvto'];
}else if($faalbranfp['diasvto'] != ''){
$date = DateTime::createFromFormat('Y-m-d', $fecha);
$tins['fecvto'] = date("Y-m-d", strtotime($date->format('Y-m-d').'+ '.$faalbranfp['diasvto'].' days'));
}else{
return "ERROR, No ha sido posible calcular la fecha de vencimiento de facar.";
}
$tins['codage'] = $facli['codges'];
if($fapag['tipodes'] != '' && $fapag['situdes'] != ''){
$tins['tipo'] = $fapag['tipodes'];
$tins['situ'] = $fapag['situdes'];
}else{
$tins['tipo'] = $fapag['tipo'];
$tins['situ'] = $fapag['situ'];
}
$tins['coddom'] = $faalbranc['coddom']; // VER ESTO
if($faalbranfp['importe'] != "" && $faalbranfp['importe'] > 0){
$tins['impefe'] = $faalbranfp['importe'];
$totalfp -= $faalbranfp['importe'];
}else if($faalbranfp['importe'] != "" && $faalbranfp['importe'] == 0){
$tins['impefe'] = $totalfp;
}else{
return "ERROR, No ha sido posible calcular el importe de facar.";
}
$tins['impefeext'] = 0;
$tins['forpag'] = $fapag['clave_pag'];
$tins['dirgir'] = $faalbranc['dirgir'];
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['codcadena'] = "";
$tins['codmon'] = $faalbranc['codmon'];
$tins['npint'] = "";
$tins['codcadena1'] = "";
$tins['codcadena2'] = "";
$tins['codcadena3'] = "";
$tins['clivar'] = 0;
$tins['bancar'] = 0;
switch ($cont) {
case 1:
if($faalbranfp['fectvto'] != ''){
$fecvto1 = $faalbranfp['fectvto'];
}
$impvto1 = $totalfp;
break;
case 2:
if($faalbranfp['fectvto'] != ''){
$fecvto2 = $faalbranfp['fectvto'];
}
$impvto2 = $totalfp;
break;
case 3:
if($faalbranfp['fectvto'] != ''){
$fecvto3 = $faalbranfp['fectvto'];
}
$impvto3 = $totalfp;
break;
case 4:
if($faalbranfp['fectvto'] != ''){
$fecvto4 = $faalbranfp['fectvto'];
}
$impvto4 = $totalfp;
break;
case 5:
if($faalbranfp['fectvto'] != ''){
$fecvto5 = $faalbranfp['fectvto'];
}
$impvto5 = $totalfp;
break;
case 6:
if($faalbranfp['fectvto'] != ''){
$fecvto6 = $faalbranfp['fectvto'];
}
$impvto6 = $totalfp;
break;
}
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facar");
if (substr($msg,0,2) != "OK") return $msg;
$cont++;
$errfaal = gerdb_fetch ($cursor2, $faalbranfp);
}
}
/*************************************************************
* Campos e insert fadiaven
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
$tins['tipcont'] = $tipcont;
$tins['clave'] = $numfac;
$tins['codcli'] = $facli['codcli'];
$tins['fecfac'] = $fecha;
$tins['impbru'] = $base;
$tins['impdtoes'] = 0;
$tins['imppor'] = $faalbranc['imppor'];
$tins['impdtopp'] = 0;
$tins['impite1'] = $impIva;
$tins['impite2'] = 0;
$tins['impite3'] = 0;
$tins['impite4'] = 0;
$tins['impneto'] = $total;
$tins['antfact'] = 0;
$tins['antsinfact'] = 0;
$tins['tipfac'] = $faalbranc['tipfac'];
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."fadiaven");
if (substr($msg,0,2) != "OK") return $msg;
/*************************************************************
* Campos e insert facabfactu
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
$tins['tipcont'] = $faalbranc['tipcont'];
$tins['numfac'] = $numfac;
$tins['fecimp'] = $fecha;
$tins['codcli'] = $facli['codcli'];
if (isset($faenv['nom']) && !empty($faenv['nom'])){
$tins['nomemvcli'] = $faenv['nom'];
} else {
$tins['nomemvcli'] = $facli['nom'];
}
if (isset($faenv['dom']) && !empty($faenv['dom'])){
$tins['domenvcli'] = $faenv['dom'];
} else {
$tins['domenvcli'] = $facli['dom'];
}
if (isset($faenv['localid']) && !empty($faenv['localid'])){
$tins['locenvcli'] = $faenv['localid'];
} else {
$tins['locenvcli'] = $facli['localid'];
}
if (isset($faenv['localid']) && !empty($faenv['dist'])){
$tins['distenvcli'] = $faenv['dist'];
} else {
$tins['distenvcli'] = $facli['dist'];
}
if (isset($faenv['localid']) && !empty($faenv['prov'])){
$tins['provenvcli'] = $faenv['prov'];
} else {
$tins['provenvcli'] = $facli['prov'];
}
if($codclipag != "" && $codclipag != $facli['codcli']){
/*************************************************************
* Obtiene el cliente pagador
**************************************************************/
$where = " codemp='" . $codemp . "'";
$where .= " and codcli = '" . $codclipag . "'";
$msg = getResultSet(''.$cfg_bdrps.'facli', $where, $faclipag);
if (substr($msg,0,2) != "OK") return $msg;
// EXTRAER CUENTA DE CLIENTE PAGADOR.
$tins['codclipagenvcli'] = $codclipag;
$tins['cif'] = $faclipag['cif'];
$tins['nomemvcli'] = $faclipag['nom'];
$tins['domenvcli'] = $faclipag['dom'];
$tins['locenvcli'] = $faclipag['localid'];
$tins['distenvcli'] = $faclipag['dist'];
$tins['provenvcli'] = $faclipag['prov'];
$tins['razonsocial'] = $faclipag['razon'];
// CHECK DE FORMAS DE PAGO.
if(
((intval($fapag['clave_pag']) >= 111 && intval($fapag['clave_pag']) <= 117)) ||
((intval($fapag['clave_pag']) >= 121 && intval($fapag['clave_pag']) <= 125)) ||
((intval($fapag['clave_pag']) >= 511 && intval($fapag['clave_pag']) <= 513)) ||
((intval($fapag['clave_pag']) >= 520 && intval($fapag['clave_pag']) <= 529))
){
$tins['cuentadom'] = '';
}else{
$efdom = array();
$where = " clidom='" . $codclipag . "' and empdom='" . $codemp . "' and coddomdef='-1'";
$msg = getResultSet(''.$cfg_bdrps.'efdom', $where, $efdom);
if (substr($msg,0,2) != "OK"){
$iban = '';
}else{
// FORMAMOS EL IBAN.
$bandom = $sucdom = $digdom = $ctadom = $iban = $dividendo = $digitoControl = "";
$bandom = str_pad($efdom[bandom], 4, '0', STR_PAD_LEFT);
$sucdom = str_pad($efdom[sucdom], 4, '0', STR_PAD_LEFT);
$digdom = str_pad($efdom[digdom], 2, '0', STR_PAD_LEFT);
$ctadom = str_pad($efdom[ctadom], 10, '0', STR_PAD_LEFT);
$iban = $bandom.$sucdom.$digdom.$ctadom;
$dividendo = $iban."142800";
$digitoControl = 98 - bcmod($dividendo, '97');
if(strlen($digitoControl)==1) $digitoControl = '0'.$digitoControl;
$iban = "ES".$digitoControl.$iban;
}
$tins['cuentadom'] = $iban;
}
}else{
// EXTRAER CUENTA DE CLIENTE.
$tins['codclipagenvcli'] = $facli['codcli'];
$tins['cif'] = $facli['cif'];
$tins['razonsocial'] = $facli['razon'];
// CHECK DE FORMAS DE PAGO.
if(
((intval($fapag['clave_pag']) >= 111 && intval($fapag['clave_pag']) <= 117)) ||
((intval($fapag['clave_pag']) >= 121 && intval($fapag['clave_pag']) <= 125)) ||
((intval($fapag['clave_pag']) >= 511 && intval($fapag['clave_pag']) <= 513)) ||
((intval($fapag['clave_pag']) >= 520 && intval($fapag['clave_pag']) <= 529))
){
$tins['cuentadom'] = '';
}else{
$efdom = array();
$where = " clidom='" . $facli[codcli] . "' and empdom='" . $codemp . "' and coddomdef='-1'";
$msg = getResultSet(''.$cfg_bdrps.'efdom', $where, $efdom);
if (substr($msg,0,2) != "OK"){
$iban = '';
}else{
// FORMAMOS EL IBAN.
$bandom = $sucdom = $digdom = $ctadom = $iban = $dividendo = $digitoControl = "";
$bandom = str_pad($efdom[bandom], 4, '0', STR_PAD_LEFT);
$sucdom = str_pad($efdom[sucdom], 4, '0', STR_PAD_LEFT);
$digdom = str_pad($efdom[digdom], 2, '0', STR_PAD_LEFT);
$ctadom = str_pad($efdom[ctadom], 10, '0', STR_PAD_LEFT);
$iban = $bandom.$sucdom.$digdom.$ctadom;
$dividendo = $iban."142800";
$digitoControl = 98 - bcmod($dividendo, '97');
if(strlen($digitoControl)==1) $digitoControl = '0'.$digitoControl;
$iban = "ES".$digitoControl.$iban;
}
$tins['cuentadom'] = $iban;
}
}
$tins['impbruto'] = $base;
$tins['impdtoped'] = 0;
$tins['impmenosdtoped'] = $base;
$tins['impdtopp'] = 0;
$tins['impmenosdtopp'] = $base;
$tins['baseiva1'] = $base;
$tins['baseiva2'] = 0;
$tins['baseiva3'] = 0;
$tins['baseiva4'] = 0;
$tins['baseiva5'] = 0;
$tins['baseiva6'] = 0;
$tins['impiva1'] = $impIva;
$tins['impiva3'] = 0;
$tins['impiva4'] = 0;
$tins['impiva5'] = 0;
$tins['impiva6'] = 0;
if($faalbranc['tipfac'] <= 100){
$tins['poriva1'] = $paramiva['porc'];
}else{
$tins['poriva1'] = 0;
}
$tins['poriva2'] = 0;
$tins['poriva3'] = 0;
$tins['poriva4'] = 0;
$tins['poriva5'] = 0;
$tins['poriva6'] = 0;
$tins['totiva'] = $impIva;
$tins['totrecargo'] = 0;
$tins['totivarecargo'] = $impIva;
$tins['portes'] = $faalbranc['imppor'];
$tins['impmasportes'] = $base;
$tins['totneto'] = $total;
$tins['fecvto1'] = $fecvto1;
$tins['fecvto2'] = $fecvto2;
$tins['fecvto3'] = $fecvto3;
$tins['fecvto4'] = $fecvto4;
$tins['fecvto5'] = $fecvto5;
$tins['fecvto6'] = $fecvto6;
$tins['impvto1'] = $impvto1;
$tins['impvto2'] = $impvto2;
$tins['impvto3'] = $impvto3;
$tins['impvto4'] = $impvto4;
$tins['impvto5'] = $impvto5;
$tins['impvto6'] = $impvto6;
$tins['bandom'] = 0;
$tins['sucdom'] = 0;
$tins['codmon'] = 1;
$tins['decimales'] = 2;
$tins['simbolomon'] = "";
$tins['cammon'] = $comon['cammon'];
$tins['tipmon'] = $comon['tipmon'];
$tins['basedto'] = $base;
$tins['codigoidioma'] = 1;
$tins['nombrebanco'] = "";
$tins['nombresuc'] = "";
$tins['localidsuc'] = "";
$tins['provinsuc'] = "";
$tins['paissuc'] = 0;
$tins['digitodom'] = "";
$tins['nombrefpago'] = $nombrefpago;
$tins['pordtoped'] = 0;
$tins['pordtopp'] = 0;
$tins['porrecfin'] = 0;
$tins['texto'] = "";
$tins['envio'] = "";
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['anticipofacturado'] = 0;
$tins['anticiposinfacturar'] = 0;
$tins['totalanticipo'] = 0;
$tins['totpuntoverde'] = 0;
$tins['dtocli2'] = 0;
$tins['dtocli3'] = 0;
$tins['impdtoped2'] = 0;
$tins['impdtoped3'] = 0;
$tins['tipfac'] = $faalbranc['tipfac'];
$tins['forpag'] = $fapag['clave_pag'];
$tins['clivar'] = 0;
$tins['abaseiva1'] = 0;
$tins['abaseiva2'] = 0;
$tins['abaseiva3'] = 0;
$tins['abaseiva4'] = 0;
$tins['abaseiva5'] = 0;
$tins['abaseiva6'] = 0;
$tins['abaseiva7'] = 0;
$tins['abaseiva8'] = 0;
$tins['abaseiva9'] = 0;
$tins['abaseiva10'] = 0;
$tins['abaseiva11'] = 0;
$tins['abaseiva12'] = 0;
$tins['aimpiva1'] = 0;
$tins['aimpiva2'] = 0;
$tins['aimpiva3'] = 0;
$tins['aimpiva4'] = 0;
$tins['aimpiva5'] = 0;
$tins['aimpiva6'] = 0;
$tins['aimpiva7'] = 0;
$tins['aimpiva8'] = 0;
$tins['aimpiva9'] = 0;
$tins['aimpiva10'] = 0;
$tins['aimpiva11'] = 0;
$tins['aimpiva12'] = 0;
$tins['aporiva1'] = 0;
$tins['aporiva2'] = 0;
$tins['aporiva3'] = 0;
$tins['aporiva4'] = 0;
$tins['aporiva5'] = 0;
$tins['aporiva6'] = 0;
$tins['aporiva7'] = 0;
$tins['aporiva8'] = 0;
$tins['aporiva9'] = 0;
$tins['aporiva10'] = 0;
$tins['aporiva11'] = 0;
$tins['aporiva12'] = 0;
$tins['dtoabono'] = 0;
$tins['direct'] = cdt($faalbranc['direct']);
$tins['conumserfac'] = $faalbranc['conumserfac'];
$tins['ticketsn'] = 'N';
$tins['contadosn'] = 'N';
$tins['contabilizadosn'] = 'N';
$tins['porretencion'] = 0;
$tins['impretencion'] = 0;
$tins['coddev'] = 0;
$tins['doctlr'] = cdt($ha_sareclam['notasfactura']);
//flogPedAlbFac(print_r($tins,true));
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facabfactu");
if (substr($msg,0,2) != "OK") return $msg;
//flogPedAlbFac(print_r($cuentas_gccoapu, true));
$portes = 0;
$esRappel = false;
/*************************************************************
* Comprueba si el albaran ya esta facturado
***************************************************************/
//$facturaAlbaran=array();
//$where = "canfac = canalb and numalb='".$numalb."' and codemp='".$codemp."' and tipcont=".$tipcont."";
//getResultSet(''.$cfg_bdrps.'faalbranc', $where, $facturaAlbaran);
//if (isset($facturaAlbaran) and !empty($facturaAlbaran)) {
//Mostrar_Errores("ERROR: el albaran (" . $numalb . ") ya esta contabilizado");
//}
/*************************************************************
* Consulta las lineas de albaran y por cada linea crea una de factura
***************************************************************/
$faalbran=array();
$buffer = "select * from ".$cfg_bdrps."faalbran (nolock) where codemp='".$codemp."' and numalb='".$numalb."' and tipcont='" . $tipcont . "'";
$conn -> ger_exec ($cursor2, $buffer);
$rc = gerdb_fetch ($cursor2, $faalbran);
if($io_test>=2) echo "rc($rc), buffer($buffer)
\n";
if($rc!="" || empty($faalbran)) {
return "ERROR: No se ha podido acceder a las lineas del albaran";
}
// Preparamos campos para las comisiones.
$impcom = $impbru = array();
for($x=0;$x<6;$x++){
$impcom[$x] = 0;
$impbru[$x] = 0;
}
// Extraemos todos los articulos.
while ($rc == "" ) {
if ($codemp =='003' || $codemp == '016' || $codemp == '018')
$impalb += $faalbran['impalb'];
else
$impalb += $faalbran['impalb'] + $faalbran['impportes'];
/*************************************************************
* Consulta los datos de la cabecera del pedido
***************************************************************/
$fapedc = array();
$buffer = "select * from ".$cfg_bdrps."fapedc (nolock) where codemp='".$codemp."'";
$buffer .= " and tipcont='".$tipcont."' and numped='".$faalbran['numped']."'";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor1, $buffer);
$rc = gerdb_fetch ($cursor1, $fapedc);
if($io_test>=2) echo "rc($rc), buffer($buffer)
\n";
if($rc!="" || empty($fapedc)) {
return "ERROR: No se ha podido acceder a la cabecera del pedido";
}
// comprueba que tipo de facturacion sea 0
// if ($fapedc['tipfac'] <> 0) {
// return "ERROR: El tipo de facturacion debe ser 0 en el pedido " . $fapedc['numped'] . " para poder contabilizar";
// }
/*************************************************************
* Consulta los datos del pedido asociado a la linea
***************************************************************/
$fapedl = array();
$buffer = "select * from ".$cfg_bdrps."fapedl (nolock) where codemp='".$codemp."' and numped='".$faalbran['numped']."' and numlin='".$faalbran['numlin']."'";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor1, $buffer);
$rc = gerdb_fetch ($cursor1, $fapedl);
if($io_test>=2) echo "rc($rc), buffer($buffer)
\n";
if($rc!="" || empty($fapedl)) {
return "ERROR: No se ha podido acceder a las lineas del pedido";
}
/*************************************************************
* Consulta los datos del articulo asociado a la linea
***************************************************************/
if($fapedl[codart] != ''){
$alart = array();
$buffer = "select * from ".$cfg_bdrps."alart (nolock) where codart='".$fapedl['codart']."' and codemp='".$codemp."'";
flogPedAlbFac($buffer);
$conn -> ger_exec ($cursor1, $buffer);
$rc = gerdb_fetch ($cursor1, $alart);
if($io_test>=2) echo "rc($rc), buffer($buffer)
\n";
if($rc!="" || empty($alart)) {
return "ERROR: No se ha encontrado el articulo(".$fapedl['codart'].") del pedido (".$faalbran['numped'].")";
}
$tipart = $alart['tipart'];
}
// COMPROBAMOS SI EL ARTICULO ES FACTURABLE.
//if(($tipart == "1" || $tipart == "8") && ($codemp == '001' || $codemp == '005' || $codemp == '015' || $codemp == '019')){
if($codemp == '001' || $codemp == '005' || $codemp == '015' || $codemp == '019'){
/*************************************************************
* Consulta el número de dapartamento
**************************************************************/
if($fapedl['implin'] > 0){
$faanadep = array();
$where = "(codemp = '".$codemp."') AND (numped='".$faalbran['numped']."') AND (numlin='".$faalbran['numlin']."')";
$msg = getResultSet(''.$cfg_bdrps.'faanadep', $where, $faanadep);
if (substr($msg,0,2) != "OK") return $msg;
/**************************************************************
* Campos e insert faest
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
$tins['tipcont'] = $faalbranc['tipcont'];
$tins['codcli'] = $facli['codcli'];
$tins['codart'] = $fapedl['codart'];
$tins['zon'] = "";
$tins['age'] = intval($faalbranc['codage']);
$tins['fecha'] = $fecha;
$tins['uni'] = intval($fapedl['canped']);
$tins['imv'] = cnu($faalbran['impalb']); // importe gcfacl
$tins['imc'] = $alart['pmedpon']; // PRECIO MEDIO pemedpon * unidades
$tins['imt'] = cnu($faalbran['precio'] * $faalbran['envact']); // precio sin descuento * unidades
$tins['forpag'] = $fapag['clave_pag'];
$tins['codmon'] = 1;
$tins['codpai'] = 1;
$tins['tipfac'] = intval($faalbranc['tipfac']);
$tins['ime'] = 0;
$tins['numfac'] = $numfac;
$tins['numalm'] = $fapedl['numalm'];
$tins['datvar1'] = '';
$tins['datvar2'] = '';
$tins['datvar3'] = '';
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['codcadena'] = 0;
$tins['famart'] = $alart['famart'];
$tins['subfamart'] = '0';
$tins['codlin'] = '0';
$tins['codest'] = '0';
$tins['codsec'] = '';
$tins['canal'] = '0';
$tins['linea'] = intval($fapedl['linea']);
$tins['kit'] = "";
$tins['tipoalb'] = substr($faalbranc['tipalb'],-1);
$tins['codinc'] = $faalbranc['codinc'];
$tins['codnattr'] = $faalbranc['codnattr'];
$tins['prom'] = "";
$tins['npint'] = "0";
$tins['age2'] = intval($faalbranc['codage2']);
$tins['age3'] = intval($faalbranc['codage3']);
$tins['age4'] = intval($faalbranc['codage4']);
$tins['age5'] = intval($faalbranc['codage5']);
$tins['age6'] = intval($faalbranc['codage6']);
$tins['codcadena1'] = "";
$tins['codcadena2'] = "";
$tins['codcadena3'] = "";
$tins['umh'] = intval($fapedl['canped']);
$tins['numcontrato'] = 0;
$tins['rappel'] = $fapedl['rappel'];
$tins['codsub'] ="";
$tins['dtocli'] = 0;
$tins['dtocli2'] = 0;
$tins['dtocli3'] = 0;
$tins['dtopag'] = 0;
$tins['preuni'] = cnu($faalbran['precio']); // PRECIO UNITARIO SIN DESCUENTO
$tins['dto1'] = cnu($faalbran['dto1']);
$tins['dto2'] = 0;
$tins['dto3'] = 0;
$tins['dto4'] = 0;
$tins['dto5'] = 0;
$tins['casca2'] = $fapedl['casca2'];
$tins['casca3'] = $fapedl['casca3'];
$tins['casca4'] = $fapedl['casca4'];
$tins['casca5'] = $fapedl['casca5'];
$tins['impdes'] = intval($fapedl['impdes']);
$tins['medidas'] = 0;
$tins['ndto'] = intval($fapedl['ndto']);
$tins['recfin'] = intval($faalbranc['recfin']);
$tins['imvcomp'] = 0;
$tins['codunicant'] = 'UNI';
$tins['factcant'] = intval($fapedl['factcant']);
$tins['factpre'] = intval($fapedl['factpre']);
$tins['numalb'] = $numalb;
$tins['numped'] = $fapedl['numped'];
$tins['serie'] = $fapedl['seriel'];
$tins['ubicacion'] = $fapedl['ubicac'];
$tins['cantdobuni'] = intval($faalbran['cantdobuni']);
$tins['preunidobuni'] = 0;
$tins['imccomp'] = 0;
$tins['linkit'] = intval($fapedl['linkit']);
$tins['linprom'] = intval($fapedl['linprom']);
$tins['codproyecto'] = 0;
$tins['numcaja'] = 0;
$tins['imvneto'] = 0;
$tins['impbruto'] = cnu($faalbran['precio'] * $faalbran['canalb']); // precio sin descuento * unidades
$tins['impdtolindoc'] = cnu(($faalbran['precio'] * $faalbran['canalb']) * ($faalbran['dto1'] / 100)); //descuento del importe total
$tins['impdtolinnodoc'] = 0;
$tins['impneto'] = cnu($faalbran['impalb']); // IMPORTE GCFACL
$tins['impnetoreal']= cnu($faalbran['impalb']); // PRECIO REAL CON DESCUENTO
$tins['impdtocli'] = 0;
$tins['impdtopp'] = 0;
$tins['masaneta'] = 0;
$tins['unidsuplementarias'] = 0;
$tins['codmodtr'] = $faalbranc['codpuerto'];
$tins['codpuerto'] = 0;
$tins['codregestadistico'] = intval($faalbranc['codregestadistico']);
$tins['valorestadistico'] = intval($faalbran['impalb']);
$tins['codpaienvio'] = 1;
//flogPedAlbFac(print_r($tins,true));
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."faest");
if (substr($msg,0,2) != "OK") return $msg;
}
/*************************************************************
* Campos e insert falinfactu
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
$tins['tipcont'] = $fapedl['tipcont'];
$tins['numfac'] = $numfac;
$tins['numalb'] = $numalb;
$tins['numped'] = $fapedl['numped'];
$tins['numlin'] = $fapedl['numlin'];
$tins['fecalb'] = $faalbran['fecha'];
$tins['numalm'] = $faalbran['numalm'];
$tins['codart'] = $fapedl['codart'];
$tins['canenv'] = $fapedl['canped'];
$tins['preuni'] = $fapedl['preuni'];
$tins['tipiva'] = 1;
if($faalbranc['tipfac'] <= 100){
$tins['poriva'] = $paramiva['porc'];
}else{
$tins['poriva'] = 0;
}
$tins['impbru'] = $fapedl['implin'];
$tins['impnet'] = $fapedl['implin'];
$tins['impcomis'] = $fapedl['tcomlin'];
$tins['impdto'] = 0;
$tins['impdto2'] = 0;
$tins['impdto3'] = 0;
$tins['impdto4'] = 0;
$tins['impdto5'] = 0;
$tins['pordto'] = $fapedl['ndto'];
$tins['pordto2'] = $fapedl['dto2'];
$tins['pordto3'] = $fapedl['dto3'];
$tins['pordto4'] = $fapedl['dto4'];
$tins['pordto5'] = $fapedl['dto5'];
$tins['basedto'] = 0;
$tins['descriart'] = $fapedl['descr'];
$tins['largo'] = $faalbran['largo'];
$tins['ancho'] = $faalbran['ancho'];
$tins['grosor'] = $faalbran['grosor'];
$tins['coment'] = "";
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['descidio'] = "";
$tins['impcomis2'] = $fapedl['tcomlin2'];
$tins['impcomis3'] = $fapedl['tcomlin3'];
$tins['impcomis4'] = $fapedl['tcomlin4'];
$tins['impcomis5'] = $fapedl['tcomlin5'];
$tins['impcomis6'] = $fapedl['tcomlin6'];
$tins['norden'] = $faalbran['norden'];
$tins['genkit'] = $fapedl['genkit'];
$tins['linkit'] = $fapedl['linkit'];
$tins['genprom'] = $fapedl['genprom'];
$tins['linprom'] = $fapedl['linprom'];
$tins['imppuntoverde'] = 0;
$tins['impdes'] = $fapedl['impdes'];
$tins['ndto'] = $fapedl['ndto'];
$tins['serie'] = $fapedl['seriel'];
$tins['ubicacion'] = $faalbran['ubicacion'];
$tins['codunic'] = $fapedl['umcv'];
$tins['codunip'] = $fapedl['umpv'];
$tins['cantdobuni'] = $fapedl['cantdobuni'];
$tins['abrevpre'] = "UNI";
$tins['masaneta'] = $faalbran['masaneta'];
$tins['unidsuplementarias'] = 0;
$portes += $faalbran['impportes'];
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."falinfactu");
if (substr($msg,0,2) != "OK") return $msg;
$nordenID = str_pad(substr($norden, 8, 7) + 1, 7, 0, STR_PAD_LEFT);
$norden = date('Ymd') . $nordenID;
//actualiza campos de las lineas de pedido
$buffer = "update ".$cfg_bdrps."fapedl set canfac = canped where codemp = '" . $codemp . "' and numped = '".$faalbran['numped']."' and tipcont='" . $tins['tipcont'] . "'";
$conn->ger_exec ($cursor1, $buffer);
if($io_test>=2) echo "gerrc($gerrc), buffer($buffer)
\n";
if($gerrc!="") { return "Error. gerrc(" . $gerrc . "), buffer(" . $buffer . ")
\n"; }
//añade los totales de las cuentas
if (!empty($cuentas_gccoapu[$facli['cuenta']]['total'])) {
$cuentas_gccoapu[$param13['ctaven']]['total'] += $faalbran['impalb'];
}
else if ($faalbran['impalb'] <> 0) {
$cuentas_gccoapu[$param13['ctaven']]['total'] = $faalbran['impalb'];
}
if($fapedl['implin'] > 0){
//añade los diferentes apartamentos con los importes correspondientes
if (!empty($cuentas_gccoapu[$facli['cuenta']]['departamentos'][$faanadep['cod']])) {
$cuentas_gccoapu[$param13['ctaven']]['departamentos'][$faanadep['cod']] += $faalbran['impalb'];
}
else if ($faalbran['impalb'] <> 0) {
$cuentas_gccoapu[$param13['ctaven']]['departamentos'][$faanadep['cod']] = $faalbran['impalb'];
}
}
// Calculo comisiones.
for($i=0;$i<6;$i++){
$comision = '0';
if($i==0){
$comision = intval($fapedl['tccomlin']);
}else{
$idcom = "tccomlin".($i+1);
$comision = intval($fapedl[$idcom]);
}
if ($comision > 0) {
$impbru[$i] += $faalbran['impalb'];
$impcom[$i] += round($faalbran['impalb'] * ($comision/100),2);
}
}
}
$rc = gerdb_fetch ($cursor2, $faalbran);
}
// INSERT COMISIONES POR AGENTE.
for($i=0;$i<6;$i++){
$agente = '0';
if($i==0){
$agente = $faalbranc['codage'];
}else{
$id = "codage".($i+1);
$agente = $faalbranc[$id];
}
$agente = strval($agente);
// TIENE QUE TENER UN AGENTE ASIGNADO.
if($agente != '0' && $agente != ''){
// COMPROBAMOS SI EL AGENTE ESTA EN FAAGE.
$faage = array();
$where = "codemp = '".$codemp."' AND clave='".$agente."'";
$msg = getResultSet(''.$cfg_bdrps.'faage', $where, $faage);
if (substr($msg,0,2) == "OK") {
/**************************************************************
* Campos e insert farep
***************************************************************/
$tins = array();
$tins['codemp'] = $codemp;
$tins['tipcont'] = $faalbranc['tipcont'];
$tins['Age'] = intval($agente);
$tins['Fac'] = $numfac;
$tins['Cli'] = $facli['codcli'];
$tins['Fec'] = $fecha;
//$tins['Impbru'] = null;
//$tins['Comporc'] = null;
//$tins['Impcom'] = null;
$tins['liq'] = "P";
$tins['totfac'] = $total;
//$tins['margenb'] = null;
$tins['impcob'] = 0;
$tins['simpcobliq'] = 0;
$tins['simpliq'] = 0;
$tins['retenida'] = "N";
$tins['impliq'] = 0;
$tins['imppdteliq'] = 0;
$tins['spenimpag'] = 0;
$tins['simpagliq'] = 0;
$tins['observa'] = '';
$tins['actage'] = 'S';
//$tins['ncom'] = null;
//$tins['objetivo'] = null;
//flogPedAlbFac(print_r($tins,true));
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."farep");
if (substr($msg,0,2) != "OK") return $msg;
/**************************************************************
* Campos e insert farepalb
***************************************************************/
$tins = array();
$tins['codemp'] = $codemp;
$tins['age'] = intval($agente);
$tins['fac'] = $numfac;
$tins['comporc'] = 0;
$tins['impcom'] = $impcom[$i];
$tins['margenb'] = 0;
$tins['ncom'] = ($i+1);
$tins['tipcont'] = $faalbranc['tipcont'];
$tins['numalb'] = $numalb;
$tins['impbru'] = $impbru[$i];
//$tins['objetivo'] = null;
//flogPedAlbFac(print_r($tins,true));
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."farepalb");
if (substr($msg,0,2) != "OK") return $msg;
}
}
}
//se bloquea el albaran y actualiza campos para no volver a generar la factura
$buffer = "update ".$cfg_bdrps."faalbran set factsn = 'S', canfac = envact, fecfac = '" . $fecha . "', numfac='".$numfac."' where codemp = '" . $codemp . "' and tipcont='".$tipcont."' and numalb = '".$numalb."' and serie = '' and ubicacion = ''";
$conn->ger_exec ($cursor1, $buffer);
if($io_test>=2) echo "gerrc($gerrc), buffer($buffer)
\n";
if($gerrc!="") { return "Error. gerrc(" . $gerrc . "), buffer(" . $buffer . ")
\n"; }
// $min=($totbases+0)-0.1; $max=($totbases+0)+0.1;
// if ((($impalb+0) < ($min+0)) || (($impalb+0) > ($max+0))) {
// return "ERROR: Hay un descuadre de precios entre la factura y el albaran (" . $numfac . ")";
// }
//if($faalbranc['tipfac'] <= 100){
$totalAbono = 0;
//flogPedAlbFac(print_r($cuentas_gccoapu, true));
/*************************************************************
* Por cada departamento prapara campos e insert facoapudep
***************************************************************/
foreach($cuentas_gccoapu as $key_cuenta => $cuenta) {
foreach($cuenta['departamentos'] as $key_departamento => $departamento) {
//Campos facoapudep
$tins=array();
$tins['codemp'] = $codemp;
if($faalbranc['tipfac'] > 100){
$tins['tip'] = 1;
}else{
$tins['tip'] = 0;
}
$tins['coddep'] = $key_departamento;
$tins['cta'] = $param13['ctaven'];
$tins['numor'] = (intval($departamento) >= 0) ? 14 : 13;
$tins['tias'] = (intval($departamento) >= 0) ? 'H' : 'D' ;
$tins['numfac'] = $numfac_15;
$tins['fecfac'] = $fecha;
$tins['fecapu'] = $fecha;
$tins['ncon'] = 5;
$tins['ampcon'] = $numfac;
$tins['impor'] = abs($departamento);
$tins['tipas'] = (intval($faalbranc['tipas']) == 11) ? 11 : 10;
$tins['bimpon'] = 0;
$tins['tiva'] = 0;
$tins['poriva'] = 0;
$tins['impext'] = 0;
$tins['codmon'] = 1;
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['npint'] = '';
$tins['clivar'] = 0;
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facoapudep");
if (substr($msg,0,2) != "OK") return $msg;
}
$tins=array();
$tins['codemp'] = $codemp;
if($faalbranc['tipfac'] > 100){
$tins['tip'] = 1;
}else{
$tins['tip'] = 0;
}
$tins['cta'] = $param13['ctaven'];
$tins['numor'] = (intval($cuenta['total']) >= 0) ? 14 : 13;
$tins['tias'] = (intval($cuenta['total']) >= 0) ? 'H' : 'D' ;
$tins['numfac'] = $numfac_15;
$tins['fecfac'] = $fecha;
$tins['fecapu'] = $fecha;
$tins['ncon'] = 5;
$tins['ampcon'] = $numfac;
$tins['impor'] = abs($cuenta['total']);
$tins['tipas'] = (intval($faalbranc['tipas']) == 11) ? 11 : 10;
$tins['bimpon'] = 0;
$tins['tiva'] = 0;
$tins['poriva'] = 0;
$tins['impext'] = 0;
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['codmon'] = 1;
$tins['npint'] = '';
$tins['nfacabono'] = '';
$tins['clivar'] = 0;
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facoapu");
if (substr($msg,0,2) != "OK") return $msg;
}
/*************************************************************
* campos e insert coapu 4000
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
if($faalbranc['tipfac'] > 100){
$tins['tip'] = 1;
}else{
$tins['tip'] = 0;
}
$tins['cta'] = $facli['cuenta'];
$tins['numor'] = 1;
$tins['tias'] = (intval($base) > 0) ? 'D' : 'H' ;
$tins['numfac'] = $numfac_15;
$tins['fecfac'] = $fecha;
$tins['fecapu'] = $fecha;
$tins['ncon'] = 5;
$tins['ampcon'] = $numfac;
$tins['impor'] = $total;
$tins['tipas'] = (intval($faalbranc['tipas']) == 11) ? 11 : 10;
$tins['bimpon'] = 0;
$tins['tiva'] = 0;
$tins['poriva'] = 0;
$tins['impext'] = 0;
$tins['codmon'] = 1;
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['npint'] = 0;
$tins['nfacabono'] = '';
$tins['clivar'] = 0;
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facoapu");
if (substr($msg,0,2) != "OK") return $msg;
/*************************************************************
* campos e insert coapu 4720
***************************************************************/
$tins=array();
$tins['codemp'] = $codemp;
if($faalbranc['tipfac'] > 100){
$tins['tip'] = 1;
}else{
$tins['tip'] = 0;
}
if(cnu($paramiva['ctavtas'])!=0){
$tins['cta'] = cnu($paramiva['ctavtas']);
}else{
if($codemp == '001'){
$tins['cta'] = '477000000';
}else{
$tins['cta'] = '47700000';
}
}
$tins['numor'] = 2;
$tins['tias'] = (intval($base) > 0) ? 'H' : 'D' ;
$tins['numfac'] = $numfac_15;
$tins['fecfac'] = $fecha;
$tins['fecapu'] = $fecha;
$tins['ncon'] = 5;
$tins['ampcon'] = $numfac;
$tins['impor'] = abs($impIva);
$tins['tipas'] = (intval($faalbranc['tipas']) == 11) ? 11 : 10;
$tins['bimpon'] = $total-abs($impIva);
if($faalbranc['tipfac'] > 100){
$tins['tiva'] = 6;
}else{
$tins['tiva'] = 1;
}
$tins['poriva'] = cnu($paramiva['porc']);
$tins['impext'] = 0;
$tins['codmon'] = 1;
$tins['datvar1'] = "";
$tins['datvar2'] = "";
$tins['datvar3'] = "";
$tins['datvar4'] = 0;
$tins['datvar5'] = 0;
$tins['datvar6'] = 0;
$tins['npint'] = 0;
$tins['nfacabono'] = '';
$tins['clivar'] = 0;
//lanza la consulta y obtiene el mensaje para tratarlo
$msg = runQuery($tins, "".$cfg_bdrps."facoapu");
if (substr($msg,0,2) != "OK") return $msg;
//}
// se bloquea el pedido y actualiza campos para no volver a generar la factura
$buffer = "update ".$cfg_bdrps."fapedc set bloqueado = 'N' where codemp='" . $codemp . "' and tipcont='".$tipcont."' and numped='".$numped."'";
$conn->ger_exec($cursor1, $buffer);
if($gerrc!=""){return "ERROR AL BLOQUEAR EL PEDIDO";}
// ACTUALZAMOS CAMPOS DE LA ASISTENCIA CON LA FACTURA Y EL ALBARAN,.
$buffer = "update " . $cfg_bdrps . "saasiste";
$buffer .= " SET numalb='".$numalb."',";
$buffer .= " numped='".$numped."',";
$buffer .= " facturada='S'";
$buffer .= " WHERE numreq='".$numreq."'";
$buffer .= " AND codemp='".$codemp."'";
$conn->ger_exec($cursor1, $buffer);
flogPedAlbFac($buffer);
if($io_test>=2) echo "gerrc($gerrc), buffer($buffer)
\n";
if($gerrc!=""){
return "ERROR, no se pudo actualizar saasiste";
}
// ACTUALZAMOS LOS CAMPOS SARECLAN.
$buffer = "update GERAPLI.dbo.HA_SARECLAM";
$buffer .= " SET numped='".$numped."',";
$buffer .= " numalb='".$numalb."',";
$buffer .= " numfac='".$numfac."'";
$buffer .= " WHERE numreq='".$numreq."'";
$buffer .= " AND codemp='".$codemp."'";
$conn->ger_exec($cursor1, $buffer);
flogPedAlbFac($buffer);
if($io_test>=2) echo "gerrc($gerrc), buffer($buffer)
\n";
if($gerrc!=""){
return "ERROR, no se pudo actualizar HA_SARECLAM";
}
// commit
$buffer = "commit transaction";
flogPedAlbFac("BUFFER: ".$buffer."");
$conn->ger_exec($cursor1, $buffer);
if ($gerrc != ""){
return "ERROR : No se ha podido comfirmar la transacción";
}
//else { Mostrar_Errores("OK"); }
}
// COMPROBAR FACTURACION.
function checkFacturacion($codemp, $numalb, $tipcont){
global $conn, $gerrc, $gertxt, $cursor1, $cursor2, $cursor3, $cursor4, $cfg_bdrps;
$faalbranc = $faparalb = array();
$tipalb = "";
/*************************************************************
* Obtiene los datos del albaran en RPS
**************************************************************/
$where = "codemp='".$codemp."' and numalb='".$numalb."' and tipcont='".$tipcont."'";
$msg = getResultSet(''.$cfg_bdrps.'faalbranc', $where, $faalbranc);
if (substr($msg,0,2) != "OK") return $msg;
$tipalb = substr($faalbranc['tipalb'], -1);
/*************************************************************
* Obtiene los datos faparalb
**************************************************************/
if($tipalb != "0"){
if($tipalb != ""){
$where = "codemp='".$codemp."' and tipmov='".$tipalb."'";
$msg = getResultSet(''.$cfg_bdrps.'faparalb', $where, $faparalb);
if (substr($msg,0,2) != "OK") return $msg;
}else{
return "ERROR: No se pudo obtener datos de faparalb.";
}
/*************************************************************
* Comprobamos si el albaran es facturable.
**************************************************************/
if($faparalb['facturar'] == 'N'){
return "ERROR: El tipo de albaran ".$tipalb." no es facturable.";
}
}
}
// COMPROBAR MOVIMIENTOS.
function checkMovimientos($codemp, $codart){
global $conn, $gerrc, $gertxt, $cursor1, $cursor2, $cursor3, $cursor4, $cfg_bdrps;
$tart = $faparalb = array();
$tipart = $tipalb = "";
$movimientos = false;
// COMPROBAMOS QUE NO SEA UN ARTICULO VACIO.
if($codart != ''){
// --------------------------------
// RPS.dbo.alart : tipart
// --------------------------------
$tart = array();
$where = "codemp='".$codemp."' and codart='".$codart."'";
$msg = getResultSet(''.$cfg_bdrps.'alart', $where, $tart);
if (substr($msg,0,2) != "OK") return $msg;
$tipart = $tart['tipart'];
/*************************************************************
* Obtiene los datos faparalb
**************************************************************/
$tipalb = $tl['tipalb'];
if($tipart != "8"){
if($tipalb != "0"){
if($tipalb != ""){
$where = "codemp='".$codemp."' and tipmov='".substr($tipalb, -1)."'";
$msg = getResultSet(''.$cfg_bdrps.'faparalb', $where, $faparalb);
if (substr($msg,0,2) != "OK") return $msg;
}else{
return "ERROR: No se pudo obtener datos de faparalb.";
}
/*************************************************************
* Comprobamos si el articulo genera movimientos
**************************************************************/
if($faparalb['movimientos'] == 'S'){
$movimientos = true;
}
}
}
}
return $movimientos;
}
// METODO flogPedAlbFac.
function flogPedAlbFac($str){
global $numreq;
return;
$fp_log = fopen("C:\\web_publica\\tmp\\00308\\ha_pedalbfac_".$numreq.".log", "a");
if ($fp_log != '') {
$snow = date("Y-m-d") . "" . date("H-i-s") . "" . substr((string)microtime() , 2, 5);
fputs($fp_log, $_SERVER['REMOTE_ADDR'] . "|" . $snow . "|" . $gerope . "|" . $str . "\n");
fclose($fp_log);
}
}
// METODO flogPedAlbFac.
function flogPedAlbFaclistado($str){
//return;
$fp_log = fopen("C:\\LogsFacturas\\".date("Y-m-d")."_ha_pedalbfac.log", "a");
if ($fp_log != '') {
$snow = date("Y-m-d") . "" . date("H-i-s") . "" . substr((string)microtime() , 2, 5);
fputs($fp_log, $_SERVER['REMOTE_ADDR'] . "|" . $snow . "|" . $gerope . "|" . $str . "\n");
fclose($fp_log);
}
}
// MOSTRAR ERRORES.
function Mostrar_Errores($errores){
global $prog;
echo "\n";
echo "