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 " \n"; echo " \n"; echo " \n"; echo "
\n"; Poner_hidden_comunes(); echo "
\n"; echo " \n"; echo " \n"; echo "\n"; exit; } // LANZA UNA CONSULTA DE INSERCION. function runQuery($tins, $table){ global $conn, $cursor1, $cursor2, $cursor3, $cursor4, $gerrc, $gertxt, $io_test; // Preparar nombres de variables y valores $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 . "'"; $sval .= (gettype($tins[$k]) == 'string') ? "'" . $v . "'" : $v; } // preparar el insert en la tabla correspondiente $buffer = "insert into ".$table." (" . $svar . ") values (" . $sval . ");"; flogPedAlbFac($buffer); //echo $buffer."
"; $conn->ger_exec ($cursor1, $buffer); if($io_test>=2) echo "gerrc(" . $gerrc . "), buffer(" . $buffer . ")
\n"; if($gerrc!="") { return "ERROR: No se han podido insertar el registro en la tabla " . $table . ""; } else { return "OK"; } } // ASIGNA RESULTSET A UNA VARIABLE. function getResultSet($table, $where, &$resultset, $top="", $field="", $orderby="") { global $conn, $cursor1, $cursor2, $cursor3, $cursor4, $gerrc, $gertxt, $io_test; $rc = ""; $registro = array(); //preparar consulta $buffer = "select ".$top." * from ".$table." (nolock) where ".$where.""; if ($orderby != "") $buffer .= " order by ".$orderby.""; flogPedAlbFac($buffer); //file_put_contents('./log/log_'.date("j.n.Y").'-compras.log', $buffer."\n\r";, FILE_APPEND); $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 " . $table . ""; } else if ($rc == "" && $field == "") { $resultset = $registro; return "OK"; } if ($rc == "" && $field != "") { $resultset = $registro[$field]; return "OK"; } } // CDT. function cdt($f) { if(strlen($f)==0) $f=""; else $f= trim(substr($f, 0, 10)); return $f; } // CNU. function cnu($n) { if(strlen($n)==0) $n=0; else $n=$n+0; return $n; } ?>