Faits: Faits: A. D._ Ltd (ci-après: D._) est une société basée à Hong-Kong active dans la vente de produits de marque de différentes natures, dont des montres et des bijoux. B._ SA (ci-après: B._), dont le siège est actuellement à A._, a pour but la création, la recherche, la fabrication, le développement et le commerce de montres et d'articles de bijouterie et de luxe. Le 20 juin 1997, les deux sociétés ont signé un contrat d'une durée de trois ans, à partir de novembre 1997, par lequel D._ s'engageait à acquérir des produits auprès de B._ et à les distribuer dans six points de vente en Extrême-Orient. Le contrat était renouvelable par écrit. En cas de ventes insuffisantes des montres B._ durant cette période, D._ serait autorisée à retourner le stock à la société neuchâteloise, qui aurait l'obligation de le racheter au prix ex-usine. Le 12 octobre 2000, D._ a informé B._ de son intention de ne pas reconduire le contrat. Elle invitait sa correspondante à racheter son stock, conformément à leur accord. La société neuchâteloise a d'abord répondu en priant sa cocontractante de lui fournir la liste des pièces qu'elle entendait lui retourner; trois jours plus tard, elle l'a informée qu'elle avait pris note de sa décision, qu'elle lui a demandé de différer en expliquant qu'elle était en discussion avec un nouveau partenaire financier. S'en est suivi un important échange de courriers dans le but de trouver un arrangement. Ces efforts ont été infructueux. Le 1er février 2001, D._ a mis en demeure B._ de lui verser 11'774'865 HK$ 41 contre la reprise de 413 pièces selon une liste qu'elle lui avait remise. La démarche est restée sans effet. Le 31 octobre 2001, D._ a fait notifier à B._ un commandement de payer 2'725'881 fr. 35, plus intérêts à 5 % dès le 8 février 2001. La poursuivie a fait opposition. Le 31 octobre 2001, D._ a fait notifier à B._ un commandement de payer 2'725'881 fr. 35, plus intérêts à 5 % dès le 8 février 2001. La poursuivie a fait opposition. B. Par demande du 17 mai 2001, D._ a assigné B._ en paiement devant le Tribunal cantonal neuchâtelois. Ses dernières conclusions, réduites en cours de procédure notamment en raison de la vente de quelques montres du stock, tendaient au paiement de 2'036'349 fr., de 544'893 HK$ 70, de 86'967 fr., de 61'730 fr. et de 75'509 fr. 60 (conclusions 1-5), avec intérêts. La demanderesse voulait également qu'il soit donné acte à la partie adverse qu'elle tenait à sa disposition, principalement à son siège de Hong-Kong, subsidiairement au siège de la défenderesse, d'une part les 392 pièces selon stock au 10 juillet 2002 contre paiement du montant de 2'036'349 fr., d'autre part les 31 pièces formant le stock de Taïwan au 10 juillet 2002 contre paiement de 61'730 fr., tous frais d'emballage, de transport, d'assurances et autres frais à la charge de la défenderesse (conclusions 6 et 7). Enfin, elle sollicitait la mainlevée définitive de l'opposition formée par la défenderesse à due concurrence (conclusion 8). La défenderesse s'est opposée à l'action. Elle a pris des conclusions très détaillées qui avaient, dans leur dernière version, la teneur suivante: "I. Principalement: 1. Rejeter les conclusions nos 1 et 4 du complément à la réplique, en l'état, vu l'exception d'inexécution pour défaut de consignation des stocks. Subsidiairement: 2. Rejeter les conclusions nos 1 et 4 du complément à la réplique pour nullité de la clause de reprise des stocks du contrat du 20 juin 1997. Très subsidiairement: 3. Prendre en compte en compensation le préjudice subi par la défenderesse résultant de l'inexécution des obligations contractuelles de la demanderesse, à hauteur de CHFr. 1'294'514.40 ou du montant que Justice connaîtra. 4. Soumettre l'exécution du jugement à la condition que les stocks à retourner soient consignés à Neuchâtel aux fins de vérification et d'acceptation. II. Rejeter la conclusion no 2 du complément à la réplique par compensation avec le préjudice subi par la défenderesse résultant de l'inexécution des obligations contractuelles de la demanderesse, à hauteur de CHFr. 1'294'514 .40 ou du montant que Justice connaîtra. III. Rejeter la conclusion no 3 ramenée à CHFr. 86'967.- avec intérêts au taux de 5 % l'an dès le 8 février 2001, par compensation avec le préjudice subi par la défenderesse résultant de l'inexécution des obligations contractuelles de la demanderesse à hauteur de CHFr. 1'294'514.40 ou du montant que Justice connaîtra. IV. Rejeter la conclusion No 5 ramenée à CHFr. 75'509.60 avec intérêts au taux de 5 % l'an dès le 14 février 2001, par compensation avec le préjudice subi par la défenderesse résultant de l'inexécution des obligations contractuelles de la demanderesse à hauteur de CHFr. 1 294'514.40 ou du montant que Justice connaîtra. V. Déclarer irrecevables les conclusions Nos 6 et 7. VI. Rejeter les conclusions Nos 8 et 9. (...)". Par jugement du 29 janvier 2004, la IIe Cour civile du Tribunal cantonal neuchâtelois a condamné la défenderesse à payer à la demanderesse les sommes de 2'036'349 fr. et de 61'730 fr., intérêts en sus, contre expédition par la demanderesse, aux frais de cette dernière, respectivement des 392 montres constituant le stock de Hong-Kong et des 31 montres constituant le stock de Taïwan. La cour a en outre condamné la défenderesse à verser à la demanderesse 280'557 fr. 60 avec intérêts correspondant à des frais de publicité et au prix de huit montres déjà retournées en Suisse. Elle a prononcé la mainlevée définitive de l'opposition au commandement de payer dans la poursuite xxx de l'Office des poursuites du Littoral et du Val-de-Travers à concurrence de ce dernier montant, intérêts en sus. Par jugement du 29 janvier 2004, la IIe Cour civile du Tribunal cantonal neuchâtelois a condamné la défenderesse à payer à la demanderesse les sommes de 2'036'349 fr. et de 61'730 fr., intérêts en sus, contre expédition par la demanderesse, aux frais de cette dernière, respectivement des 392 montres constituant le stock de Hong-Kong et des 31 montres constituant le stock de Taïwan. La cour a en outre condamné la défenderesse à verser à la demanderesse 280'557 fr. 60 avec intérêts correspondant à des frais de publicité et au prix de huit montres déjà retournées en Suisse. Elle a prononcé la mainlevée définitive de l'opposition au commandement de payer dans la poursuite xxx de l'Office des poursuites du Littoral et du Val-de-Travers à concurrence de ce dernier montant, intérêts en sus. C. B._ recourt en réforme au Tribunal fédéral. Elle conclut à l'admission de son recours et au renvoi de la cause à la cour cantonale pour nouvelle décision. D._ invite le Tribunal fédéral principalement à déclarer le recours irrecevable, subsidiairement à le rejeter. La cour cantonale se réfère à son jugement.