Bueno ya actualicé mi código y seguí vuestro consejo de dividir el codigo en funciones mas pequeñas para hacerlo mas manejable y todo iba bien hasta que me metí con la función "AddSale" la cual era enorme. Me ha costado dividirla y aparentemente hace lo que quiero pero cuando llega al final y tiene que eliminar el archivo del vendedor y renombrar el auxiliar para así guardar los cambios veo que por alguna razón "remove" no puede borrar el archivo y por tanto no puedo renombrar después. Supongo que en algún punto, en alguna función que llamo dentro y que trabaja con el archivo lo abre y no lo cierra pero no veo el fallo y llevo toda la tarde dándole vueltas y traceando el código con el depurador.
¿Podeis ayudarme?
Os pongo todo el código necesario función. Lo he subido a pastebin porque es muy grande para subirlo directamente aquí:
http://pastebin.com/H7XJRmLf