MySQL wrong use of index when a date interval is big
The reason:  If the range is large, it is faster to simply ignore the index and scan through the table.  Note that using an index implies flipping back and forth between the index and the data.

 WHERE C.empresa = 1 
   AND C.emissao BETWEEN ('2019-10-28') AND ('2019-12-12')
   AND C.tipo = 'V' 


The optimal index is

INDEX(empresa, tipo,  -- in either order
      emissao)        -- then the 'range' column


It would help if you decided on either NULL or '' in the following.  That way, that column could be included in the above index to make it even better.

   AND (C.situacao IS NULL OR c.situacao = '')