Aumentata velocità scrittura ordini mrp e risolti problemi di uso concorsuale da parte di più utenti
git-svn-id: svn://10.65.10.50/branches/R_10_00@22864 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									f5f80e6152
								
							
						
					
					
						commit
						8cac0d0ab6
					
				@ -1755,15 +1755,19 @@ TRisalita_mask::TRisalita_mask(TMRP_line* line, const TDate& fromdate, const TDa
 | 
			
		||||
            ir ++;
 | 
			
		||||
          }
 | 
			
		||||
          has_internal_refs = TRUE;
 | 
			
		||||
        } else {
 | 
			
		||||
        } 
 | 
			
		||||
        else 
 | 
			
		||||
        {
 | 
			
		||||
          add_gross_ref(*line,b);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (!has_internal_refs)
 | 
			
		||||
  {
 | 
			
		||||
    for (int c = F_ARTICOLO; c < F_DOCANNODOC; c++)
 | 
			
		||||
      sf.delete_column(c);
 | 
			
		||||
  }
 | 
			
		||||
  add_total_rows();
 | 
			
		||||
 | 
			
		||||
  set(F_FABB_LORDO,lordo.string());
 | 
			
		||||
@ -3199,12 +3203,14 @@ int TMatResPlanning::print_gross_ref(const TMRP_line& line, int bucket)
 | 
			
		||||
 | 
			
		||||
void TMatResPlanning::save_orders(TAssoc_array& docs)
 | 
			
		||||
{
 | 
			
		||||
  TLocalisamfile docfile(LF_DOC);
 | 
			
		||||
 | 
			
		||||
  TMatResMask& m = *_mask;
 | 
			
		||||
 | 
			
		||||
  FOR_EACH_ASSOC_OBJECT(docs, hash, str, obj)
 | 
			
		||||
  {
 | 
			
		||||
    TDocumento& doc = (TDocumento&)*obj;
 | 
			
		||||
    int err;
 | 
			
		||||
    int err = NOERR;
 | 
			
		||||
    if (doc.get_long(DOC_NDOC))
 | 
			
		||||
    {
 | 
			
		||||
      // riscrittura; elimina righe con qta zero
 | 
			
		||||
@ -3220,42 +3226,41 @@ void TMatResPlanning::save_orders(TAssoc_array& docs)
 | 
			
		||||
			nrows = doc.physical_rows();
 | 
			
		||||
			
 | 
			
		||||
			if (nrows > 0)
 | 
			
		||||
	      err = doc.rewrite();
 | 
			
		||||
	      err = doc.rewrite(docfile);
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
        /*
 | 
			
		||||
				TDocumento d;
 | 
			
		||||
				
 | 
			
		||||
				if (d.read(doc, _isequal, _testandlock) == NOERR)
 | 
			
		||||
					d.remove();
 | 
			
		||||
          */
 | 
			
		||||
        doc.remove(docfile);
 | 
			
		||||
			}
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      // generazione
 | 
			
		||||
      err = doc.write();
 | 
			
		||||
      err = doc.write(docfile);
 | 
			
		||||
    }
 | 
			
		||||
    if (err != NOERR)
 | 
			
		||||
      doc.read(); // unlock
 | 
			
		||||
    {
 | 
			
		||||
      // doc.read(); // unlock   
 | 
			
		||||
      doc.read(docfile, _isequal, _unlock);  // 13/05/2013
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  docs.destroy();
 | 
			
		||||
 | 
			
		||||
  prefix().close_closeable_isamfiles();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TMatResPlanning::ask_save()
 | 
			
		||||
{
 | 
			
		||||
  TMatResMask& m = *_mask;
 | 
			
		||||
  TSheet_field& sf = m.sfield(F_ORDINI);
 | 
			
		||||
  
 | 
			
		||||
  TSheet_field& sf = _mask->sfield(F_ORDINI);
 | 
			
		||||
  int tot = 0;
 | 
			
		||||
  FOR_EACH_SHEET_ROW(sf, r, row)
 | 
			
		||||
  {
 | 
			
		||||
    TToken_string& riga = *row;
 | 
			
		||||
    if (*riga.get(0) == 'X')
 | 
			
		||||
      tot++;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  bool yes = TRUE;
 | 
			
		||||
  if (tot > 0)
 | 
			
		||||
    yes = yesno_box(FR("Si desidera elaborare %d righe?"), tot);
 | 
			
		||||
  return yes;  
 | 
			
		||||
    tot += row->get_char(0) == 'X' ? 1 : 0;
 | 
			
		||||
  return tot > 0 && yesno_box(FR("Si desiderano elaborare %d righe?"), tot);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const TRectype* TMatResPlanning::irefs2rdoc(const TMRP_internalrefs& irefs) const
 | 
			
		||||
@ -3358,7 +3363,7 @@ bool TMatResPlanning::emit_orders()
 | 
			
		||||
  int ignore_duedate_lt_docdate = 0;
 | 
			
		||||
  
 | 
			
		||||
  if (!ask_save())
 | 
			
		||||
    return FALSE;
 | 
			
		||||
    return false;
 | 
			
		||||
  
 | 
			
		||||
  TProgind pi(sf.items(), TR("Generazione ordini"), FALSE, TRUE);
 | 
			
		||||
  
 | 
			
		||||
@ -3559,12 +3564,12 @@ bool TMatResPlanning::emit_orders()
 | 
			
		||||
  }
 | 
			
		||||
  save_orders(docs);
 | 
			
		||||
  
 | 
			
		||||
  if (sf.items())
 | 
			
		||||
  if (!sf.empty())
 | 
			
		||||
  {
 | 
			
		||||
    FOR_EACH_SHEET_ROW_BACK(sf, r, row)
 | 
			
		||||
    {
 | 
			
		||||
      if ((*row->get(sf.cid2index(F_SELECTED)) == 'X' && *row->get(sf.cid2index(F_OK))=='X')
 | 
			
		||||
        || real(row->get(sf.cid2index(F_QUANTITA))).is_zero())
 | 
			
		||||
      if ((*row->get(sf.cid2index(F_SELECTED)) == 'X' && *row->get(sf.cid2index(F_OK))=='X') ||
 | 
			
		||||
           real(row->get(sf.cid2index(F_QUANTITA))).is_zero())
 | 
			
		||||
      {
 | 
			
		||||
        if (m.get_bool(F_ALL_ORDERSCHANGES))
 | 
			
		||||
          row->add("", sf.cid2index(F_QUANTITA));
 | 
			
		||||
@ -3574,9 +3579,9 @@ bool TMatResPlanning::emit_orders()
 | 
			
		||||
    }
 | 
			
		||||
    sf.force_update();
 | 
			
		||||
  }
 | 
			
		||||
  m.enable(DLG_SAVEREC, sf.items() > 0);
 | 
			
		||||
  m.enable(DLG_SAVEREC, !sf.empty());
 | 
			
		||||
 | 
			
		||||
  return TRUE;
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TMatResPlanning::compute()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user